Académique Documents
Professionnel Documents
Culture Documents
Objectifs d’apprentissage
Les stagiaires vont apprendre à :
Normaliser une base de données
Utiliser les clés primaire, étrangère et composite
Utiliser les index en cluster et non-cluster
Compétences ODN
Comprendre la normalisation. 4.1
Comprendre les clés primaire, étrangère et composite. 4.2
Comprendre les index. 4.3
4-1
Termes clés
clé composite : définit plus d’une colonne comme clé primaire.
clé étrangère : contrainte référentielle entre deux tables.
clé primaire : attribut ou ensemble d’attributs pouvant être utilisé pour identifier de
façon unique la ligne.
contrainte de clé étrangère : définit une relation entre deux tables.
contrainte unique : mécanisme vous permettant d’appliquer la propriété unique des
colonnes, autre qu’une clé primaire dans une table.
deuxième forme normale : garantit que chaque attribut décrit, en réalité, l’entité. Elle est
entièrement basée sur la dépendance et sur le fait que les attributs de l’entité en question,
qui ne fait pas partie d’une clé candidate, doivent être fonctionnellement dépendants de la
clé primaire toute entière.
données redondantes : les mêmes données s’affichent dans la même table.
forme : critère de détermination du degré de vulnérabilité d’une table aux incohérences
et anomalies logiques.
index en cluster : définit la manière dont SQL Server ordonnera les données stockées
dans la table. Et puisque ces données peuvent être triées d’une seule et même façon,
il n’est tout simplement pas possible d’avoir deux index en cluster sur la même table.
index non-cluster : contient les valeurs de clés d’index non-cluster, et chacune de ces
clés a un pointeur vers une ligne de données contenant la valeur de clé.
normalisation : élimination des données redondantes pour libérer de l’espace.
première forme normale (1NF) : les données sont sous forme d’entité ; autrement dit,
les trois conditions suivantes doivent être réunies : la table ne doit pas avoir de doublons
en termes d’enregistrement ; la table doit également ne pas avoir d’attributs à valeurs
multiples et les entrées de la colonne ou de l’attribut ont un type de données identique.
troisième forme normale : vérifie les dépendances transitives.
4-2
Leçon 4
Présentation du stockage
des données
Vrai ou faux
QCM
4-3
2. Parmi les propositions suivantes, laquelle peut contribuer à accélérer la
récupération des données ? (Choisissez 2 réponses)
a. contraintes PAR DÉFAUT
b. contraintes de CLÉ PRIMAIRE
c. index EN CLUSTER
d. contraintes de CLÉ ÉTRANGÈRE
3. Parmi les affirmations suivantes, lesquelles sont vraies ? (Choisissez toutes
les réponses applicables.)
a. Un plus grand nombre de tables étroites (avec moins de colonnes)
est une caractéristique d’une base de données normalisée.
b. Quelques tables larges (avec davantage de colonnes) sont
caractéristiques d’une base de données normalisée.
c. Les index permettent une récupération plus rapide des données
d. Des performances optimales de la base de données sont possibles en
indexant chaque colonne d’une table.
4. Parmi les affirmations suivantes, laquelle n’est pas exacte par rapport aux
clés étrangères ?
a. Une clé étrangère est une association d’une, voire de plusieurs
colonnes utilisées pour établir et appliquer un lien entre les
données de deux tables.
b. Vous pouvez créer une clé étrangère en définissant une contrainte
de clé étrangère lorsque vous créez ou modifiez une table.
c. Une clé étrangère applique l’intégrité référentielle en garantissant
que seules les données valides sont stockées.
d. Une table ne peut contenir qu’une clé étrangère.
5. Envisagez l’utilisation d’un index en cluster dans les cas suivants :
(Choisissez toutes les réponses applicables.)
a. Les colonnes contiennent un grand nombre de valeurs distinctes.
b. Les colonnes sont accessibles de manière séquentielle
c. Les colonnes subissent des modifications fréquentes
d. Les requêtes retournent d’importants jeux de résultats.
6. Quelle forme normale garantit que chaque attribut décrit l’entité ?
a. 1NF
b. 2NF
c. 3NF
d. 4NF
7. Parmi les propositions suivantes, laquelle ne pourrait pas être utilisée
comme clé primaire ?
a. Un numéro de sécurité sociale
b. Une adresse
c. Un numéro d’employé
d. Le numéro de série d’un composant électronique
4-4
8. Combien d’index en cluster pouvez-vous avoir pour une base de données ?
a. 1
b. 2
c. 4
d. 8
9. Quel est le nom de la situation dans laquelle plusieurs colonnes agissent
comme clé primaire ?
a. Clé primaire composite
b. Clé d’escalade
c. Clé étrangère
d. Clé de contrainte
10. Lorsque vous définissez une clé primaire, quels critères devez-vous
satisfaire ?
a. 1NF
b. 2NF
c. 3NF
d. 4NF
4-5
Scénario 4-2 : Comparaison des index en cluster et des index non-cluster
Votre patron souhaite accélérer les choses sur le serveur de la base de données. Ainsi,
il pense vous confier la tâche consistant à créer quelques index. Puis il vous demande
d’expliquer les avantages et les inconvénients de créer un index en cluster par rapport
à un index non-cluster. Que lui répondez-vous ?
Vous expliquez que vous ne pouvez créer qu’un seul index en cluster, parce
qu’il réorganise effectivement les enregistrements sur le disque dur. Une base de
données peut avoir plusieurs index non-cluster, parce qu’une arborescence d’index,
créée de manière ordonnée, est utilisée plutôt qu’une réorganisation effective des
enregistrements. L’index en cluster vous offrira de meilleures performances pour
ce type spécifique de recherche, mais cela nécessite des ressources qu’elles créent
et maintiennent un tel index.
Évaluation de la maîtrise
Scénario 4-3 : Créez un index en cluster
Vous occupez le poste de DBA au sein d’AdventureWorks Corporation. Vous
avez récemment créé certaines bases de données et vous avez commencé à réaliser
l’importance que va prendre la base de données à l’avenir. Par conséquent, vous
devez créer un nouvel index en cluster pour favoriser les performances globales.
À l’aide de l’interface graphique SSMS, quelles sont les étapes que vous pouvez utiliser
pour créer un nouvel index en cluster sur la colonne de nom pour la base de données
AdventureWorks ?
Au cours de cet exercice, les étudiants créeront le planning de référence pour la requête qui devra
être optimisée en l’exécutant sans ajouter de nouveaux index.
Avant de commencer : Avant de commencer cet exercice, les éléments suivants doivent être installés
sur leurs ordinateurs :
SQL Server 2008 (si vous n’avez pas de copie, vous pouvez télécharger
une copie gratuite)
L’exemple de base de données AdventureWorks que vous devrez
télécharger gratuitement sur le site Web de Microsoft SQL Server à
l’adresse http://msftdbprodsamples.codeplex.com/releases/view/24854
Si SQL Server Management Studio n’est pas déjà ouvert, vous pouvez le faire en cliquant sur
Démarrer | Tous les programmes | Microsoft SQL Server 2008 | SQL Server Management Studio.
1. Cliquez sur la base de données avec laquelle vous allez travailler par rapport
à la base de données AdventureWorks et développez le dossier des tables.
2. Cliquez avec le bouton droit sur le dossier Index et cliquez sur « Nouvel index ».
3. Dans la boîte de dialogue « Nom de l’index », nommez votre nouvel index.
4. Spécifiez le type d’index que vous souhaitez créer. Dans cet exemple, nous
sélectionnerons « en cluster » dans le menu déroulant. Cliquez sur le bouton
« Ajouter ».
5. Une nouvelle fenêtre, la boîte de dialogue Sélectionner des colonnes dans, s’ouvrira
afin de vous permettre de sélectionner quelle colonne vous souhaitez ajouter. Vous
pouvez ensuite cliquer sur OK.
6. Vous pouvez maintenant cliquer sur le bouton OK pour finir la création de votre
index, ou vous pouvez ajouter davantage de fonctionnalités avancées à la colonne.
4-6
En ce qui nous concerne, dans le cadre de cet exercice, veuillez cliquer sur le bouton
OK pour terminer la création.
Scénario 4-4 : Créer un index en cluster à l’aide de Transact-SQL
En tant que DBA, vous devez accroître les performances de la table PlanetsID. Par
conséquent, vous décidez de créer un index en cluster. Mais plutôt que d’utiliser SSMS,
vous optez pour les requêtes afin d’exécuter cette tâche. Par conséquent, vous créez une
nouvelle base de données PlanetsID à l’aide des commandes suivantes dans SSMS :
IF EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo] . [PlanetsID]')
AND type in (N’U’))
USE AdventureWorks2008
DROP TABLE [dbo].[PlanetsID]
GO
USE [AdventureWorks2008]
GO
CREATE TABLE [dbo].[PlanetsID](
[ID] [int] NOT NULL,
[Item] [int] NOT NULL,
[Value] [int] NOT NULL
) ON [PRIMARY]
GO
INSERT INTO PlanetsID VALUES (4, 23, 66)
INSERT INTO PlanetsID VALUES (1, 12, 59)
INSERT INTO PlanetsID VALUES (3, 66, 24)
SELECT * FROM PlanetsID
GO
Vous devez maintenant voir le résultat dans le volet des résultats (sous la fenêtre de
l’éditeur de requête), à savoir ce qui suit :
ID Item Value
4 23 66
1 12 59
3 66 24
Maintenant que vous avez une base de données avec des données, quelles étapes pouvez-vous
utiliser pour créer un index en cluster selon la colonne ID ?
1. Dans SQL Server Management Studio, développez la base de données
AdventureWorks2008, puis les tables (si pas déjà développées) et recherchez
la table que vous venez de créer et d’appeler PlanetsID.
2. Cliquez avec le bouton droit sur le dossier Index, sous la table PlanetsID et sélectionnez
Nouvel index dans le menu déroulant. La boîte de dialogue de propriété Nouvel index
s’ouvre.
4-7
3. Dans le champ Nom de l’index, tapez IX_ID). Dans le menu Type d’index, sélectionnez
En cluster à partir du menu déroulant. Cliquez sur le bouton Ajouter, puis sélectionnez
Colonne ID, pour enfin cliquer sur le bouton OK.
4. Sélectionnez le bouton Nouvelle requête à partir de la barre d’outils et tapez la syntaxe
suivante dans la fenêtre de l’éditeur de requête, puis cliquez sur le boutonExécuter :
SELECT * FROM PlanetsID
Lors de l’exécution de la commande, les résultats seront retournés comme
données triées puisqu’elles devront être ordonnées dans une structure en arbre
B. La clé primaire est la colonne ID. Par conséquent, les données sont triées
selon la clé primaire :
ID Item Value
1 12 59
3 66 24
4 23 66
Vous pouvez définir maintenant une table d’index non-cluster en fonction des
connaissances que vous avez reçues lors de la configuration d’un index en
cluster. L’unique différence lors de l’utilisation d’instructions Transact-SQL
réside dans l’ajout de « NX » devant le champ Nom de l’index pour l’identifier
comme valeur non-cluster. N’oubliez pas, vous ne pouvez pas créer une ligne
non-cluster sur une ligne déjà en cluster.
4-8