Vous êtes sur la page 1sur 19

Design et création d’une

base de données
Version 1.0

Grégory CASANOVA
2 Design et création d’une base de données [03/07/09]

Sommaire

1 Introduction ..................................................................................................................................... 3
2 Pré-requis ........................................................................................................................................ 4
3 Design et création de bases de données ......................................................................................... 5
3.1 Les types de systèmes de bases de données .......................................................................... 6
3.1.1 OLTP................................................................................................................................. 6
3.1.2 OLAP (Online Analytic Processing) .................................................................................. 7
4 La normalisation .............................................................................................................................. 8
4.1 La première forme de normalisation ...................................................................................... 8
4.2 La seconde forme de normalisation ........................................................................................ 8
4.3 La troisième forme de normalisation ...................................................................................... 9
4.4 La dénormalisation .................................................................................................................. 9
5 Les liens dans une base de données ............................................................................................. 10
5.1 Les clés................................................................................................................................... 10
5.2 Les différents types de liens .................................................................................................. 11
6 Les bases de données .................................................................................................................... 12
6.1 Créer une base de données avec SQL Server ........................................................................ 12
6.1.1 Avec SQL server Management Studio ........................................................................... 12
6.1.2 Avec du code T-SQL ....................................................................................................... 13
7 Conclusion ..................................................................................................................................... 19

Dotnet France Association – CASANOVA Grégory


3 Design et création d’une base de données [03/07/09]

1 Introduction
Les bases de données en général servent dans tous les domaines de la vie courante, comme
dans les domaines techniques. Bien gérer une base de données, c’est garantir l’intégrité des
données, à savoir le fait que celle-ci ne seront pas corrompues au moment de leur utilisation.
Dans ce chapitre, nous apprendrons à créer une base de données en fonction de nos besoins,
pour garantir un maximum de sécurité concernant l’intégrité de ces données à l’intérieur de la
base. Nous verrons aussi quels sont les différent types généraux de base de données qui
existent, afin de faire le bon choix, suivant l(utilisation que nous voulons en faire.

Dotnet France Association – CASANOVA Grégory


4 Design et création d’une base de données [03/07/09]

2 Pré-requis
Ce chapitre constitue la base des bases en matière de développement de base de données, la
seule capacité que vous devez avoir en lisant ce chapitre est la suivante :

- Connaitre les notions traitées dans le chapitre 1 et connaitre les principes d’une base de
données relationnelle.

Dotnet France Association – CASANOVA Grégory


5 Design et création d’une base de données [03/07/09]

3 Design et création de bases de données


Une base de données est bien entendue le contenant de différents objets. Dans SQL Server,
les bases de données sont aussi chargées de permettre d’ajouter et de retrouver ces objets de la
meilleure des façons. Une base de données peut contenir les éléments suivants : des tables de
définitions, des colonnes stockées dans les tables, des programmes codés en T-SQL qui
permettent de manipuler les données, des index qui permettent de retrouver des données plus
rapidement, ou encore des fonctions, qui sont des tâches répétitives qui s’appliquent aux lignes
de données. Tous ces termes sont des mots de vocabulaire d’une base de données, et sont
incontournables pour la suite de ce cours :

Tables Une table est l’endroit où les données sont stockées. Une base de données
doit contenir au minimum une table. Les informations dans les tables sont
stockées dans les lignes et colonnes.
Colonnes Les colonnes sont constituées d’une cellule de chaque ligne. Elles donnent
une définition à chaque ensemble de définition et ne peut contenir qu’un
seul type de données. Chaque table, doit contenir au minimum une
colonne.
Enregistrements Les enregistrements sont constituées d’une cellule de chaque colonne. Les
lignes sont aussi appelées des records. Une table peut contenir autant de
ligne que l’on veut, on est simplement restreint par notre espace disque.
Procédure stockée On peut parfois vouloir qu’un programme manipule des données, de façon
récurrente. Une procédure stockée contient une ou plusieurs déclarations
T-SQL qui sont compilées et prêtes à être utilisées.
Déclaration T-SQL Une déclaration T-SQL est un programme prêt à être utilisé, que SQL
Server peu exécuter pour modifier des données.
Assemblages Les assemblages correspondent aux procédures stockées, ils peuvent
modifier des données, cependant, ils sont plus utilisés pour une logique
procédurale comme on pourra le voir dans un programme .NET.
Index Comme dans un livre, un index permet d’accéder aux données plus
rapidement. Les index correspondent à des listes prédéfinies qui peuvent
informer sur la position physique ou non d’une donnée. Ils peuvent être
utilisés par SQL Server pour trouver une ligne de données. Un index ne
peu pas couvrir plus d’une table.
Vues On peut identifier les Vues en tant que des tables virtuelles. Elles peuvent
contenir des informations combinées de plusieurs tables et peuvent
présenter une interface plus intuitive pour les données.
Fonctions Une fonction est similaire à une procédure stockée. La seule différence est
qu’une fonction traite les données ligne par ligne.

Maintenant que nous nous sommes familiarisés avec le vocabulaire d’une base de données, parlons
de celles qui sont préconstruites dans SQL Server, elles sont au nombre de cinq et nous allons voir le
rôle de chacune :

 Master : c’est la plus importante des bases de données préinstallées dans SQL
Server. Il est absolument déconseillé de modifier cette base de données directement
dans le sens où elle contient des fonctions du système. Si jamais cette base de
données vient à être corrompue, il y a de fortes chances que SQL Server ne s’exécute
plus correctement. Elle contient des informations très importantes comme les Login,
le rôle de chaque utilisateur, tous les paramètres de configuration du système, les
noms et les informations relatives aux bases de données créées, la position des
bases de données, ou encore des tables systèmes qui contiennent elles même des

Dotnet France Association – CASANOVA Grégory


6 Design et création d’une base de données [03/07/09]

fonctions du système. La base de données master est vraiment le gardien de votre


SQL Server.
 Tempdb : la base de données tempdb est une base de données temporaire
(temporary database) dont le temps de vie est aussi long que la session sur SQL
Server est longue. Lorsque la session SQL Server est terminée, la base de données
tempdb est perdue, puis lorsque l’on redémarre SQL Server, une nouvelle base de
données tempdb est générée. On peut l’utiliser pour stocker temporairement des
données.
 Model : à chaque fois que l’on créé une base de données, elle aura besoin d’être
définit selon des critères précis. Chaque critère devra être précisé dans Model, par
exemple, si l’on veut qu’une table soit répété dans toutes les bases de données que
l’on créé, on aura à mettre cette table dans Model. La base de données Model est
utilisée de la même manière que Tempdb. De ce fait, il faudra être prudent puisque
quand on modifiera Model, ça se reflètera dans Tempdb.
 Msdb : elle procure des informations qui permettent au SQL Server Agent de
fonctionner. Comme pour Tempdb et Model, il ne vous sera pas nécessaire de
modifier directement Msdb. Beaucoup de processus liés à SQL Server utilisent le
contenu de Msdb, par exemple, lorsque vous faites un backup, SQL Server Agent se
sert de Msdb, il est donc compréhensible que la modifier directement peut causer
un mauvais fonctionnement de SQL Server.
 AdventureWorks/AdventureWorksDW : ces bases de données sont des exemples de
bases de données construites par Microsoft.

Ces tables pré construites dans SQL Server, vous l'avez compris, servent pour la plupart, à
contrôler SQL Server et ses paramètres. Avant de pouvoir créer notre première base de données, il
est nécessaire d'avoir quelques acquis supplémentaires concernant les différents types de systèmes.
Il en existe deux. Les systèmes OLTP et les systèmes OLAP qui possèdent des propriétés différentes et
qui sont les suivantes.

3.1 Les types de systèmes de bases de données

3.1.1 OLTP
La plupart du temps, l'interface utilisateur qui utilisera ce système OLTP sera codée dans un
langage .NET, et aura besoin d'accéder instantanément à la base de données pour pouvoir en
modifier ses informations. Un système OLTP aura donc besoin de pouvoir procéder à des mises à jour
de données de manière fréquente et instantanée. C'est le but principal du système OLTP, et le fait
principal pour lequel on choisira ce type de système. Ces systèmes OLTP ont donc besoin d'être
accessibles rapidement, et d'être capable de garder l'intégrité des données. Il est donc nécessaire
que la structure de la base de données soit bonne, mais aussi que vous sachiez où sont stockées les
données physiquement. La normalisation vous permettra de constituer un système OLTP rapide et
fiable, puisque vous diminuerez grandement le risque d'erreur en, par exemple, supprimant les
redondances de données dans les tables de vos bases de données dans votre système OLTP (Nous
développerons le concept de normalisation seulement après avoir présenté les propriétés d'un
système OLAP). Plus votre base de données sera compacte et plus votre système sera performant.

Dotnet France Association – CASANOVA Grégory


7 Design et création d’une base de données [03/07/09]

3.1.2 OLAP (Online Analytic Processing)


La différence majeure entre les systèmes OLAP et OLTP est la fréquence de mises à jours des
données. Alors que les systèmes OLTP ont des mises à jour à n'importe quel moment de la journée,
suivant son utilisation, les systèmes OLAP ont des mises à jour programmées, qui peuvent se faire
suivant l'utilisation, toutes les heures, tous les jours, tous les mois et ainsi de suite. La plupart du
temps, les systèmes OLAP ne suivent aucune normalisation particulière, et n'ont pas une quantité
d'index aussi importante qu'un système OLTP. Il y aura très peu de mises à jour voir pas du tout dans
un système OLAP, donc, une normalisation, quelle qu’elle soit serait inutile. La plupart du temps, on
trouvera une ou deux grandes tables dans les bases de données de systèmes OLAP, qui contiendront
toutes les données, plutôt qu'une multitude de tables avec beaucoup de relations entre elles, ce qui
explique les mises à jour peu fréquentes et la présence de peu d'index.

Dotnet France Association – CASANOVA Grégory


8 Design et création d’une base de données [03/07/09]

4 La normalisation
Dans les deux paragraphes précédents, nous avons utilisé le mot "normalisation". La
définition générale de normalisation est simple, c'est le fait de rendre les tables plus compactes dans
une base de données, en supprimant les répétitions de données. La normalisation a pour but de
rendre l'exécution de vos requêtes et l'accès à vos données plus rapide. Plus notre base de données
sera normalisée, plus le nombre de relations entre les tables sera important (nous verrons plus tard
comment créer des relations entre les tables). Il est donc nécessaire de garder un équilibre entre le
nombre de relations entre les tables et les degrés de normalisation de votre base. Il existe trois
formes principales de normalisation utilisées. D'autres existent, mais elles ne sont pas utilisées à titre
professionnel mais plutôt expérimental. Nous allons les définir maintenant.

4.1 La première forme de normalisation


1NF (First Normal Form) : pour appliquer la 1NF dans votre base de données, il sera
nécessaire de supprimer toutes les répétitions de groupes d'informations dans une table, et de les
déplacer dans une autre table. Par exemple, si vous avez une table Client dans laquelle sont définit
des colonnes relatives au clients, comme numclient, nomcli, prenomcli, numtel.

numclient nomcli prenomcli numtel


000001 Dupont Jean 0563892367
0678987678
000002 Legrand Maurice 0578767654
Dans ce cas là, cette table ne respecte pas la première forme de normalisation parce qu’une
une cellule peut contenir deux types distincts d’informations. Une table qui respecterai la première
forme de normalisation serai plutôt de cette dorme :

numclient nomcli prenomcli numport numfix


000001 Dupont Jean 0678987678 0563892367

000002 Legrand Maurice 0578767654

4.2 La seconde forme de normalisation


2NF (Second Normal Form) : pour appliquer la 2NF, il faut tout d’abord que votre base de
données soit normalisée à la première forme. Ensuite, il faut se poser la question de savoir si toutes
les colonnes non clés dépendent fonctionnellement de la clé primaire. Considérons la table Client
suivante.

Client Num_cli Nom Prenom Fixe Mobile Num_com Date_com


000001 Dupont Jean 0563892367 0678987678 76767 02/03/08
000002 Legrand Maurice 0578767654 76768 03/03/08

Cette table n’est pas normalisée à la seconde forme normale. Si on prend en compte que la clé
primaire est composée des deux colonnes, « Num_cli » et « Num_com », les colonnes « Nom »,
« Prenom », « Fixe » et « mobile » dépendent de « Num_cli » alors que « Date_com » dépend du
numéro de commande. Il est donc nécessaire de diviser cette table « Client » en deux tables
« Client » et « Commandes ». Voici, finalement, les deux tables normalisées à la seconde forme
normale.

Client Num_cli Nom Prenom Fixe Mobile


000001 Dupont Jean 0563892367 0678987678
Dotnet France Association – CASANOVA Grégory
9 Design et création d’une base de données [03/07/09]

000002 Legrand Maurice 0578767654

Commandes Num_com Date_com Num_cli


76767 02/03/08 000001
76768 03/03/08 000002

4.3 La troisième forme de normalisation


3NF (Third Normal Form) : pour effectuer la 3NF, il est nécessaire que vos tables soit à la
seconde forme normale et que les colonnes non clés n’aient pas de dépendances entre elles.
Prenons pour exemple une table « Client » qui prend en compte, en plus des autres informations
clients, le sexe et la civilité du client. On aura alors la table suivante.

Client Num_cli Nom Prenom Fixe Mobile Sexe Civil


000001 Dupont Jean 0563892367 0678987678 H Mr
000002 Legrand Maurice 0578767654 H Mr
Dans ce cas, la civilité du client permet d’en déduire son sexe, mais pas l’inverse. On
construira alors les deux tables suivantes pour effectuer la troisième forme normale.

Client Num_cli Nom Prenom Fixe Mobile Civil


000001 Dupont Jean 0563892367 0678987678 Mr
000002 Legrand Maurice 0578767654 Mr

Civilite Val_civil Sexe


Mr H
Mr H

4.4 La dénormalisation
Il existe aussi un processus de normalisation. La dé normalisation est le complet opposé de la
normalisation. Vous aurez donc à inclure des redondances de données, et tous les paramètres qui
font qu’une base de données n’est pas normalisée. La dé normalisation réduira le nombre de tables
et par conséquent, le nombre de relations entre les tables. Vous aurez par exemple besoin de dé
normalisé lorsque vous travaillerez sur un système OLAP.

Dotnet France Association – CASANOVA Grégory


10 Design et création d’une base de données [03/07/09]

5 Les liens dans une base de données


On l'a dit plus haut, la normalisation de base de données aide à rendre vos bases de données
plus rapides d’accès et plus sûres en termes d'intégrité de vos données. Nous avons abordé dans la
notion de normalisation, les relations entre les tables, en citant les clés primaires. Nous allons donc
développer les liens possibles entre plusieurs tables dans une base de données.

Concrètement, à quoi servent les liens ? Imaginons que nous avons besoin de modifier une
donnée dans une table de notre base de données, et que cette donnée existe en plusieurs
exemplaires dans différentes tables. Si ces tables ne sont pas liées, une donnée sera mise à jour, et
les autres deviendront invalides, d’où l’utilité des liens.

5.1 Les clés


Pour créer des relations entre les tables nous utilisons des clés, les utiliser est une manière
d’identifier un lien dans une base de données. Nous allons détailler les trois sortes de clés qui
existent et qui nous permettent de créer ces liens entre les tables.

Clés primaires : C’est le type de clé le plus important. Tout d’abord, il est primordial que la
table où est définie la clé primaire ne retourne que des valeurs uniques, et non définit comme NULL.
Dans cette logique, il n’est pas possible qu’une clé primaire soit définit dans une table, pour des
colonnes qui ne retourne pas une seule ligne. De plus, une table ne contient qu’une seule clé
primaire. Une clé primaire est utilisée pour créer un lien entre les données de la table où est définie
cette clé, et les autres tables de votre base de données.

Clés étrangères : Imaginons une base de données qui contient deux tables. Ces deux tables
possèdent une même donnée. Une clé étrangère, dans ce cas, servira à lier ces données similaires
pour que, lorsqu’on en modifie une, l’autre se mette à jour. De façon plus générale, une clé
étrangère créé un lien entre deux colonnes de deux tables différentes. Ce lien est créé selon une
contrainte, qui est une méthode utilisée par SQL Server pour vérifier les caractères du lien. Cette
contrainte va vérifier si le lien utilise les paramètres qu’on lui a donnés.

Une clé étrangère est une clé dans une table fille ou une colonne, ou un groupe de colonnes,
est directement relié à la table maîtresse avec exactement le même nombre de données. Il n’est pas
nécessaire qu’une clé étrangère soit liée à la clé primaire de la table maîtresse. Une clé étrangère
existera seulement si un lien a été créé entre une table fille et une table mère. Il est possible qu’une
table mère et une table fille soient les mêmes tables, et de posséder des clés étrangères et une clé
primaire définies en elles. Ce phénomène est appelé une relation réflexive.

Clés candidates : On l’a vue plus haut, il ne peut y avoir qu’une seule clé primaire par table.
Les clés candidates sont simplement des clés qui sont sujettes à devenir des clés primaires. Il n’y a
pas de différence entre une clé primaire et candidate, nous utiliserons donc une ou plusieurs clé(s)
candidate(s) dans le cas ou nous avons déjà utilisé notre clé primaire dans une table et que nous
aurions besoin d’une seconde clé primaire, ou plus.

Comme nous l’avons dit précédemment, une clé primaire ne peut pas supporter de valeur
NULL. Mais si nous avons besoin d’une valeur NULL, comment faire ? On peut utiliser une contrainte
unique. Les propriétés de celle-ci ressemblent fortement à celles d’une clé primaire mais il y a tout
de même des différences. Une contrainte unique n’est pas une clé primaire, une contrainte unique
peut contenir des valeurs NULL, à la différence de la clé primaire. Tout comme la clé primaire,
chaque colonne doit retourner seulement une valeur, mais la différence se fait dans le nombre,

Dotnet France Association – CASANOVA Grégory


11 Design et création d’une base de données [03/07/09]

puisque l’on peut avoir plusieurs contraintes uniques, alors qu’on devait se contenter d’une seule clé
primaire.

5.2 Les différents types de liens


Dans SQL Server, créer un lien signifie que nous allons lier une clé primaire d’une table dite
« maître » à une clé étrangère d’une autre table. Nous avons donc besoin de deux clés. Nous l’avons
dit lorsque nous avons parlé de la normalisation, créer des liens entre les tables renforce la
possibilité d’intégrité des données, autrement dit, leur chance de ne pas être corrompues. Il existe 3
types de liens dans une base de données. Le un à un, qui est très peu utilisé, le un à plusieurs, qui est
la plus commune des relations. Elle se produit lorsque un lien d’une table maître est lié avec zéro, un
ou deux liens d’une table fille, et le plusieurs à plusieurs, qui peut se produire relativement
fréquemment, cela dépend seulement de votre base de données.

Précédemment, nous avons présenté le vocabulaire usuel des bases de données, ce qu’est une
base de données, les deux types de systèmes à mettre en place pour gérer une base de données, le
concept de normalisation d’une base de données et les liens qui doivent exister entre les tables
d’une base de données pour assurer entre autre leur intégrité. Mais qu’en est-il des tables ? Dans la
partie suivante, nous allons en majorité expliquer comment créer une table dans une base de
données sur SQL Server 2008, puis nous nous attarderons sur la configuration de table.

Dotnet France Association – CASANOVA Grégory


12 Design et création d’une base de données [03/07/09]

6 Les bases de données

6.1 Créer une base de données avec SQL Server


Les bases de données sont les ensembles ou nous allons stocker des objets tels que les tables,
les vues, les index... Il existe deux façons de créer des bases de données sous SQL Server 2008. En
utilisant l’interphase proposée par SQL Server (SSMS), ou bien en utilisant le code T-SQL. Chacune de
ces deux méthodes possède ses avantages et ses inconvenants, il vous appartient d’adopter celle
que vous trouvez la plus productive ou bien la plus pratique. Dans tous les exemples que nous
développerons dans la suite des cours, nous le ferons selon les deux méthodes.

6.1.1 Avec SQL server Management Studio


Dans un premier temps, démarrez SSMS. Assurez-vous que vous vous êtes connectés à votre
serveur. Dans l’explorateur d’objet, faites un clique droit sur le nœud « base de données » et créez
une nouvelle base de donnée. Pour notre exemple, nous l’appellerons « Test ».

Détaillons les différentes caractéristiques que nous pouvons donner à notre base de données au
moment de sa création. Tout d’abord un nom et un propriétaire. Il est conseillé de laisser par défaut
le nom du propriétaire, ce qui rendra le créateur de la base de données, propriétaire. Le nom de la
base de données doit comporter certaines restrictions. On peut utiliser toutes les lettres, majuscules
ou minuscules, tous les chiffres et l’underscore. On doit alors bannir tous les autres caractères
spéciaux, les espaces… On en vient ensuite à l’espace nommé « fichiers de la base de données : ».
C’est dans cet espace que vous pourrez gérer toutes les caractéristiques de votre base de données :
ses types de fichiers, ses groupes de fichiers, la taille initiale de la base de données, sa croissance

Dotnet France Association – CASANOVA Grégory


13 Design et création d’une base de données [03/07/09]

automatique… A gauche de la fenêtre de création de base de données, il y a trois onglets,


« Général », « Options » et « Groupes de fichiers ». Nous venons de détailler l’onglet « Général ».
L’onglet « Options » vous permettra de modifier toutes les caractéristiques avancées de votre base
de données. Et pour finir, l’onglet « Groupe de fichiers » vous permettra de gérer les différents
groupes de fichiers que vous aurez créés. Lorsque vous avez déterminé toutes les caractéristiques de
votre base de données à créer, il ne vous reste plus qu’à cliquer sur « Ok ». Vous remarquerez alors
dans explorateur d’objet, si vous déroulez le nœud base de données, que votre base de données
« Test » y est présente.

6.1.2 Avec du code T-SQL


Pour créer une base de données avec du code T-SQL, vous aurez à ouvrir une nouvelle
fenêtre de requêtes. Pour y accéder, appliquez un click droit sur votre nouvelle base de données,
sélectionnez « script de base de données », « Créer avec » puis « Nouvelle fenêtre de requête ». Pour
créer une nouvelle table dans une base de données, vous aurez à entrer comme base le code T-SQL
ci-dessous.

/* Code TSQL */

USE [master]
GO

/****** Object: Database [Test] Script Date: 02/04/2009 11:59:20


******/
CREATE DATABASE [Test] ON PRIMARY
( NAME = N'Test',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test.mdf' ,
SIZE = 3072KB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )

LOG ON

( NAME = N'Test_log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test_log.ldf' ,
SIZE = 1024KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
GO

Découpons le code en plusieurs parties pour en analyser les différentes actions.

USE [master]
GO

Pour fonctionner, SQL a besoin de pointer sur lui même une base de données connue. Ici, il pointera
sur « master ». La base de données « master » doit exister pour que SQL Server fonctionne. Le mot
clé « USE » ordonne à SQL Server de modifier la connexion par défaut. Le mot clé « GO » indique à
SQL Server qu’il doit appliquer la fonction du mot clé précédent avant de passer au suivant.

Dotnet France Association – CASANOVA Grégory


14 Design et création d’une base de données [03/07/09]

CREATE DATABASE [Test] ON PRIMARY


( NAME = N'Test',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test.mdf' ,
SIZE = 3072KB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )

LOG ON

( NAME = N'Test_log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test_log.ldf' ,
SIZE = 1024KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
GO

Vient ensuite le mot clé « CREATE DATABASE ». Il va permettre de créer une nouvelle de données
dont le nom sera comprit entre les deux crochets. Ici son nom sera « Test ». Les informations
contenues entre cette instruction et le mot clé « GO », seront les éléments contenus dans la base de
données « Test ». Attardons nous sur les différentes propriétés que possède une base de données.

( NAME = N'Test',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test.mdf' ,
SIZE = 3072KB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1024KB )

LOG ON
base

NAME : Le nom logique qui sera utilisé par SQL Server comme référence.

FILENAME : Désigne le chemin complet de l’emplacement où les données seront stockées. Le nom du
fichier doit contenir la terminaison .MDF.

SIZE : Désigne la taille initiale de la base de données. Si on ne le met pas, ce paramètre devrait
prendre la valeur qu’on lui a donnée dans la base de données « model ». Si rien n’est indiqué dans
Model, la valeur par défaut est de 1 mégaoctet. On peut lui appliquer plus d’unités que KB, à savoir
MB, GB, TB…

FILEGROWTH : Désigne le pas d’incrément du fichier qui ne pourra jamais dépasser la valeur max. Il
peut être précisé en pourcentage ou bien en taille fixe, c'est-à-dire avec des unités telles que le Ko ou
encore le Mo.

LOG ON : Indique l’emplacement du journal de transaction. Ce journal récapitule toutes les


modifications apportées aux bases de données.

Dotnet France Association – CASANOVA Grégory


15 Design et création d’une base de données [03/07/09]

( NAME = N'Test_log',
FILENAME = N'C:\Program Files\Microsoft SQL Server\
MSSQL10.MSSQLSERVER\MSSQL\DATA\Test_log.ldf' ,
SIZE = 1024KB ,
MAXSIZE = 2048GB ,
FILEGROWTH = 10%)
GO

NAME : Définit le nom du fichier Log de référence pour SQL Server.

FILENAME : Définit l’emplacement exact de l’endroit où sera définit le fichier Log. On doit ajouter
l’extension .LDF au nom du fichier.

SIZE : Définit la taille initiale du fichier Log précédemment énoncé.

FILEGROWTH : Désigne la capacité de croissance du fichier Log dans la base de données.

On peut aussi modifier d’autres paramètres de la base de données comme sa compatibilité vis a vis
des différentes versions de SQL Server. La commande qui vise à modifier ce paramètre est la
suivante.

ALTER DATABASE [Test] SET COMPATIBILITY_LEVEL = 100


GO

Pour modifier la base de données que l’on veut, on peut utiliser le mot clé « ALTER DATABASE », en
indiquant entre crochets le nom de la base de données à modifier, et suivit de l’action à effectuer. Ici,
on utilise « SET COMPATIBILITY_LEVEL » pour changer le niveau de compatibilité de notre base de
données en fonction des différentes versions de SQL Server. Il existe une multitude d’actions
différentes qui nous permettent de modifier les propriétés de notre base de données. Elles auront
toujours la même structure.

ALTER DATABASE [Nom_BDD] SET Nom_option


GO

Seul le second mot clé sera différent ainsi que la valeur que prendra le paramètre. Comme nous
l’avons vue pour le niveau de compatibilité, on écrira en premier « ALTER DATABASE » qui est le mot
clé de modification de la base de données, puis entre crochet le nom de la base de données, puis le
mot clé « SET » qui est le mot clé de modification du paramètre qui suit. Voici une liste des mots clés
et de leurs valeurs qui peuvent modifier un paramètre de la base de données. On peut les classer en
différentes catégories.

- Etat de la base de données.

ONLINE Rend la base de données visible.


OFFLINE Rend la base de données inaccessible. C’est la manière la
plus « propre » de désactiver votre base de données.
EMERGENCY La base de données est mise en mode lecture seule, la
journalisation est désactivée et seuls les administrateurs
peuvent accéder à la base.

- Accès à la base de données.

Dotnet France Association – CASANOVA Grégory


16 Design et création d’une base de données [03/07/09]

SINGLE_USER L’accès est limité à un seul utilisateur.


RESTRICTED_USER Seuls les membres des rôles db_owner, dbcreator ou
sysadmin peuvent se connecter à la base.
MULTI_USER C’est le mode par défaut. Il permet à tous les utilisateurs
qui disposent de privilèges suffisants, d’accéder aux
informations.

- Opérations possibles sur la base de données.

READ_ONLY Seules les opérations de lecture sont possibles.


READ_WRITE La base est accessible pour les opérations de lecture et
écriture.

- Accès à la base de données.

DBO use only La base n’est accessible que par son propriétaire.

- Paramétrage de la base de données.

ANSI_NULL_DEFAULT Définit la valeur par défaut de la contrainte de nullité de


colonne.
RECURSIVE_TRIGGERS Autorise la récursivité des triggers.
TORN_PAGE_DETECTION Permet de détecter les pages incomplètes.
AUTO_CLOSE La base de données est arrêtée et les ressources sont
libérées dès l’instant où le dernier utilisateur s’est
déconnecté.
AUTO_SHRINK Les fichiers de la base de données pourront être
automatiquement réduits.
AUTO_CREATE_STATISTICS Les statistiques manquantes lors de l’exécution d’une
requête sont créées automatiquement. Sa valeur par
défaut est ON.
AUTO_CREATE_STATISTICS_ASYNC Les statistiques qui représentent la pertinence des index
sont mises à jour de façon non synchrone et de façon
automatique. Elle est positionnée sur ON par défaut.
QUOTED_IDENTIFIERS Les identificateurs délimités peuvent être encadrés par
des guillemets doubles.
ANSI_NULLS Si la condition est True, alors toutes les comparaisons
avec une valeur NULL sont évaluées à inconnue.
ANSI_WARNINGS Permet de faire remonter des messages d’erreurs lorsque
certaines conditions sont remplies.
ARITHABORT Arrête un traitement lorsque il y a un dépassement de
capacité ou encore une division par 0.
CONCAT_NULL_YIELDS_NULL Le résultat est NULL si l’une des deux opérandes d’une
opération de concaténation est NULL.
CURSOR_CLOSE_ON_COMMIT Permet de fermer tous les curseurs lors de la définition
d’une transaction ou lors de la fin d’une transaction.
CURSOR_DEFAULT Les déclarations de curseurs ont par défaut la valeur
LOCAL.
NUMERIC ROUNDABORT Une erreur est levée si une perte de précision est faite
lors d’un calcul.
RECOVERY Permet de préciser la stratégie de sauvegarde planifiée au
Dotnet France Association – CASANOVA Grégory
17 Design et création d’une base de données [03/07/09]

niveau de la base de données.


PAGE_VERIFY Cette opération permet de valider la qualité des
informations stockées au niveau de chaque page.
CHECKSUM est la valeur par défaut, et de plus celle
recommandée par SQL Server.
SUPPLEMENTAL_LOGGING En mettant cette option sur ON (OFF par défaut), des
informations complémentaires seront ajoutées au
journal.
PARAMETERIZATION En mode SIMPLE, les requêtes sont paramétrées en
fonction des règles imposées sur le serveur. Il est possible
d’utiliser le mode FORCED, qui fait que SQL Server
paramètre toutes les requêtes avant de dresser le plan
d’exécution.
AUTO_UPDATE_STATISTICS Toutes les statistiques obsolètes pour une requête sont
recalculées automatiquement.

- Gestion des transactions de la base de données.

ROLLBACK AFTER nombre Annulation des transactions après une valeur nombre de
seconde d’attente.
ROLLBACK IMMEDIATE Annulation immédiate des transactions.
NO_WAIT Si une transaction n’accède pas directement à une
ressource donnée qui lui est nécessaire, la transaction est
annulée.
ANSI_PADDING Spécifie si les espaces à droite sur les données de type
caractère doivent être ou non supprimés.
COMPATIBILITY Indique le niveau de compatibilité de la base de données.
Pour SQL Server 2000, c’est un niveau de 80, pour 2005,
un niveau de 90 et pour 2008, un niveau de 100.
DATE_CORRELATION_OPTIMISATION SQL Server se charge d’entretenir la corrélation des
statistiques entre deux tables par une contrainte de clé
étrangère et qui possèdent toutes les deux une colonne
de type Datetime.

- Accès externe à la base de données.

DB_CHAINING Permet de gérer les contraintes de sécurité lors de l’accès


à la base à partir d’une autre base.
TRUSTWORTHY Permet aux modules internes (procédures stockées,
fonctions..) d’accéder à des ressources extérieures en
utilisant un contexte Impersonate.

- Service broker de la base de données.

ENABLE_BROKER Active le service broker.


DISABLE_BROKER Désactive le service broker.
NEW_BROKER Permet de préciser que la base de données doit recevoir
un nouvel identifiant service broker.
ERROR_BROKER_CONVERSATIONS Les conversations en cours vont recevoir un message
d’erreur et vont ainsi être clôturées.

Dotnet France Association – CASANOVA Grégory


18 Design et création d’une base de données [03/07/09]

- Snapshot (capture instantanée) de la base de données.

ALLOW_SNAPSHOT_ISOLATION Lorsque ce mode est activé, toutes les transactions sont


capables de travailler avec des Snapshots de la base telles
qu’elles étaient au début de la transaction.
READ_COMMITED_SNAPSHOT Lorsque ce mode est activé, toutes les instructions
perçoivent les données telles qu’elles étaient au début de
l’instruction.

Après avoir effectué toutes les modifications voulues, vous pouvez lancer les commandes que vous
avez entrées en appuyant sur « F5 » ou « Ctrl + E ». SQL Server appliquera alors le code écrit. Après
l’avoir exécuté, si aucun problème n’est survenu, vous devriez avoir le message
suivant : «Commandes exécutés avec succès ».

Il est aussi possible de supprimer une base de données avec du code T-SQL, il suffit juste d’entrer la
requête suivant.

USE [master]
GO

DROP DATABASE NomBDD

Dotnet France Association – CASANOVA Grégory


19 Design et création d’une base de données [03/07/09]

7 Conclusion
Dans ce chapitre nous avons appris les différents types de base existants, et à gérer une base de
données, puis lui donner les caractéristiques que nous voulions. La base de données est
« l’enveloppe » générale de vos données, leur conteneur. Il existe alors des sous ensembles qui nous
permettront de regrouper les données de même destination ensemble, les tables, puis les colonnes.
Ce sera le sujet du prochain chapitre qui traitera de la création et de la gestion des tables dans SQL
Server 2008, ainsi que la mise en place de contraintes d’intégrités sur les colonnes des tables.

Dotnet France Association – CASANOVA Grégory

Vous aimerez peut-être aussi