Vous êtes sur la page 1sur 38

Secteur Tertiaire Informatique Filire tude - dveloppement

Activit Dvelopper la persistance des donnes

Cration de bases de donnes SQL Server

Accueil Apprentissage

Priode en entreprise Evaluation

Code barre

SOMMAIRE

I
I.1 I.2 I.3

CREATION DE LA BASE DE DONNEES ...........................................3


Stockage physique des donnes ........................................................................3 Cration dune base de donnes ........................................................................5 Travailler avec des schmas ............................................................................12

II

CREATION DOBJETS DE BASE DE DONNEES.............................14


II.1 II.2 II.3 II.4 II.5 Les types de donnes systme .....................................................................14 Les types de donnes utilisateur...................................................................16 Cration de tables .........................................................................................18 Tables partitionnes ......................................................................................20 Gnration de scripts ....................................................................................22

III INTEGRITE DES DONNEES ............................................................23


III.1 III.2 Les contraintes ..............................................................................................23 Valeurs par dfaut et rgles ..........................................................................28

IV
IV.1 IV.2 IV.3 IV.4

GESTION DES INDEX...................................................................29


Introduction ...................................................................................................29 Architecture et cration dindex .....................................................................31 Afficher les proprits des index ...................................................................32 Utilisation de linstruction CREATE INDEX ...................................................33

LES VUES ........................................................................................35


V.1 V.2 V.3 V.4 V.5 Cration.........................................................................................................35 Mises a jour de vues .....................................................................................36 Les vues partitionnes ..................................................................................36 Les vues Indexes ........................................................................................37 Modification / Suppression ............................................................................37

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 2/38

CREATION DE LA BASE DE DONNEES


I.1 STOCKAGE PHYSIQUE DES DONNEES

Les bases de donnes SQL Server sont stockes dans des fichiers. Ces fichiers sont crs automatiquement lors de la cration de la base.

Le fichier primaire (dextension .MDF) est le point de dpart de la base de donnes. Les fichiers secondaires, facultatifs (dextension .NDF) contiennent toutes les donnes et objets qui ne se trouvent pas dans le fichier primaire. Les fichiers journaux (dextension .LDF) contiennent toutes les informations relatives aux transactions effectues et permettent de rcuprer la base en cas dincident. Considrations relatives aux fichiers de base de donnes la cration dune base de donne seffectue par copie de la base Model, comprenant les tables systme les donnes sont stockes dans des pages de 8 Ko despace disque contigu les lignes ne peuvent pas stendre sur plusieurs pages les tables, les index sont stocks dans des extensions (une extension = 8 pages contigus donc 64 Ko) 8 objets peuvent se partager une extension(extension mixte). Lorsquune table dpasse 8 pages, elle utilise ses propres extensions (extension uniforme). La taille du journal des transactions reprsente 25% de la taille des donnes.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 3/38

Mode de fonctionnement du journal des transactions Le journal des transactions consigne les modifications apportes aux donnes, via les instructions INSERT, UPDAT ou DELET. 1. Lorsque la modification est excute, les pages de donnes concernes sont charges dans une zone mmoire appele cache de donnes 2. Chaque instruction de modification de donnes est enregistre 3. dans le journal des transactions au moment ou elle est excute. La modification est toujours enregistre dans le fichier journal, avant dtre applique la base (journal criture anticipe). 4. Le processus de point de contrle crit toutes les transactions valides (par une instruction COMMIT TRANSACTION) dans la base. En mode de fonctionnement normal, le processus de point de contrle vrifie rgulirement que pour toutes les transactions valides, les donnes correspondantes ont bien t rcrites dans la base. Un point de contrle est cr En cas de dfaillance du systme, le processus de rcupration automatique sexcute au redmarrage de SQL Server.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 4/38

I.2

CREATION DUNE BASE DE DONNEES

Lorsquune nouvelle base de donnes est cre dans SQL Server 2005, le niveau de compatibilit est par dfaut 90. Lorsquune base de donnes est importe dans SQL Server 2005, elle garde son niveau de compatibilit existant (Proprits de la base de donnes /Options). 80 pour le niveau de compatibilit SQL Server 2000 70 pour le niveau de compatibilit SQL Server 7.0 65 pour le niveau de compatibilit SQL Server 6.5 La vue Explorateur dobjets Lorsquon dveloppe le dossier base de donnes, ainsi que lentre dune des bases, on affiche une liste de nuds dobjets de la base :

Schmas de base de donnes Schmas de la base ainsi que les informations en rapport Tables Table systme (messagerie, plans de maintenance, rplication, sauvegarde/restauration, envoi des journaux) et utilisateurs Vues Vues systme et utilisateur

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 5/38

Synonymes Noms alternatifs pour des objets au niveau schma ; les applications peuvent utiliser des synonymes pour accder aux objets ; le nom de lobjet peut ainsi tre modifi sans consquence sur les applications Programmabilit Reprsentation par nuds de la plupart des types dobjets programmables (procdures stockes, dclencheurs, assemblys, types de donnes ) Service Broker Objets ayant un lien avec le service Broker : types de message, contrats, files dattente Stockage Objets en rapport avec le stockage : catalogue de texte intgral Scurit Objets en rapport avec la scurit : utilisateurs, rles

Une base de donnes peut tre cre laide du concepteur de bases de donnes, en cliquant avec le bouton droit sur Base de donnes et dans le menu contextuel, en slectionnant Nouvelle Base de donnes ou grce linstruction CREATE DATABASE de Transact-Sql. Le journal des transactions sera cr automatiquement, quelque soit le processus utilis. Dans la page Gnral, indiquer le nom et le propritaire de la base ; une boite de dialogue permet de slectionner la connexion qui sera propritaire de la base. La cration dune base de donnes comprend laffectation dun nom, la dclaration de la taille et de lemplacement des fichiers. ; on prcise galement la taille maximale autorise et lincrment de croissance autorise (0 indiquera quaucune croissance nest autorise) : Les options de croissance automatique des fichiers (par dfaut) vitent les tches administratives lies la croissance manuelle de la base ; elles rduisent galement le risque que la base de donnes manque despace disque de faon inattendue. Les groupes de fichier sont essentiellement destins aux bases de donnes importantes (> 1GO) et aux tches dadministration avances : leur principal intrt est damliorer le temps de rponse de la base, en autorisant la cration de ses fichiers sur plusieurs disques et/ou laccs par de multiples contrleurs de disque. Dans la zone chemin daccs, saisir le chemin daccs complet au fichier de donnes (emplacement par dfaut slectionn) ; le fichier primaire doit porter lextension .mdf. Les fichiers de donnes secondaires constituent un espace supplmentaire pour stocker des donnes et doivent porter lextension .ndf. Dans la page Options, slectionner un classement pour la base de donnes : Ex French_CI_AS : langue, Case Insensitive (Casse non prise en compte), Accent Sensitive (Accent pris en compte)

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 6/38

Syntaxe sous Transact-SQL : CREATE DATABASE nom_base [ON [PRIMARY] ( [NAME = Nom_fichier_logique, FILENAME =nom complet du fichier (avec chemin daccs) [, SIZE = taille [KB | MB | GB | TB]] [, MAXSIZE = taille_max / UNLIMITED] [, FILEGROWTH = incrment_croissance]) ) [LOG ON { ( [NAME = Nom_fichier_logique, FILENAME =nom complet du fichier (avec chemin daccs) [, SIZE = taille [KB | MB | GB | TB]] [, MAXSIZE = taille_max / UNLIMITED] [, FILEGROWTH = incrment_croissance]) )}] ] [COLLATE nom-squence_classement] [WITH DB_CHAINING {ON | OFF} | TRUSTWORTHY {ON | OFF}] nom-squence_classement Indique le classement par dfaut de la base de donnes. Le nom du classement peut tre un nom de classement Windows ou SQL. S'il n'est pas spcifi, la base de donnes est affecte au classement par dfaut de l'instance SQL Server DB_CHAINING {ON | OFF} Lorsque ON est spcifi, la base de donnes peut tre la source ou la cible d'un chanage des proprits des bases de donnes croises. Lorsque OFF est spcifi, la base de donnes ne peut pas participer au chanage des proprits des bases de donnes croises. La valeur par dfaut est OFF. TRUSTWORTHY {ON | OFF} Lorsque ON est spcifi, les modules de base de donnes (par exemples les vues, les fonctions dfinies par l'utilisateur ou les procdures stockes) utilisant le contexte d'emprunt d'identit peuvent accder des ressources en dehors de la base de donnes modifier obligatoirement par Transact-Sql : ALTER DATABASE nom_base SET TRUSTWORTHY ON.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 7/38

Exemple 1: Cration dune base de donnes appele Ventes avec un fichier de donnes primaires de 1Go et un fichier journal de 500Mo. Le fichier de donnes primaire peut crotre jusqu 5Go par incrment de 5% ; le fichier journal peut crotre par incrment de 25Mo. CREATE DATABASE Ventes ON PRIMARY] (NAME = Ventes_data, FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventedata.mdf', SIZE = 1GB, MAXSIZE = 5GB, FILEGROWTH = 5%) LOG ON (NAME = 'Ventes_log', FILENAME ='c: \program files\Microsoft SQL Server\mssql\data\ventelog.ldf', SIZE = 500MB, FILEGROWTH = 5%) Un fichier ne peut appartenir qu un seul groupe de fichiers. Par dfaut, si aucun groupe de fichiers nest prcis, il est ajout au groupe PRIMARY. Exemple 2: On aurait pu crer cette base avec 2 fichiers de donnes, appartenant au groupe PRIMARY. CREATE DATABASE Ventes ON PRIMARY (NAME = Ventes_data1, FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventedata1.mdf', SIZE = 1GB, MAXSIZE = 5GB, FILEGROWTH = 5), (NAME = Ventes_data2, FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventedata2.ndf', SIZE = 500MB, MAXSIZE = 2GB, FILEGROWTH = 10%) LOG ON (NAME = 'Ventes_log', FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventelog.ldf', SIZE = 500MB, FILEGROWTH = 5%) Il nest toutefois pas possible de crer un objet de base de donnes dans lun ou lautre des fichiers de donnes sans lutilisation dun groupe de fichiers.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 8/38

Exemple 3: On aurait pu crer cette base avec 2 fichiers de donnes, rpartis dans 2 groupes de fichiers distincts CREATE DATABASE Ventes ON PRIMARY (NAME = Ventes_data1, FILENAME = 'c:\program files\Microsoft SQL Server\mssql\data\ventedata1.mdf', SIZE = 1GB, MAXSIZE = 5GB, FILEGROWTH = 5), FILEGROUP HISTO (NAME = Ventes_data2, FILENAME = 'c:\program files\Microsoft SQL Server\mssql\data\ventedata2.ndf', SIZE = 500MB, MAXSIZE = 2GB, FILEGROWTH = 10%) LOG ON (NAME = 'Ventes_log', FILENAME = 'c:\program files\Microsoft SQL Server\mssql\data\ventelog.ldf', SIZE = 500MB, FILEGROWTH = 5%) Dans cette configuration, tout objet de base de donnes peut tre cr soit dans le groupe PRIMARY soit dans le groupe HISTO. Un fichier primaire .mdf se trouve toujours sur le groupe PRIMARY, et contient les tables systme. Il contient galement tous les objets non affects aux groupes de fichiers utilisateur. Le principal avantage des groupes de fichiers est de pouvoir rpartir manuellement les objets sur un groupe de fichiers donn, alors que ce nest pas possible sur un fichier de donnes. Il peut tre intressant, afin de limiter les conflits daccs disque, de crer plusieurs groupes de fichiers sur le serveur et de spcialiser chacun deux ; on peut envisager dutiliser le groupe de fichiers PRIMARY pour les tables systme, de crer un deuxime groupe pour les tables utilisateur ; il est parfois envisageable de crer un troisime groupe pour les index. La rpartition des donnes sur des fichiers ou des groupes de fichiers peut amliorer les performances (rpartition des E/S), amliorer les temps de sauvegarde (sauvegarde par groupe de fichiers).

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 9/38

Exemple 4 : Cration dune capture instantane de base de donnes ventes_snapshot. Une capture instantane de base de donnes tant une vue en lecture seule dune base existante, un fichier journal ne peut pas tre spcifi. Conformment la syntaxe, chaque fichier de la base de donnes source est spcifi et les groupes de fichiers ne sont pas spcifis. CREATE DATABASE Ventes_Snapshot (NAME = Ventes_data1, FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventedata1.mdf') (NAME = Ventes_data2, FILENAME = 'c: \program files\Microsoft SQL Server\mssql\data\ventedata2.ndf') AS SNAPSHOT OF VENTES

Sous SQL Server Management Studio, vous crerez une nouvelle base de donne en slectionnant dans le menu contextuel du noeud Base de donnes, loption Nouvelle Base de donnes.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 10/38

Le rapport Utilisation du disque fournit des informations sur lutilisation de lespace. Rpartition entre donnes et index

En dveloppant, on obtiendra des informations sur lespace disque utilis par les fichiers de donnes, par table, par partition . On peut galement obtenir certaines informations par le biais du langage DBCC. dbcc SQLPERF(logspace) affiche la taille et lutilisation des fichiers journaux

On pourra galement rduire lespace inutilis par la base ou les fichiers en slectionnant sur une base donne Tches / Rduire .

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 11/38

I.3

TRAVAILLER AVEC DES SCHEMAS

Les schmas sont des conteneurs dobjets qui simplifient la gestion et la cration de sous-ensemble dobjets traits globalement. Les schmas sont distincts des utilisateurs. Ceux-ci possdent des schmas et ils disposent toujours dun schma par dfaut que le serveur utilise pour les objets non qualifis des requtes. Syntaxe sous Transact-SQL CREATE SCHEMA nom-schema AUTHORIZATION nom_propritaire Exemple 1 : Cration du schma Gescli dans la base Ventes, de propritaire Gestion. USE Ventes; CREATE SCHEMA Gescli AUTHORIZATION Gestion La transaction CREATE SCHEMA peut galement crer des tables et des vues dans le nouveau schma et tablir des autorisations GRANT, DENY ou REVOKE sur ces objets Exemple 2 : Cration du schma Gescli dans la base Ventes de propritaire Gestion ; cration de la table Clients pour laquelle lautorisation Select est accorde Marketing , et est refuse Stock. USE Ventes; CREATE SCHEMA Gescli AUTHORIZATION Gestion CREATE TABLE Clients (codecli int, nomcli char(30)) GRANT SELECT TO Marketing DENY SELECT TO Stock Les objets peuvent tre dplacs dun schma un autre, mais uniquement dans la mme base de donnes. La modification dun schma par linstruction ALTER SCHEMA consiste modifier les objets contenus dans ce schma ; lorsquun objet est transfr dun schma un autre, les autorisations relatives cet objet sont perdues. Si le propritaire de lobjet est un utilisateur ou un rle spcifique, lautorisation est conserve ; si la proprit de lobjet est dfinie SCHEMA OWNER, cette proprit reste inchange avec comme effet, laffectation du propritaire du schma comme propritaire de lobjet. Syntaxe sous Transact-SQL ALTER SCHEMA nom_schma_cible TRANSFER nom_objet Exemple 3 : Transfert de la table Socit qui appartenait au schma dbo vers le schma Gescli ALTER SCHEMA Gescli TRANSFER dbo.Socit La suppression dun schma par linstruction DROP SCHEMA ne pourra seffectuer que si ce schma ne contient plus aucun objet.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 12/38

Sous SQL Server Management Studio : La cration dun schma se fait en slectionnant loption Nouveau schma dans le menu contextuel du nud Scurit de la base de donnes slectionne. Sur la page Gnral, seront saisis le nom du schma et son propritaire (guid en affichant la boite de dialogue rechercher les rles et les utilisateurs, la slection). Le dplacement dun objet vers un nouveau schma se fait en slectionnant loption Modifier dans le menu contextuel de lobjet dplacer. La vue Proprits de lobjet slectionn saffiche (F4 si elle nest pas visible). Sous Identit, la liste droulante Schmas affiche tous les schmas de la base, et permet de slectionner le schma cible.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 13/38

II CREATION DOBJETS DE BASE DE DONNEES


II.1 LES TYPES DE DONNEES SYSTEME SQL Server propose plusieurs types de donnes systme : Type SQL Server Nombres entiers Nb Octets Plage

bigint 8 (-263 et 263 -1) int 4 (-231 et 231 )-1 smallint 2 -215 (32768) 215 1(32767 tinyint 1 1 (0 255), bit 1 0,1 ou NULL Valeurs numriques exactes decimal[(p[,s])] 5 17 (-1038 et 1038 -1) numeric[(p[,s])] 5 17 (-1038 et 1038 -1) Valeurs numriques approximatives float[(n)] n<=24 4 -1,18E -38 3,40E +38 float[(n)] 24<n<=53 8 -1,79E + 308 3,40E +308 real 4 - 3,40E + 38 3,40E + 38 Valeurs binaires binary[(n)] 1 8000 varbinary[(n)] varbinary[(max)] jusqu 231 -1 (+ pointeur de 2 octets) 31 image 0 2 - 1 octets uniqueidentifier 16 Nombres rowversion 8 Nombre unique timestamp 8 (synonyme de rowversion) Date et heure datetime 8(2 x 4 octets) 01/01/1753 au 31/12/999 smalldatetime 4(2 x 2 octets) 01/01/1960 au 06/06/2079 Montaire money 8 smallmoney 4 Chanes de caractres (1 octet par caractre) char[(n)] n= 1 8000 caractres varchar[(n)] n= 1 8000 varchar[(max)] jusqu 231 -1 (+ pointeur de 2 octets) 30 text 0 2 - 1 caractres Chanes de caractres Unicode (2 octets par caractre) nchar[(n)] n= 1 4000 caractres nvarchar[(n)] n= 1 4000 nvarchar[(max)] jusqu 231 -1 (+ pointeur de 2 octets)

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 14/38

Types particuliers Sqlvariant (taille variable) : permet une seule colonne de stocker plusieurs types de donnes table (taille variable) : utilis pour stocker temporairement un ensemble de rsultats pour traitement Xml (taille variable) : utilis pour stocker des donnes XML Les caractres Unicode utilisent 2 octets par caractre et prennent en charge tous les caractres internationaux. Les types de donnes numriques exactes permettent de spcifier exactement lchelle et le degr de prcision utiliser (ex : 2 dcimales). Dans le cas des types de donnes numriques approximatives, les donnes sont stockes aussi prcisment que possible laide de nombre binaires (ex : fraction 1/3 = 0,3333) Choix des types de donnes : Longueur fixe lorsque la taille des donnes est cohrente Longueur variable lorsque la taille des donnes nest pas constante Longueur maximale lorsque la taille des donnes excde la limite de longueur fixe ou longueur variable

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 15/38

II.2 LES TYPES DE DONNEES UTILISATEUR Ils permettent daffiner les types de donnes afin dassurer la cohrence entre les donnes communes plusieurs tables ; il est possible de leur associer des rgles et des valeurs par dfaut ; un type de donnes utilisateur est dtermin pour une base spcifique. Linstruction Transact-SQL CREATE TYPE (remplace la procdure stocke systme sp_addtype de SQL Server 2000) permet de crer ces types de donnes : Syntaxe sous Transact-SQL : CREATE TYPE [nom_schema. ] type_name { FROM type_systme[(precision [, chelle ])] [NULL | NOT NULL ]| EXTERNAL NAME nom_assembly [ .nom_classe ] } Exemple 1 : cration dun type zipcode (code postal) de type caractre de 10 caractres nautorisant pas les valeurs nulles CREATE TYPE Gescli.zipcode FROM char(10) NOT NULL Exemple 2 : cration dun type num_membre, nombre entier ne dpassant pas 30000 CREATE TYPE Gescli.num_membre FROM smallint Lintgration du CLR (Common Language RunTime) permet dcrire procdures stockes, dclencheurs, fonctions, types utilisateur laide de nimporte quel langage .Net framework et implment dans SQL Server au sein dune assembly. CREATE ASSEMBLY nom_assembly [AUTHORIZATION nom_proprietaire ] FROM {chemin complet et nom_DLL} [WITH PERMISSION_SET = {SAFE | EXTERNAL_ACCESS | UNSAFE}] Il est recommand d'utiliser SAFE. Il s'agit de l'ensemble d'autorisations le plus restrictif. Le code excut par une assembly avec les autorisations SAFE ne peut pas accder aux ressources systme externes telles que les fichiers, le rseau, les variables d'environnement ou le Registre. Un type dfini par l'utilisateur est implment travers une classe. Exemple 3 : cration dun type de donnes SQL Server de nom TypeSpec du schma Gescli, partir de lassembly SQL Server SQLAssembly cr partir de la DLL DLLTest.dll ou est dfinie une structure VSType. CREATE ASSEMBLY SQLAssembly FROM C:\Documents and Settings\Util\Mes documents\Projets Visual Studio\TestAssembly\.DLLTest.dll WITH PERMISSION_SET = SAFE A ce stade, la DLL est charge dans le moteur de la base de donnes. CREATE TYPE Gescli TypeSpec EXTERNAL NAME SQLAssembly.VSType

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 16/38

EXTERNAL NAME nom_assembly [ .nom_classe ] Spcifie la classe (VStype) d'une assembly (SQLAssembly). Le nom de la classe pourrait tre un nom qualifi par un espace de noms, ici UserDefinedTypes Sous SQL Server Management Studio, On crera une nouvelle assembly en slectionnant nouvelle Assembly dans le menu contextuel du nud Assembly de Programmabilit dans la base de donnes choisie. On crera un nouveau type de donnes en slectionnant nouveau type de donnes dans le menu contextuel du nud Type de donnes dfini par lutilisateur de Type dans Programmabilit de la base de donnes choisie. Attention : Lintgration du CLR est dsactive par dfaut, linstallation de SQL Server 2005; il faut donc modifier un paramtre serveur pour prendre en compte lenvironnement : au moyen de la procdure stocke sp_configure : Exec sp_configure CLR Enabled, 1 Reconfigure Ou en utilisant loutil Configuration de la surface dexposition SQL Server , option des fonctionnalits, et dans la rubrique Intgration du CLR, cocher Activer lintgration du CLR.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 17/38

II.3 CREATION DE TABLES Une table de base de donnes peut tre cre laide de SQL Server SQL Server Management Studio ou grce linstruction CREATE TABLE de Transact-Sql. SQL Server limite : Deux milliards de tables par base de donnes 1024 colonnes par table 8060 octets par ligne Dans chaque colonne, on spcifiera le nom et le type de donnes ainsi que, le cas chant des contraintes et des valeurs par dfaut (valeurs nulles autorises ou non). Une table sera modifie par linstruction Tansact-Sql ALTER TABLE. ; .Cette instruction permet dajouter, supprimer et modifier les colonnes. Syntaxe sous Transact-SQL : CREATE TABLE nom_table ( nom_colonne type_donnes [NULL | NOT NULL] [,...n] ) ON { <partition_scheme> | filegroup | "default" } Spcifie le groupe de fichiers ou schma de partition dans lequel la table est stocke. <partition_scheme> indique que la table sera partitionne avec des partitions stockes dans un ensemble d'un ou plusieurs groupes de fichiers spcifi dans <partition_scheme>. Filegroup indique que la table est stocke dans le groupe de fichiers nomm. Le groupe de fichiers doit exister dans la base de donnes. "default" ( ou si ON n'est pas spcifi du tout) indique que la table est stocke dans le groupe de fichiers par dfaut. Exemple : Cration de la table Employe pour laquelle les champs Matricule, Nom, Prnom, DateEntre ne peuvent tre nuls; la table est cre dans le groupe de fichiers par dfaut. CREATE TABLE Employe (Matricule SMALLINT NOT NULL IDENTITY(1,1), Nom VARCHAR(25) NOT NULL, Prenom VARCHAR (15) NOT NULL, Adresse VARCHAR (30) NULL, Cp ZIPCODE, DateEntree DATETIME NOT NULL DateFin DATETIME NULL) La proprit IDENTITY permet de crer des colonnes (appeles colonnes didentit) contenant des valeurs numriques squentielles gnres par le systme (champ compteur) et identifiant de faon unique chaque ligne ajoute une table. Une colonne didentit sert souvent de cl primaire.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 18/38

Les paramtres prcisent la valeur de dpart et lincrment ; il ne peut y avoir quune seule colonne didentit par table ; une colonne didentit doit tre de type entier, numrique ou dcimal et nautorise pas les valeurs nulles. Exemple : Cration de la table Client dont la colonne CodeCli est cre avec le type de donnes uniqueidentifier, en utilisant une valeur par dfaut gnr par la fonction NEWID. CREATE TABLE Client (Codecli UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID( ), NomCli CHAR(30) NOT NULL) Sous SQL Server Manager studio, une nouvelle table sera cre en slectionnant Nouvelle table dans le menu contextuel du nud Tables de la base de donnes choisie. La table sera facilement conue au moyen des vues fournies : la vue Table qui permet de visualiser lensemble des colonnes de la table la vue Proprits des colonnes permet de configurer les paramtres de la colonne slectionne la vue Proprits de la table permet de dfinir les proprits gnrales de la table, son nom, sa description et son schma ;

Le type de donnes uniqueidentifier contient un numro didentification unique stock comme une chane binaire sur 16 octets et sert stocker un identificateur globalement unique (GUID). La fonction NEWID cre un identificateur unique (GUID) stock laide du type de donnes uniqueidentifier.
Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 19/38

Le fait de laisser SQL Server fournir automatiquement des valeurs de cl plutt que de laisser lapplication cliente sen charger peut amliorer les performances. II.4 TABLES PARTITIONNEES Dans SQL Server 2005, les tables sont contenues dans une ou plusieurs partitions. Partitionner les grandes tables permet de grer des sous-ensembles de donnes, et peut amliorer les temps de rponse lors du travail sur les donnes de la table. Par dfaut, les tables ne comportent quune seule partition. Lorsquune table en contient plusieurs, les donnes sont partitionnes horizontalement, de sorte que des groupes de lignes sont mapps dans des partitions individuelles bases sur une colonne spcifique. Exemple : Partitionner une table Commande suivant la date de commande ; la partition peut tre alors divise selon les plages de date, et chaque partition peut comporter des donnes annuelle, trimestrielle ou mensuelles. Avant de crer une table partitionne l'aide de CREATE TABLE, il faut : 1. d'abord crer une fonction de partition pour spcifier la manire dont la table est partitionne l'aide de linstruction Transact-Sql CREATE PARTITION FUNCTION. Pour rpartir les donnes entre les diffrentes partitions, la fonction utilise des plages de valeur ; seules les valeurs frontires sont indiques, CREATE PARTITION FUNCTION nom_fonction ( parametre ) AS RANGE [ LEFT | RIGHT ] FOR VALUES ( [ valeurlimite [ ,...n ] ] ) parametre Spcifie le type de colonne : tous, sauf timestamp, varchar(max), nvarchar(max) et varbinary LEFT | RIGHT LEFT indique que la valeur frontire est incluse dans la plage de valeurs infrieures, RIGHT dans la plage suivante. valeurlimite Marque la frontire de chaque partition Exemple : Cration de la fonction de partitionnement dfinie sur une valeur de type entier. a. 1ere partition pour des valeurs <=1000 b. 2eme partition pour des valeurs >1000 et <=2000 c. 2eme partition pour des valeurs >2000 et <=3000 d. 4eme partition pour des valeurs >3000 CREATE PARTITION FUNCTION pfNum ( smallint ) AS RANGE LEFT FOR VALUES (1000, 2000, 3000)

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 20/38

2. puis crer un schma de partition pour faire correspondre les groupes de fichiers qui contiendront les partitions aux valeurs indiques par la fonction de partition l'aide de linstruction Transact-Sql CREATE PARTITION SCHEME. CREATE PARTITION SCHEME nom_schema_partition AS PARTITION nom_fonction_partition [ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] ) Exemple : Utilisation de la fonction de partition dfinie prcdemment pour subdiviser la table en 4 partitions bases sur des 4 groupes de fichiers dj existants dans la base. CREATE PARTITION SCHEME schema1 AS PARTITION pfNum TO (groupe1, groupe2, groupe3, groupe4) Lors de la cration de la table, il faut prciser le schma de partition utiliser, ainsi que la colonne utilise par la fonction de partitionnement. CREATE TABLE Employe (Matricule SMALLINT NOT NULL IDENTITY(1,1), Nom VARCHAR(25) NOT NULL, Prenom VARCHAR (15) NOT NULL, Adresse VARCHAR (30) NULL, Cp ZIPCODE, DateEntree DATETIME NOT NULL DateFin DATETIME NULL) ON schema1(Matricule)

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 21/38

II.5 GENERATION DE SCRIPTS Lorsque des objets sont crs dans une base de donnes, il est important denregistrer leur dfinition dans un fichier script (qui peut tre gnr aprs la cration de lobjet) afin dtre en mesure de recrer facilement les objets si ncessaire. Que peut-on gnrer ? Le schma intgral dune base de donnes dans un seul fichier script Un schma de table pour une table ou plusieurs dans un ou plusieurs fichiers scripts. Un schma des tables et des index dans un fichier script, les procdures stockes dans un autre, les rgles et valeurs par dfaut dans un troisime. On utilisera SQL Server Management Studio pour gnrer de tels scripts : aprs avoir dvelopp votre serveur et ses bases de donnes, sur le menu contextuel de la base choisie, vous cliquerez sur Tches puis Gnrer des scripts. Vous paramtrerez alors le script dsir. Sous SQL Server Management Studio, on peut avoir facilement accs aux objets dpendants de la table, avec lexplorateur dobjets.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 22/38

III INTEGRITE DES DONNEES


On distingue 4 types dintgrit : Lintgrit de domaine (ou de colonne) consiste prciser lensemble des valeurs valides dans une colonne et indiquer si les valeurs nulles sont autorises. Lintgrit dentit (ou de table) consiste sassurer que toutes les lignes dune table possdent un identificateur unique. Lintgrit rfrentielle garantit le maintien dune relation existant entre une cl primaire dans une table rfrence et une cl trangre dans chacune des tables qui la rfrencent. Lintgrit dfinie par lutilisateur permet de dfinir de rgles dentreprise spcifiques qui nentrent dans aucune des autres catgories dintgrit. III.1 LES CONTRAINTES Les contraintes constituent une mthode pour assurer lintgrit des donnes. Elles garantissent la validit des valeurs saisies dans les colonnes et le maintien des relations entre les tables. Elles se mettent en uvre dans les instructions CREATE TABLE ou ALTER TABLE Les contraintes sappliquent sur des colonnes ou sur des tables entires. Une contrainte de colonne fait partie de la dfinition de la colonne et ne sapplique qu celle-ci. Une contrainte de table est dclare indpendamment de la dfinition dune colonne et peut sappliquer plusieurs colonnes dune mme table. Ds lors que la contrainte porte sur plusieurs colonnes, elle doit tre dfinie au niveau table. Type de contrainte Cl Primaire PRIMARY KEY Description Identifie chaque ligne de faon unique, interdit les doublons et garantit la cration dun index pour amliorer les performances ; les valeurs NULL ne sont pas acceptes. Une table ne peut comporter quune seule cl primaire Empche la cration de doublons dans les colonnes non cl primaires et garantit la cration dun index pour amliorer les performances ; les valeurs NULL sont acceptes. Dfinit une colonne ou ensemble de colonnes dont les valeurs sont gales la cl primaire de la table rfrence Spcifie une rgle de validit sappliquant aux valeurs dune colonne. Valeur par dfaut de la colonne (lors dun INSERT) La valeur de la colonne doit tre dfinie

Unicit

UNIQUE

Cl trangre

FOREIGN KEY

Validation Valeur par dfaut Champs non nuls

CHECK DEFAULT NOT NUL

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 23/38

Exemple 1 : Cration de la table Employe pour laquelle : Les champs Matricule, Nom, Prnom, DateEntre ne peuvent tre nuls La cl primaire est le champ Matricule, champ compteur dont la valeur initiale est 1, et lincrment de 1 La colonne Nom ne peut contenir de doublons CREATE TABLE Employe ( Matricule SMALLINT NOT NULL IDENTITY (1, 1) PRIMARY KEY, Nom VARCHAR (25) NOT NULL UNIQUE , Prenom VARCHAR (15) NOT NULL, Adresse VARCHAR (30) NULL, Cp ZIPCODE, DateEntree DATETIME NOT NULL, DateFin DATETIME NULL) Quon aurait pu coder : CREATE TABLE Employe ( Matricule SMALLINT NOT NULL IDENTITY (1,1), Nom VARCHAR(25) NOT NULL , Prenom VARCHAR (15) NOT NULL, Adresse VARCHAR (30) NULL, Cp ZIPCODE, DateEntree DATETIME NOT NULL, DateFin DATETIME NULL, CONSTRAINT PK_Employee PRIMARY KEY (Matricule), CONSTRAINT UK_Employe PRIMARY KEY (Nom) ) Pour une cl primaire constitue de 2 colonnes, on aurait forcment cod : CREATE TABLE Employe ( Matricule SMALLINT NOT NULL IDENTITY (1,1), Nom VARCHAR (25) NOT NULL UNIQUE, Prenom VARCHAR (15) NOT NULL, Adresse VARCHAR (30) NULL, Cp ZIPCODE, DateEntree DATETIME NOT NULL, DateFin DATETIME NULL, CONSTRAINT PK_matricule PRIMARY KEY (Nom, Prenom) ) En dfinissant une contrainte UNIQUE sur une ou plusieurs colonnes, SQL Server cre automatiquement un index unique (voir la gestion des index). Exemple 2 : Ajout dune contrainte DEFAULT qui insre la valeur *Inconnu* dans la colonne du prnom, si aucun prnom na t saisi. ALTER TABLE Employe ADD CONSTRAINT DF_Employe_Prenom DEFAULT *Inconnu* FOR Prenom

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 24/38

La colonne aurait pu directement tre code : Prenom VARCHAR (15) NOT NULL DEFAULT *Inconnu*, ou Prenom VARCHAR (15)NOT NULL CONSTRAINT [DF_Employe_Prenom] DEFAULT *Inconnu* Cette contrainte ne s applique qu linsertion dun enregistrement. Exemple 3 : Ajout dune contrainte CHECK qui assure que la date de rsiliation du contrat est bien postrieure la date dembauche. ALTER TABLE Employe ADD CONSTRAINT CK_ Employe CHECK ( DateFin < DateEntree) Une contrainte CHECK peut tre cre avec n'importe quelle expression logique (boolenne) qui retourne TRUE ou FALSE sur la base des oprateurs logiques. Pour contrler quune colonne salaire est comprise entre 1500 et 10000, l'expression logique est la suivante : Salaire >= 1500 AND salaire <= 10000. Pour sassurer quune colonne Departement est bien compose de 2 chiffres, lexpression logique sera de type Dep like ('[0-9][0-9]') Exemple 4 : Cration de la table Client pour laquelle : Les champs CodeCli, Nom, CodeRep ne peuvent tre nuls La cl primaire est le champ CodeCli La contrainte FOREIGN KEY, bas sur la colonne Coderep rfrence le champ CodeRep de la table Reprsentant pour garantir que tout client est associ un reprsentant existant CREATE TABLE Client (CodeCli SMALLINT NOT NULL IDENTITY(1,1), Nom VARCHAR(25) NOT NULL, Coderep SMALLINT NOT NULL, CONSTRAINT PK_Codecli PRIMARY KEY (Codecli), CONSTRAINT FK_Client_REPRESENTANT FOREIGN KEY (Coderep) REFERENCES Representant (Coderep)) Pour pouvoir crer une telle relation au niveau du schma de la base, il est ncessaire que la colonne CODEREP soit cl primaire de la table REPRESENTANT. Dans le cas dune relation entre les tables Client et Reprsentant, le fait que lintgrit empche de supprimer un reprsentant est plutt une bonne chose : un reprsentant quittant sa socit, nemmne pas tous ses clients avec lui . Il nen serait pas de mme entre les tables Commandes et Dtail Commandes : en effet, si un client souhaite annuler sa commande, il est important de supprimer au mme moment, tout le dtail . Il faut galement protger linsertion de donnes dans la table Dtail Commandes, pour que toute ligne dtail ait une correspondance dans la table Commandes.
Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 25/38

Le choix effectu dans les spcifications INSERT et UPDATE (Supprimer une rgle) dans les proprits de la relation entre ces 2 tables garantissent les rgles de gestion imposes. La syntaxe Transact SQL correspondant aux options dans SQL Server Management Studio est la suivante : ALTER TABLE.[Detail Commandes] ADD CONSTRAINT [FK_Detail Commandes_Commandes] FOREIGN KEY (NO_Cde) REFERENCES [Commandes] (NO_Cde) ON DELETE CASCADE

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 26/38

On aurait galement pu prvoir que la modification dun numro de commande dans la table Commande entrane la rpercussion automatique de la modification du numro de commande de la table Dtail Commandes. On peut modifier la relation par linstruction Transact SQL suivante : ALTER TABLE.[Detail Commandes] ADD CONSTRAINT [FK_Detail Commandes_Commandes] FOREIGN KEY (NO_Cde) REFERENCES [Commandes] (NO_Cde) ON UPDATE CASCADE On aurait pu galement choisir que toutes les valeurs qui composent la cl trangre soient NULL/ leur valeur par dfaut si la ligne correspondante dans la table parente est supprime /mise jour. Pour que cette contrainte soit excute, les colonnes de cl trangre doivent accepter les valeurs NULL / des valeurs par dfaut. Si une colonne peut avoir une valeur NULL et qu'il n'existe aucun ensemble de valeurs par dfaut explicite, NULL devient la valeur par dfaut implicite de la colonne SET DEFAULT Syntaxe Transact-Sql complte : ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT }

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 27/38

III.2 VALEURS PAR DEFAUT ET REGLES Les valeurs par dfaut et les rgles sont des objets qui peuvent tre lis une ou plusieurs colonnes, ou des types de donnes utilisateurs ;elles peuvent tre dfinies, puis rutilises. Elles ne sont pas normalises ANSI : Elles sont proposes pour des raisons de compatibilit ascendante, mais il est prfrable de privilgier les contraintes CHECK et DEFAULT. Une valeur par dfaut est cre par linstruction CREATE DEFAULT, puis doit tre associe une colonne ou un type de donnes utilisateur en excutant une procdure systme sp_bindefault. CREATE DEFAULT [ nom_schma.]nom-par-dfaut AS expression_constante EXEC sp-bindefault nom-par-dfaut , nom_de_colonne Exemple : Positionnement de la valeur Inconnu si la colonne Prnom na pas t saisie CREATE DEFAULT Pinconnu AS Inconnu EXEC sp_bindefault Pinconnu , Prenom Les rgles servent spcifier les valeurs acceptes par une colonne. Une rgle est cre par linstruction CREATE RULE, puis doit tre associe une colonne ou un type de donnes utilisateur en excutant une procdure systme sp_bindrule. CREATE RULE [ nom_schma.]nom_regle AS expression_conditionnelle EXEC sp_bindrule nom_regle , nom_de_colonne ALTER TABLE nom_de_table ADD CONSTRAINT nom_de_contrainte CHECK (expression de contrainte) Exemple : Cration dune rgle qui autorisera la saisie de certains dpartements dans les colonnes utilisant le type de donnes type_dep dfini par lutilisateur. CREATE RULE dep_regle AS @dep in (13, 83, 84, 06) EXEC sp-bindrule dep_regle, type_dep On privilgiera la contrainte CHECK ALTER TABLE [ nom_schma.]nom_de_table ADD CONSTRAINT nom_de_contrainte CHECK (nom_de_colonne IN (13,83,84,06))

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 28/38

IV GESTION DES INDEX


IV.1 INTRODUCTION SQL Server 2005 stocke les lignes dune table dans des pages de donnes. Lorganisation des pages de donnes seffectue : pour les tables possdant un index ordonn en clusters les lignes de donnes de chaque page sont stockes dans lordre de la cl dindex. Chaque page contient une rfrence la page qui la prcde et la page qui la suit afin de crer une squence de pages ordonnes (liste double lien) qui permet aisment linsertion dune nouvelle page. Des pages dindex sont galement cres. Pour les tables dpourvues dindex ordonn en clusters (segments de mmoire) les lignes de donnes ne sont pas stockes dans un ordre particulier et les pages ne sont pas chanes.

Pour accder aux donnes, SQL Server effectue une analyse de la table ou un accs index. Lors dune analyse de table, SQL Server parcourt les pages et balaye ainsi toutes les lignes de la table en extrayant celles qui satisfont la requte. (adapt aux tables de petite dimension ou lorsquun pourcentage lev de lignes est renvoy). Lors dun accs index, SQL Server parcourt lindex ; il ne lit et nextrait que les lignes satisfaisant les critres de la requte. (adapt laccs des lignes uniques ou lorsquun faible pourcentage de lignes est renvoy). Lorsquun index existe, loptimiseur de requtes dtermine sil est plus efficace danalyser la table ou dutiliser lindex. Pour / Contre la cration dindex : De manire gnrale, les index acclrent les requtes qui effectuent des jointures de tables et des oprations de tri ou groupage Les index sont crs et actualiss en ordre croissant Lors dune modification de donnes, SQL Server doit mettre jour les index La gestion des index demande du temps et des ressources

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 29/38

Les colonnes indexer : Cls primaires, cls trangres ou colonnes utilises pour jointure Colonnes devant tre tries (order by) Colonnes utilises dans les requtes GROUP BY Colonnes utilises dans les fonctions dagrgation Les colonnes ne pas indexer : Colonnes rarement rfrences ou contenant des types bit, text ou image ou type CLR Colonnes contenant peu de valeurs uniques

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 30/38

IV.2 ARCHITECTURE ET CREATION DINDEX Un index ordonn en clusters trie physiquement les lignes dune table ; un index non ordonn en clusters sappuie sur les informations demplacement de stockage contenues dans les pages dindex pour naviguer vers les pages de donnes (on parle de tri logique). Une table ne peut possder quun seul index ordonn en clusters, car ses lignes ne peuvent tre stockes que dans un seul ordre physique ; lordre physique des lignes de lindex et lordre des lignes de lindex sont identiques (il est conseill de crer cet index avant tout autre). Les index non ordonns en clusters sont les index par dfaut de SQL Server (249 maximum par table) et sont intressants lorsque les utilisateurs souhaitent rechercher des donnes de plusieurs faons. Exemple : sur une table client, un index ordonn en clusters serait construit sur le code, des index non ordonns en clusters pourraient tre construits sur les colonnes nom et catgorie. Linstruction CREATE INDEX de Transact-Sql ou loption Nouvel Index dans le menu contextuel du nud Index de la table choisie de SQL Server Management Studio peuvent tre utiliss pour la cration dindex. Linstruction DROP INDEX supprimera lindex. Un index est automatiquement cr lorsquune contrainte PRIMARY KEY ou UNIQUE est ajoute une table. Depuis SQL Server 2000, il est possible de crer des index sur des vues et des colonnes calcules. SQL Server stocke les informations sur les index dans la vue sys.indexes. Dans la plupart des cas, il est prfrable dutiliser la contrainte UNIQUE plutt quun index unique. Linstruction CREATE INDEX chouera sil existe des doublons dans la colonne indexer.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 31/38

IV.3 AFFICHER LES PROPRIETES DES INDEX

Loption Proprits dans le menu contextuel dun index donn du nud Index de la table choisie de SQL Server Management Studio comporte plusieurs pages pour afficher et grer des proprits de lindex. La page Gnral affiche en particulier le nom, le type dindex et donne la possibilit dajouter ou supprimer des colonnes lindex. La page Options permet de dfinir les options pour reconstruire lindex, recalculer les statistiques, dfinir le taux de remplissage, utiliser les verrouillages de page ou de ligne. La page Colonnes Incluses permet dafficher et de grer des colonnes supplmentaires aux colonnes dindex. La page Stockage liste la configuration de stockage La page Fragmentation permet dafficher les donnes de fragmentation de lindex pour dterminer le besoin de rorganisation. La fragmentation des donnes se produit lorsque des lignes sont ajoutes des pages pleines qui doivent alors tre spares. Ce phnomne peut nuire aux performances ; il est donc ncessaire de reconstruire priodiquement les index fragments. Pour dterminer sil y a fragmentation, on utilisera soit longlet Fragmentation des proprits de lindex dans studio Management.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 32/38

On pourra utiliser la vue systme sys.dm_db_index_physical_stats qui peut afficher pour une base donnes (ou toutes les bases), pour une table donne (ou toutes les tables) , pour un index donn (ou tous les index) les informations de fragmentation. Les options FILLFACTOR/ PAD INDEX permettent doptimiser les performances des instructions INSERT et UPDATE : lorsquune page est remplie, SQL SERVER doit sparer la page de manire faire de la place pour les nouvelles lignes ; loption FILLFACTOR permet dindiquer le pourcentage du taux de remplissage souhait ; le fait de laisser de lespace libre dans chaque page rduit le recours la sparation de page, mais augmente la taille de lindex. IV.4 UTILISATION DE LINSTRUCTION CREATE INDEX Seul le propritaire de la table ou de la vue peut crer des index sur celle-ci, qu'il y ait ou non des donnes dans la table. Syntaxe sous Transact-SQL : CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX nom_index ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) [ WITH [PAD INDEX= ON | OFF] [ [,] FILLFACTOR = taux_remplissage] [ [,] IGNORE_DUP_KEY = ON | OFF] [ [,] DROP_EXISTING] [ [,] STATISTICS_NORECOMPUTE] [ [,] SORT_IN_TEMPDB] ] [ON groupe_fichiers] UNIQUE Si le mot-cl UNIQUE nest pas spcifi dans linstruction CREATE INDEX, les doublons sont autoriss dans lindex. CLUSTERED | NONCLUSTERED Spcifie si lordre physique des lignes est dpendant / indpendant de lordre des cls : si le mot cl CLUSTERED nest pas spcifi, cest un index non ordonn en clusters qui est cr PAD INDEX= ON | OFF Spcifie si le taux de remplissage indiqu dans le paramtre FILLFACTOR est appliqu ou non aux pages dindex L'option PAD_INDEX est utile seulement si FILLFACTOR est spcifi FILLFACTOR = taux_remplissage Taux de remplissage des pages dindex (entre 1 et 100) ; si la valeur est 0 ou 100, les pages sont remplies compltement. IGNORE_DUP_KEY= ON | OFF Lors de linsertion dune cl en double, avec la valeur ON, seules les lignes qui ne respectent pas lunicit sont omises ; avec la valeur OFF, lensemble de la transaction est annule.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 33/38

Exemple 1 : Cration dun index nomm IX_Nom sur la colonne Nom de la table EMPLOYES. CREATE INDEX IX_Nom ON EMPLOYES (Nom) Lexcution de CREATE INDEX avec loption DROP_EXISTING permet de reconstruire un index existant ou modifier ses caractristiques : son type possibilit de transformer un index non ordonn en clusters en index ordonn en clusters (linverse ntant pas possible) ou transformation dun index unique en index non unique et inversement. Ses colonnes indexes possibilit dajouter ou retirer ou spcifier dautres colonnes Ses options modification possible des options FILLFACTOR/PAD_INDEX

Exemple 2 : Re-construction de lindex existant IX_NOM. CREATE UNIQUE INDEX IX_Nom ON EMPLOYES (Nom, Prenom) WITH DROP_EXISTING Lassistant paramtrage dindex permet danalyser une charge de travail et met des recommandations concernant les index rajouter aux tables analyses.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 34/38

V LES VUES
Une vue permet de stocker une requte prdfinie sous forme dobjet de base de donnes, pour une utilisation ultrieure. Avantages :

Mise en valeur des donnes pour les utilisateurs Les donnes utiles sont slectionnes, les donnes inutiles ou stratgiques sont occultes Masquage de la complexit de la base de donnes Les requtes complexes sont simplifies. Simplification de la gestion des autorisations des utilisateurs Les autorisations peuvent tre donnes aux utilisateurs deffectuer des requtes uniquement par le biais de vues. Amlioration des performances Les vues permettent de stocker les rsultats de requtes complexes ; dautres requtes peuvent utiliser ces rsultats rcapitulatifs ; Organisation des donnes pour les exporter vers dautres applications V.1 CREATION

Tout membre du rle sysadmin, db-owner, ou db-ddladmin, ou tout utilisateur ayant lautorisation CREATEVIEW et lautorisation SELECT sur les tables mentionnes dans la vue peut crer une vue. CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] [ WITH { ENCRYPTION | SCHEMABINDING | VIEW_METADATA } ] AS select_statement [ WITH CHECK OPTION ] Si vous ne spcifiez pas l'argument column, les colonnes de la vue prennent le mme nom respectif que les colonnes indiques dans l'instruction SELECT La clause SELECT moyennant quelques restrictions Pas de clause COMPUTE ou COMPUTE BY Pas de clause ORDER BY sans clause TOP Pas de rfrence une table temporaire . comporte toutes les clauses dune instruction SELECT classique. ENCRYPTION Le texte de cration de linstruction CREATE VIEW, stock dans la table systme sys.syscomments est chiffr. Attention : Pour dcrypter une vue, il faut la supprimer et la recre ou la modifie partir du texte dorigine.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 35/38

SCHEMABINDING Lajout de cette clause permet de garantir que les tables ou vues dpendantes ne seront pas supprimes. VIEW_METADATA Cette clause permet de retourner des informations de mta donnes sur la vue, et non pas sur les tables de base. WITH CHECK OPTION Cette option impose que toutes les instructions de modification de donnes excutes sur la vue respectent le critre dfini dans la clause Select. Exemple : Cration dune vue permettant de faciliter la consultation des informations situes dans les 2 tables Employes et Depart sans visualiser la colonne salaire. EMPLOYES (NOEMP, NOM, PRENOM, DEPT, SALAIRE) DEPART (NODEPT, NOMDEPT) CREATE VIEW dbo.VueEmp (NumEmp, Nom, Prenom, Dep) AS SELECT Noemp, Nom,Prenom,Wdept FROM Employes JOIN Depart On Nodept = Wdept V.2 MISES A JOUR DE VUES Les vues ne conservent pas une copie spares des donnes : elles affichent lensemble des donnes des tables rfrences. Moyennant certaines restrictions : La vue doit tre dfinie sur une seule table Une colonne rsultant dun calcul ne peut pas tre modifie. les modifications sont permises sur les vues.

V.3 LES VUES PARTITIONNEES Une vue partitionne est dfinie par une opration UNION ALL portant sur des tables membres structures de faon identique, que ce soit sur une seule instance de SQL Server ou dans un groupe d'instances autonomes SQL Server. Les vues partitionnes cres sur des tables qui sont locales un serveur sont incluses dans SQL Server 2005 des fins de compatibilit ascendante uniquement, et elles seront prochainement obsoltes. Pour un partitionnement local des donnes, la mthode recommande consiste recourir des tables partitionnes. Si les tables dune vue partitionne se trouvent sur des serveurs diffrents, toutes les tables impliques dans la requte peuvent tre analyses en parallle, ce qui accrot les performances pour cette requte.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 36/38

V.4 LES VUES INDEXEES Des index peuvent tre crs sur des vues. Une vue indexe stocke lensemble des rsultats dune vue dans la base de donnes. En raison de leur faible temps dextraction, les vues indexes peuvent tre utilises pour amliorer les performances dune requte. Une vue indexe est cre en implmentant un index UNIQUE CLUSTERED su la vue. Dautres index peuvent tre cres. Une vie indexe renvoie les modifications effectues sur les donnes dans les tables de base ; lindex UNIQUE CLUSTERED est mis jour mesure que les donnes sont modifies.

V.5 MODIFICATION / SUPPRESSION Une vue peut tre modifie par ALTER VIEW, et supprime par DROP VIEW.

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 37/38

Etablissement rfrent
Marseille Saint Jrme

Equipe de conception
Elisabeth Cattano

Remerciements :

Reproduction interdite
Article L 122-4 du code de la proprit intellectuelle. toute reprsentation ou reproduction intgrale ou partielle faite sans le consentement de lauteur ou de ses ayants droits ou ayants cause est illicite. Il en est de mme pour la traduction, ladaptation ou la reproduction par un art ou un procd quelconques.

Date de mise jour 05/05/2008 afpa Date de dpt lgal mai 08

Cration de bases de donnes SQL Server afpa 2008 Informatique et tlcoms filire tude - dveloppement 38/38

Vous aimerez peut-être aussi