Avant de coder, et de partir too shuss, un peu de réflexion est de mise !
Heureusement, nous démarrons sur une application avec des tables simples (elles se complexifieront par la suite).
Le modèle de données
Nous avons un contexte qui est attaché à un créateur.
Un créateur peut avoir plusieurs contextes.
Pour cette première version, nous allons nous arrêter là.
Le choix de la base de données
Après la conception, reste à savoir sur quelle base nous allons créer ce modèle.
MySQL, Sql Server, PostgreSQL, … ? Le choix est dure et complexe.
Le serveur où sera publié le site web a déjà une licence Sql Server. Notre choix s’est donc arrêté sur ce SGDB (Système de gestion de base de données).
Pas de dernière version par contre pour nous, nous resterons sur Sql server 2008 R2.
Création de la base de données
Création de la table Person
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Person]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Email] [nvarchar](max) NOT NULL, CONSTRAINT [PK_Person] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[Person] ADD DEFAULT (N'') FOR [Email] GO
Création de la table Context
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Context]( [Id] [int] IDENTITY(1,1) NOT NULL, [AuthorId] [int] NOT NULL, [CreatedDate] [datetime2](7) NOT NULL, [Message] [nvarchar](max) NOT NULL, [From] [nvarchar](255) NOT NULL, [HtmlTitle] [nvarchar](max) NOT NULL, CONSTRAINT [PK_Context] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[Context] WITH CHECK ADD CONSTRAINT [FK_Context_Person_AuthorId] FOREIGN KEY([AuthorId]) REFERENCES [dbo].[Person] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Context] CHECK CONSTRAINT [FK_Context_Person_AuthorId] GO ALTER TABLE [dbo].[Context] ADD DEFAULT (N'') FOR [From] GO ALTER TABLE [dbo].[Context] ADD DEFAULT (N'') FOR [HtmlTitle] GO
Une approche CodeFirst
En fait les deux scripts SQL ont été générées après coup.
Nous verrons dans une prochaine étape que nous allons créer les tables depuis le code Entities, avec une approche CodeFirst 🙂