Vous êtes sur la page 1sur 8

Leçon 

Présentation du stockage des données

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

Résumé de la leçon — Notes sur le cours


La leçon 4 vise à présenter la normalisation de la base de données à l’aide des clés
et des index afin de pouvoir tirer le meilleur parti de la base de données. La première
discussion porte sur la normalisation d’une base de données. Définissez la normalisation,
puis discutez des différents niveaux de normalisation. Lorsque vous évoquez la première
forme normale (1NF), vous devez mentionnez que si la table a une clé primaire, la base
de données atteint automatiquement 1NF. La meilleure façon de parler de chacune des
formes normales consiste à présenter un exemple migrant de 1NF vers 5NF.
La section suivante et majeure de la leçon porte sur l’utilisation des clés primaire,
étrangère et composite. En outre, les clés de contrainte uniques sont évoquées pour
assurer que chaque enregistrement est unique. Vous devez proposer des exemples
d’utilisation des clés primaire et étrangère et expliquer comment elles sont liées
l’une à l’autre.
Lors de la dernière grande section de la leçon, il convient d’aborder les index en cluster
et non-cluster. Veillez à ce que les stagiaires comprennent bien que les index en cluster
sont des données disposées physiquement sur le disque et que chaque table ne peut
avoir qu’un seul index en cluster. Chaque base de données peut avoir plusieurs index
non-cluster, puisqu’ils sont disposés de façon logique et non réorganisés sur le disque.
Vous devez enfin terminer la leçon en présentant la procédure à suivre pour créer des
index en cluster et des index non-cluster.

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

Entourez V si l’affirmation est vraie ou F si elle est fausse.


V F 1. La création d’une clé primaire répond aux critères de la première
forme normale.
V F 2. Les tables d’une base de données doivent répondre à l’ensemble
des 5 formes normales afin d’optimiser les performances.
V F 3. Une clé primaire peut contenir des valeurs NULL.
V F 4. Un index EN CLUSTER améliore généralement les performances
lors de l’insertion de données.
V F 5. Une table ne peut contenir qu’un seul index EN CLUSTER.

Compléter l’espace vide

Complétez les phrases suivantes en écrivant le ou les mots corrects dans


l’espace fourni.
1. La normalisation est l’élimination des données redondantes pour libérer
de l’espace.
2. La valeur d’une clé primaire doit être unique.
3. Une clé étrangère fonctionne en conjonction avec une clé primaire ou des
contraintes uniques pour appliquer l’intégrité référentielle entre les tables.
4. Ajoutez un index à une, voire plusieurs colonnes pour accélérer la
récupération des données.
5. Les valeurs d’un index EN CLUSTER sont triées.

QCM

Entourez la lettre correspondant à la bonne réponse.


1. Parmi les propositions suivantes, laquelle n’est pas une contrainte ?
a. CHECK
b. DEFAULT
c. UNIQUE
d. INDEX

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

Évaluation des compétences


Scénario 4-1 : Étude de la première forme normale 1NF
Votre patron vous remet une clé USB sur laquelle figure la base de données suivante :
Modèle Caractéristiques
PC-1000 Dell OptiPC 200XD, 2 Ghz, 512 Mo RAM, 40 Go HD
PC-1250 Dell SlimPC 400LX, 2,25 Ghz, 2 Go RAM, 160 Go HD
PC-1500 Dell OptiPC 300XD 1,5 Ghz, 4 Go RAM, 200 GN HD
Il souhaite que vous commenciez à utiliser cette base de données. Il souhaite savoir ce qui
ne va pas avec la base de données et il demande s’il y a quelque chose à faire par rapport
à ça. Que devez-vous lui dire ?
Expliquez-lui que la table ne doit pas avoir de doublons en termes d’enregistrements
et qu’elle ne doit pas avoir d’attributs à valeur multiple. Expliquez que vous devez
prendre ces caractéristiques et les fractionner en leurs propres champs, puis
attribuer des noms significatifs aux différentes caractéristiques.

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

Vous aimerez peut-être aussi