Vous êtes sur la page 1sur 19

Design et cration dune base de donnes

Version 1.0
Z

Grgory CASANOVA

Design et cration dune base de donnes [03/07/09]

Sommaire

1 2 3

Introduction ..................................................................................................................................... 3 Pr-requis ........................................................................................................................................ 4 Design et cration de bases de donnes ......................................................................................... 5 3.1 Les types de systmes de bases de donnes .......................................................................... 6 OLTP................................................................................................................................. 6 OLAP (Online Analytic Processing) .................................................................................. 7

3.1.1 3.1.2 4

La normalisation .............................................................................................................................. 8 4.1 4.2 4.3 4.4 La premire forme de normalisation ...................................................................................... 8 La seconde forme de normalisation ........................................................................................ 8 La troisime forme de normalisation ...................................................................................... 9 La dnormalisation .................................................................................................................. 9

Les liens dans une base de donnes ............................................................................................. 10 5.1 5.2 Les cls................................................................................................................................... 10 Les diffrents types de liens .................................................................................................. 11

Les bases de donnes .................................................................................................................... 12 6.1 Crer une base de donnes avec SQL Server ........................................................................ 12 Avec SQL server Management Studio ........................................................................... 12 Avec du code T-SQL ....................................................................................................... 13

6.1.1 6.1.2 7

Conclusion ..................................................................................................................................... 19

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09]

1 Introduction
Les bases de donnes en gnral servent dans tous les domaines de la vie courante, comme dans les domaines techniques. Bien grer une base de donnes, cest garantir lintgrit des donnes, savoir le fait que celle-ci ne seront pas corrompues au moment de leur utilisation. Dans ce chapitre, nous apprendrons crer une base de donnes en fonction de nos besoins, pour garantir un maximum de scurit concernant lintgrit de ces donnes lintrieur de la base. Nous verrons aussi quels sont les diffrent types gnraux de base de donnes qui existent, afin de faire le bon choix, suivant l(utilisation que nous voulons en faire.

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09]

2 Pr-requis
Ce chapitre constitue la base des bases en matire de dveloppement de base de donnes, la seule capacit que vous devez avoir en lisant ce chapitre est la suivante : Connaitre les notions traites dans le chapitre 1 et connaitre les principes dune base de donnes relationnelle.

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09]

3 Design et cration de bases de donnes


Une base de donnes est bien entendue le contenant de diffrents objets. Dans SQL Server, les bases de donnes sont aussi charges de permettre dajouter et de retrouver ces objets de la meilleure des faons. Une base de donnes peut contenir les lments suivants : des tables de dfinitions, des colonnes stockes dans les tables, des programmes cods en T-SQL qui permettent de manipuler les donnes, des index qui permettent de retrouver des donnes plus rapidement, ou encore des fonctions, qui sont des tches rptitives qui sappliquent aux lignes de donnes. Tous ces termes sont des mots de vocabulaire dune base de donnes, et sont incontournables pour la suite de ce cours : Tables Une table est lendroit o les donnes sont stockes. Une base de donnes doit contenir au minimum une table. Les informations dans les tables sont stockes dans les lignes et colonnes. Les colonnes sont constitues dune cellule de chaque ligne. Elles donnent une dfinition chaque ensemble de dfinition et ne peut contenir quun seul type de donnes. Chaque table, doit contenir au minimum une colonne. Les enregistrements sont constitues dune cellule de chaque colonne. Les lignes sont aussi appeles des records. Une table peut contenir autant de ligne que lon veut, on est simplement restreint par notre espace disque. On peut parfois vouloir quun programme manipule des donnes, de faon rcurrente. Une procdure stocke contient une ou plusieurs dclarations T-SQL qui sont compiles et prtes tre utilises. Une dclaration T-SQL est un programme prt tre utilis, que SQL Server peu excuter pour modifier des donnes. Les assemblages correspondent aux procdures stockes, ils peuvent modifier des donnes, cependant, ils sont plus utiliss pour une logique procdurale comme on pourra le voir dans un programme .NET. Comme dans un livre, un index permet daccder aux donnes plus rapidement. Les index correspondent des listes prdfinies qui peuvent informer sur la position physique ou non dune donne. Ils peuvent tre utiliss par SQL Server pour trouver une ligne de donnes. Un index ne peu pas couvrir plus dune table. On peut identifier les Vues en tant que des tables virtuelles. Elles peuvent contenir des informations combines de plusieurs tables et peuvent prsenter une interface plus intuitive pour les donnes. Une fonction est similaire une procdure stocke. La seule diffrence est quune fonction traite les donnes ligne par ligne.

Colonnes

Enregistrements

Procdure stocke

Dclaration T-SQL Assemblages

Index

Vues

Fonctions

Maintenant que nous nous sommes familiariss avec le vocabulaire dune base de donnes, parlons de celles qui sont prconstruites dans SQL Server, elles sont au nombre de cinq et nous allons voir le rle de chacune : Master : cest la plus importante des bases de donnes prinstalles dans SQL Server. Il est absolument dconseill de modifier cette base de donnes directement dans le sens o elle contient des fonctions du systme. Si jamais cette base de donnes vient tre corrompue, il y a de fortes chances que SQL Server ne sexcute plus correctement. Elle contient des informations trs importantes comme les Login, le rle de chaque utilisateur, tous les paramtres de configuration du systme, les noms et les informations relatives aux bases de donnes cres, la position des bases de donnes, ou encore des tables systmes qui contiennent elles mme des Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09] fonctions du systme. La base de donnes master est vraiment le gardien de votre SQL Server. Tempdb : la base de donnes tempdb est une base de donnes 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 termine, la base de donnes tempdb est perdue, puis lorsque lon redmarre SQL Server, une nouvelle base de donnes tempdb est gnre. On peut lutiliser pour stocker temporairement des donnes. Model : chaque fois que lon cr une base de donnes, elle aura besoin dtre dfinit selon des critres prcis. Chaque critre devra tre prcis dans Model, par exemple, si lon veut quune table soit rpt dans toutes les bases de donnes que lon cr, on aura mettre cette table dans Model. La base de donnes Model est utilise de la mme manire que Tempdb. De ce fait, il faudra tre prudent puisque quand on modifiera Model, a se refltera 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 ncessaire de modifier directement Msdb. Beaucoup de processus lis SQL Server utilisent le contenu de Msdb, par exemple, lorsque vous faites un backup, SQL Server Agent se sert de Msdb, il est donc comprhensible que la modifier directement peut causer un mauvais fonctionnement de SQL Server. AdventureWorks/AdventureWorksDW : ces bases de donnes sont des exemples de bases de donnes construites par Microsoft.

Ces tables pr construites dans SQL Server, vous l'avez compris, servent pour la plupart, contrler SQL Server et ses paramtres. Avant de pouvoir crer notre premire base de donnes, il est ncessaire d'avoir quelques acquis supplmentaires concernant les diffrents types de systmes. Il en existe deux. Les systmes OLTP et les systmes OLAP qui possdent des proprits diffrentes et qui sont les suivantes.

3.1 Les types de systmes de bases de donnes


3.1.1 OLTP La plupart du temps, l'interface utilisateur qui utilisera ce systme OLTP sera code dans un langage .NET, et aura besoin d'accder instantanment la base de donnes pour pouvoir en modifier ses informations. Un systme OLTP aura donc besoin de pouvoir procder des mises jour de donnes de manire frquente et instantane. C'est le but principal du systme OLTP, et le fait principal pour lequel on choisira ce type de systme. Ces systmes OLTP ont donc besoin d'tre accessibles rapidement, et d'tre capable de garder l'intgrit des donnes. Il est donc ncessaire que la structure de la base de donnes soit bonne, mais aussi que vous sachiez o sont stockes les donnes physiquement. La normalisation vous permettra de constituer un systme OLTP rapide et fiable, puisque vous diminuerez grandement le risque d'erreur en, par exemple, supprimant les redondances de donnes dans les tables de vos bases de donnes dans votre systme OLTP (Nous dvelopperons le concept de normalisation seulement aprs avoir prsent les proprits d'un systme OLAP). Plus votre base de donnes sera compacte et plus votre systme sera performant.

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09] 3.1.2 OLAP (Online Analytic Processing) La diffrence majeure entre les systmes OLAP et OLTP est la frquence de mises jours des donnes. Alors que les systmes OLTP ont des mises jour n'importe quel moment de la journe, suivant son utilisation, les systmes OLAP ont des mises jour programmes, 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 systmes OLAP ne suivent aucune normalisation particulire, et n'ont pas une quantit d'index aussi importante qu'un systme OLTP. Il y aura trs peu de mises jour voir pas du tout dans un systme OLAP, donc, une normalisation, quelle quelle soit serait inutile. La plupart du temps, on trouvera une ou deux grandes tables dans les bases de donnes de systmes OLAP, qui contiendront toutes les donnes, plutt qu'une multitude de tables avec beaucoup de relations entre elles, ce qui explique les mises jour peu frquentes et la prsence de peu d'index.

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09]

La normalisation

Dans les deux paragraphes prcdents, nous avons utilis le mot "normalisation". La dfinition gnrale de normalisation est simple, c'est le fait de rendre les tables plus compactes dans une base de donnes, en supprimant les rptitions de donnes. La normalisation a pour but de rendre l'excution de vos requtes et l'accs vos donnes plus rapide. Plus notre base de donnes sera normalise, plus le nombre de relations entre les tables sera important (nous verrons plus tard comment crer des relations entre les tables). Il est donc ncessaire de garder un quilibre entre le nombre de relations entre les tables et les degrs de normalisation de votre base. Il existe trois formes principales de normalisation utilises. D'autres existent, mais elles ne sont pas utilises titre professionnel mais plutt exprimental. Nous allons les dfinir maintenant.

4.1 La premire forme de normalisation


1NF (First Normal Form) : pour appliquer la 1NF dans votre base de donnes, il sera ncessaire de supprimer toutes les rptitions de groupes d'informations dans une table, et de les dplacer dans une autre table. Par exemple, si vous avez une table Client dans laquelle sont dfinit des colonnes relatives au clients, comme numclient, nomcli, prenomcli, numtel. numclient 000001 numtel 0563892367 0678987678 000002 Legrand Maurice 0578767654 Dans ce cas l, cette table ne respecte pas la premire forme de normalisation parce quune une cellule peut contenir deux types distincts dinformations. Une table qui respecterai la premire forme de normalisation serai plutt de cette dorme : numclient 000001 000002 nomcli Dupont Legrand prenomcli Jean Maurice numport 0678987678 numfix 0563892367 0578767654 nomcli Dupont prenomcli Jean

4.2 La seconde forme de normalisation


2NF (Second Normal Form) : pour appliquer la 2NF, il faut tout dabord que votre base de donnes soit normalise la premire forme. Ensuite, il faut se poser la question de savoir si toutes les colonnes non cls dpendent fonctionnellement de la cl primaire. Considrons la table Client suivante. Client Num_cli 000001 000002 Nom Dupont Legrand Prenom Jean Maurice Fixe Mobile Num_com Date_com 0563892367 0678987678 76767 02/03/08 0578767654 76768 03/03/08

Cette table nest pas normalise la seconde forme normale. Si on prend en compte que la cl primaire est compose des deux colonnes, Num_cli et Num_com , les colonnes Nom , Prenom , Fixe et mobile dpendent de Num_cli alors que Date_com dpend du numro de commande. Il est donc ncessaire de diviser cette table Client en deux tables Client et Commandes . Voici, finalement, les deux tables normalises la seconde forme normale. Client Num_cli 000001 Nom Dupont Prenom Jean Fixe 0563892367 Mobile 0678987678

Dotnet France Association CASANOVA Grgory

Design et cration dune base de donnes [03/07/09] 000002 Legrand Maurice 0578767654

Commandes

Num_com 76767 76768

Date_com 02/03/08 03/03/08

Num_cli 000001 000002

4.3 La troisime forme de normalisation


3NF (Third Normal Form) : pour effectuer la 3NF, il est ncessaire que vos tables soit la seconde forme normale et que les colonnes non cls naient pas de dpendances 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 den dduire son sexe, mais pas linverse. On construira alors les deux tables suivantes pour effectuer la troisime forme normale. Client Num_cli 000001 000002 Nom Dupont Legrand Prenom Jean Maurice Fixe 0563892367 0578767654 Mobile 0678987678 Civil Mr Mr

Civilite

Val_civil Mr Mr

Sexe H H

4.4 La dnormalisation
Il existe aussi un processus de normalisation. La d normalisation est le complet oppos de la normalisation. Vous aurez donc inclure des redondances de donnes, et tous les paramtres qui font quune base de donnes nest pas normalise. La d normalisation rduira le nombre de tables et par consquent, le nombre de relations entre les tables. Vous aurez par exemple besoin de d normalis lorsque vous travaillerez sur un systme OLAP.

Dotnet France Association CASANOVA Grgory

10

Design et cration dune base de donnes [03/07/09]

Les liens dans une base de donnes

On l'a dit plus haut, la normalisation de base de donnes aide rendre vos bases de donnes plus rapides daccs et plus sres en termes d'intgrit de vos donnes. Nous avons abord dans la notion de normalisation, les relations entre les tables, en citant les cls primaires. Nous allons donc dvelopper les liens possibles entre plusieurs tables dans une base de donnes. Concrtement, quoi servent les liens ? Imaginons que nous avons besoin de modifier une donne dans une table de notre base de donnes, et que cette donne existe en plusieurs exemplaires dans diffrentes tables. Si ces tables ne sont pas lies, une donne sera mise jour, et les autres deviendront invalides, do lutilit des liens.

5.1 Les cls


Pour crer des relations entre les tables nous utilisons des cls, les utiliser est une manire didentifier un lien dans une base de donnes. Nous allons dtailler les trois sortes de cls qui existent et qui nous permettent de crer ces liens entre les tables. Cls primaires : Cest le type de cl le plus important. Tout dabord, il est primordial que la table o est dfinie la cl primaire ne retourne que des valeurs uniques, et non dfinit comme NULL. Dans cette logique, il nest pas possible quune cl primaire soit dfinit dans une table, pour des colonnes qui ne retourne pas une seule ligne. De plus, une table ne contient quune seule cl primaire. Une cl primaire est utilise pour crer un lien entre les donnes de la table o est dfinie cette cl, et les autres tables de votre base de donnes. Cls trangres : Imaginons une base de donnes qui contient deux tables. Ces deux tables possdent une mme donne. Une cl trangre, dans ce cas, servira lier ces donnes similaires pour que, lorsquon en modifie une, lautre se mette jour. De faon plus gnrale, une cl trangre cr un lien entre deux colonnes de deux tables diffrentes. Ce lien est cr selon une contrainte, qui est une mthode utilise par SQL Server pour vrifier les caractres du lien. Cette contrainte va vrifier si le lien utilise les paramtres quon lui a donns. Une cl trangre est une cl dans une table fille ou une colonne, ou un groupe de colonnes, est directement reli la table matresse avec exactement le mme nombre de donnes. Il nest pas ncessaire quune cl trangre soit lie la cl primaire de la table matresse. Une cl trangre existera seulement si un lien a t cr entre une table fille et une table mre. Il est possible quune table mre et une table fille soient les mmes tables, et de possder des cls trangres et une cl primaire dfinies en elles. Ce phnomne est appel une relation rflexive. Cls candidates : On la vue plus haut, il ne peut y avoir quune seule cl primaire par table. Les cls candidates sont simplement des cls qui sont sujettes devenir des cls primaires. Il ny a pas de diffrence entre une cl primaire et candidate, nous utiliserons donc une ou plusieurs cl(s) candidate(s) dans le cas ou nous avons dj utilis notre cl primaire dans une table et que nous aurions besoin dune seconde cl primaire, ou plus. Comme nous lavons dit prcdemment, une cl primaire ne peut pas supporter de valeur NULL. Mais si nous avons besoin dune valeur NULL, comment faire ? On peut utiliser une contrainte unique. Les proprits de celle-ci ressemblent fortement celles dune cl primaire mais il y a tout de mme des diffrences. Une contrainte unique nest pas une cl primaire, une contrainte unique peut contenir des valeurs NULL, la diffrence de la cl primaire. Tout comme la cl primaire, chaque colonne doit retourner seulement une valeur, mais la diffrence se fait dans le nombre, Dotnet France Association CASANOVA Grgory

11

Design et cration dune base de donnes [03/07/09] puisque lon peut avoir plusieurs contraintes uniques, alors quon devait se contenter dune seule cl primaire.

5.2 Les diffrents types de liens


Dans SQL Server, crer un lien signifie que nous allons lier une cl primaire dune table dite matre une cl trangre dune autre table. Nous avons donc besoin de deux cls. Nous lavons dit lorsque nous avons parl de la normalisation, crer des liens entre les tables renforce la possibilit dintgrit des donnes, autrement dit, leur chance de ne pas tre corrompues. Il existe 3 types de liens dans une base de donnes. Le un un, qui est trs peu utilis, le un plusieurs, qui est la plus commune des relations. Elle se produit lorsque un lien dune table matre est li avec zro, un ou deux liens dune table fille, et le plusieurs plusieurs, qui peut se produire relativement frquemment, cela dpend seulement de votre base de donnes. Prcdemment, nous avons prsent le vocabulaire usuel des bases de donnes, ce quest une base de donnes, les deux types de systmes mettre en place pour grer une base de donnes, le concept de normalisation dune base de donnes et les liens qui doivent exister entre les tables dune base de donnes pour assurer entre autre leur intgrit. Mais quen est-il des tables ? Dans la partie suivante, nous allons en majorit expliquer comment crer une table dans une base de donnes sur SQL Server 2008, puis nous nous attarderons sur la configuration de table.

Dotnet France Association CASANOVA Grgory

12

Design et cration dune base de donnes [03/07/09]

Les bases de donnes

6.1 Crer une base de donnes avec SQL Server


Les bases de donnes sont les ensembles ou nous allons stocker des objets tels que les tables, les vues, les index... Il existe deux faons de crer des bases de donnes sous SQL Server 2008. En utilisant linterphase propose par SQL Server (SSMS), ou bien en utilisant le code T-SQL. Chacune de ces deux mthodes possde ses avantages et ses inconvenants, il vous appartient dadopter celle que vous trouvez la plus productive ou bien la plus pratique. Dans tous les exemples que nous dvelopperons dans la suite des cours, nous le ferons selon les deux mthodes. 6.1.1 Avec SQL server Management Studio Dans un premier temps, dmarrez SSMS. Assurez-vous que vous vous tes connects votre serveur. Dans lexplorateur dobjet, faites un clique droit sur le nud base de donnes et crez une nouvelle base de donne. Pour notre exemple, nous lappellerons Test .

Dtaillons les diffrentes caractristiques que nous pouvons donner notre base de donnes au moment de sa cration. Tout dabord un nom et un propritaire. Il est conseill de laisser par dfaut le nom du propritaire, ce qui rendra le crateur de la base de donnes, propritaire. Le nom de la base de donnes doit comporter certaines restrictions. On peut utiliser toutes les lettres, majuscules ou minuscules, tous les chiffres et lunderscore. On doit alors bannir tous les autres caractres spciaux, les espaces On en vient ensuite lespace nomm fichiers de la base de donnes : . Cest dans cet espace que vous pourrez grer toutes les caractristiques de votre base de donnes : ses types de fichiers, ses groupes de fichiers, la taille initiale de la base de donnes, sa croissance Dotnet France Association CASANOVA Grgory

13

Design et cration dune base de donnes [03/07/09] automatique A gauche de la fentre de cration de base de donnes, il y a trois onglets, Gnral , Options et Groupes de fichiers . Nous venons de dtailler longlet Gnral . Longlet Options vous permettra de modifier toutes les caractristiques avances de votre base de donnes. Et pour finir, longlet Groupe de fichiers vous permettra de grer les diffrents groupes de fichiers que vous aurez crs. Lorsque vous avez dtermin toutes les caractristiques de votre base de donnes crer, il ne vous reste plus qu cliquer sur Ok . Vous remarquerez alors dans explorateur dobjet, si vous droulez le nud base de donnes, que votre base de donnes Test y est prsente. 6.1.2 Avec du code T-SQL Pour crer une base de donnes avec du code T-SQL, vous aurez ouvrir une nouvelle fentre de requtes. Pour y accder, appliquez un click droit sur votre nouvelle base de donnes, slectionnez script de base de donnes , Crer avec puis Nouvelle fentre de requte . Pour crer une nouvelle table dans une base de donnes, 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

Dcoupons le code en plusieurs parties pour en analyser les diffrentes actions.


USE [master] GO

Pour fonctionner, SQL a besoin de pointer sur lui mme une base de donnes connue. Ici, il pointera sur master . La base de donnes master doit exister pour que SQL Server fonctionne. Le mot cl USE ordonne SQL Server de modifier la connexion par dfaut. Le mot cl GO indique SQL Server quil doit appliquer la fonction du mot cl prcdent avant de passer au suivant.

Dotnet France Association CASANOVA Grgory

14

Design et cration dune base de donnes [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 crer une nouvelle de donnes 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 lments contenus dans la base de donnes Test . Attardons nous sur les diffrentes proprits que possde une base de donnes.
( 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 rfrence. FILENAME : Dsigne le chemin complet de lemplacement o les donnes seront stockes. Le nom du fichier doit contenir la terminaison .MDF. SIZE : Dsigne la taille initiale de la base de donnes. Si on ne le met pas, ce paramtre devrait prendre la valeur quon lui a donne dans la base de donnes model . Si rien nest indiqu dans Model, la valeur par dfaut est de 1 mgaoctet. On peut lui appliquer plus dunits que KB, savoir MB, GB, TB FILEGROWTH : Dsigne le pas dincrment du fichier qui ne pourra jamais dpasser la valeur max. Il peut tre prcis en pourcentage ou bien en taille fixe, c'est--dire avec des units telles que le Ko ou encore le Mo. LOG ON : Indique lemplacement du journal de transaction. Ce journal rcapitule toutes les modifications apportes aux bases de donnes.

Dotnet France Association CASANOVA Grgory

15

Design et cration dune base de donnes [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 : Dfinit le nom du fichier Log de rfrence pour SQL Server. FILENAME : Dfinit lemplacement exact de lendroit o sera dfinit le fichier Log. On doit ajouter lextension .LDF au nom du fichier. SIZE : Dfinit la taille initiale du fichier Log prcdemment nonc. FILEGROWTH : Dsigne la capacit de croissance du fichier Log dans la base de donnes. On peut aussi modifier dautres paramtres de la base de donnes comme sa compatibilit vis a vis des diffrentes versions de SQL Server. La commande qui vise modifier ce paramtre est la suivante.
ALTER DATABASE [Test] SET COMPATIBILITY_LEVEL = 100 GO

Pour modifier la base de donnes que lon veut, on peut utiliser le mot cl ALTER DATABASE , en indiquant entre crochets le nom de la base de donnes modifier, et suivit de laction effectuer. Ici, on utilise SET COMPATIBILITY_LEVEL pour changer le niveau de compatibilit de notre base de donnes en fonction des diffrentes versions de SQL Server. Il existe une multitude dactions diffrentes qui nous permettent de modifier les proprits de notre base de donnes. Elles auront toujours la mme structure.
ALTER DATABASE [Nom_BDD] SET Nom_option GO

Seul le second mot cl sera diffrent ainsi que la valeur que prendra le paramtre. Comme nous lavons vue pour le niveau de compatibilit, on crira en premier ALTER DATABASE qui est le mot cl de modification de la base de donnes, puis entre crochet le nom de la base de donnes, puis le mot cl SET qui est le mot cl de modification du paramtre qui suit. Voici une liste des mots cls et de leurs valeurs qui peuvent modifier un paramtre de la base de donnes. On peut les classer en diffrentes catgories. Etat de la base de donnes. Rend la base de donnes visible. Rend la base de donnes inaccessible. Cest la manire la plus propre de dsactiver votre base de donnes. La base de donnes est mise en mode lecture seule, la journalisation est dsactive et seuls les administrateurs peuvent accder la base.

ONLINE OFFLINE EMERGENCY

Accs la base de donnes. Dotnet France Association CASANOVA Grgory

16

Design et cration dune base de donnes [03/07/09] SINGLE_USER RESTRICTED_USER MULTI_USER Laccs est limit un seul utilisateur. Seuls les membres des rles db_owner, dbcreator ou sysadmin peuvent se connecter la base. Cest le mode par dfaut. Il permet tous les utilisateurs qui disposent de privilges suffisants, daccder aux informations.

Oprations possibles sur la base de donnes. Seules les oprations de lecture sont possibles. La base est accessible pour les oprations de lecture et criture.

READ_ONLY READ_WRITE

Accs la base de donnes. La base nest accessible que par son propritaire.

DBO use only

Paramtrage de la base de donnes. Dfinit la valeur par dfaut de la contrainte de nullit de colonne. Autorise la rcursivit des triggers. Permet de dtecter les pages incompltes. La base de donnes est arrte et les ressources sont libres ds linstant o le dernier utilisateur sest dconnect. Les fichiers de la base de donnes pourront tre automatiquement rduits. Les statistiques manquantes lors de lexcution dune requte sont cres automatiquement. Sa valeur par dfaut est ON. Les statistiques qui reprsentent la pertinence des index sont mises jour de faon non synchrone et de faon automatique. Elle est positionne sur ON par dfaut. Les identificateurs dlimits peuvent tre encadrs par des guillemets doubles. Si la condition est True, alors toutes les comparaisons avec une valeur NULL sont values inconnue. Permet de faire remonter des messages derreurs lorsque certaines conditions sont remplies. Arrte un traitement lorsque il y a un dpassement de capacit ou encore une division par 0. Le rsultat est NULL si lune des deux oprandes dune opration de concatnation est NULL. Permet de fermer tous les curseurs lors de la dfinition dune transaction ou lors de la fin dune transaction. Les dclarations de curseurs ont par dfaut la valeur LOCAL. Une erreur est leve si une perte de prcision est faite lors dun calcul. Permet de prciser la stratgie de sauvegarde planifie au

ANSI_NULL_DEFAULT RECURSIVE_TRIGGERS TORN_PAGE_DETECTION AUTO_CLOSE

AUTO_SHRINK AUTO_CREATE_STATISTICS

AUTO_CREATE_STATISTICS_ASYNC

QUOTED_IDENTIFIERS ANSI_NULLS ANSI_WARNINGS ARITHABORT CONCAT_NULL_YIELDS_NULL CURSOR_CLOSE_ON_COMMIT CURSOR_DEFAULT NUMERIC ROUNDABORT RECOVERY

Dotnet France Association CASANOVA Grgory

17

Design et cration dune base de donnes [03/07/09] niveau de la base de donnes. Cette opration permet de valider la qualit des informations stockes au niveau de chaque page. CHECKSUM est la valeur par dfaut, et de plus celle recommande par SQL Server. En mettant cette option sur ON (OFF par dfaut), des informations complmentaires seront ajoutes au journal. En mode SIMPLE, les requtes sont paramtres en fonction des rgles imposes sur le serveur. Il est possible dutiliser le mode FORCED, qui fait que SQL Server paramtre toutes les requtes avant de dresser le plan dexcution. Toutes les statistiques obsoltes pour une requte sont recalcules automatiquement.

PAGE_VERIFY

SUPPLEMENTAL_LOGGING

PARAMETERIZATION

AUTO_UPDATE_STATISTICS

Gestion des transactions de la base de donnes. Annulation des transactions aprs une valeur nombre de seconde dattente. Annulation immdiate des transactions. Si une transaction naccde pas directement une ressource donne qui lui est ncessaire, la transaction est annule. Spcifie si les espaces droite sur les donnes de type caractre doivent tre ou non supprims. Indique le niveau de compatibilit de la base de donnes. Pour SQL Server 2000, cest un niveau de 80, pour 2005, un niveau de 90 et pour 2008, un niveau de 100. SQL Server se charge dentretenir la corrlation des statistiques entre deux tables par une contrainte de cl trangre et qui possdent toutes les deux une colonne de type Datetime.

ROLLBACK AFTER nombre ROLLBACK IMMEDIATE NO_WAIT

ANSI_PADDING COMPATIBILITY

DATE_CORRELATION_OPTIMISATION

Accs externe la base de donnes. Permet de grer les contraintes de scurit lors de laccs la base partir dune autre base. Permet aux modules internes (procdures stockes, fonctions..) daccder des ressources extrieures en utilisant un contexte Impersonate.

DB_CHAINING TRUSTWORTHY

Service broker de la base de donnes. Active le service broker. Dsactive le service broker. Permet de prciser que la base de donnes doit recevoir un nouvel identifiant service broker. Les conversations en cours vont recevoir un message derreur et vont ainsi tre cltures.

ENABLE_BROKER DISABLE_BROKER NEW_BROKER ERROR_BROKER_CONVERSATIONS

Dotnet France Association CASANOVA Grgory

18

Design et cration dune base de donnes [03/07/09] Snapshot (capture instantane) de la base de donnes. Lorsque ce mode est activ, toutes les transactions sont capables de travailler avec des Snapshots de la base telles quelles taient au dbut de la transaction. Lorsque ce mode est activ, toutes les instructions peroivent les donnes telles quelles taient au dbut de linstruction.

ALLOW_SNAPSHOT_ISOLATION

READ_COMMITED_SNAPSHOT

Aprs avoir effectu toutes les modifications voulues, vous pouvez lancer les commandes que vous avez entres en appuyant sur F5 ou Ctrl + E . SQL Server appliquera alors le code crit. Aprs lavoir excut, si aucun problme nest survenu, vous devriez avoir le message suivant : Commandes excuts avec succs . Il est aussi possible de supprimer une base de donnes avec du code T-SQL, il suffit juste dentrer la requte suivant.
USE [master]

GO
DROP DATABASE NomBDD

Dotnet France Association CASANOVA Grgory

19

Design et cration dune base de donnes [03/07/09]

Conclusion

Dans ce chapitre nous avons appris les diffrents types de base existants, et grer une base de donnes, puis lui donner les caractristiques que nous voulions. La base de donnes est lenveloppe gnrale de vos donnes, leur conteneur. Il existe alors des sous ensembles qui nous permettront de regrouper les donnes de mme destination ensemble, les tables, puis les colonnes. Ce sera le sujet du prochain chapitre qui traitera de la cration et de la gestion des tables dans SQL Server 2008, ainsi que la mise en place de contraintes dintgrits sur les colonnes des tables.

Dotnet France Association CASANOVA Grgory