IV.2. Le langage de définition des
données (LDD) [31]
Le langage de définition de données (LDD, ou
Data Definition Language, soit DDL en anglais) est un langage orienté au
niveau de la structure de la base de données. Le LDD permet de
créer, modifier, supprimer des objets. Il permet également de
définir le domaine des données (nombre, chaîne de
caractères, date, booléen, . . .) et d'ajouter des contraintes
de
67
valeur sur les données. Ces choses étant dit, il
permet enfin d'autoriser ou d'interdire l'accès aux données et
d'activer ou de désactiver l'audit pour un utilisateur donné.
Les instructions du LDD sont : CREATE, ALTER, DROP, AUDIT,
NOAUDIT, ANALYZE, RENAME, TRUNCATE.
IV.2.1. Notion aux contraintes
d'intégrité
Soit le schéma relationnel minimaliste suivant : - Acteur
(Num-Act, Nom, Prénom), - Jouer (Num-Act, Num-Film), -
Film (Num-Film, Titre, Année),
1. Contrainte d'intégrité de
domaine
On ne cesse de parler de cette contrainte
d'intégrité de domaine sans expliquer la cause. Toute comparaison
d'attributs n'est acceptée que si ces attributs sont définis sur
le même domaine. Le SGBD doit donc constamment s'assurer de la
validité des valeurs d'un attribut. C'est pourquoi la commande de
création de table doit préciser, en plus du nom, le type de
chaque colonne.
Par exemple, pour la table Film, on précisera que le
Titre est une chaîne de caractères et l'Année une date.
Lors de l'insertion de n-uplets dans cette table, le système s'assurera
que les différents champs du n-uplet satisfont les contraintes
d'intégrité de domaine des attributs précisées lors
de la création de la base. Si les contraintes ne sont pas satisfaites,
le n-uplet n'est, tout simplement, pas inséré dans la table.
2. Contrainte d'intégrité de relation (ou
d'entité)
Ces choses étant dites, lors de l'insertion de
n-uplets dans une table (i.e. une relation), il arrive qu'un attribut soit
inconnu ou non défini. On introduit alors une valeur conventionnelle
notée NULL et appelée valeur nulle.
Cependant, une clé primaire ne peut avoir une valeur
nulle. De la même manière, une clé primaire doit toujours
être unique dans une table. Cette contrainte forte qui porte sur la
clé primaire est appelée contrainte d'intégrité de
relation.
Il convient de noter que tout SGBD relationnel doit
vérifier l'unicité et le caractère défini (NOT
NULL) des valeurs de la clé primaire.
3. Contrainte d'intégrité de
référence
Dans tout schéma relationnel, il existe deux types de
relation :
? Les relations qui représentent des entités de
l'univers modélisé ; elles sont qualifiées de statiques,
ou d'indépendantes ; les relations Acteur et Film en sont des exemples
;
68
? Les relations dont l'existence des n-uplets dépendent
des valeurs d'attributs situées dans d'autres relations ; il s'agit de
relations dynamiques ou dépendantes ; la relation Jouer en est un
exemple.
--Lors de l'insertion d'un n-uplet dans la relation Jouer, le
SGBD doit vérifier que les valeurs Num-Act et Num-Film correspondent
bien, respectivement, à une valeur de Num-Act existant dans la relation
Acteur et une valeur Num-Film existant dans la relation Film.
--Lors de la suppression d'un n-uplet dans la relation Acteur,
le SGBD doit vérifier qu'aucun n-uplet de la relation Jouer ne fait
référence, par l'intermédiaire de l'attribut Num-Act, au
n-uplet que l'on cherche à supprimer. Le cas échéant,
c'est-à-dire si une, ou plusieurs, valeur correspondante de Num-Act
existe dans Jouer, quatre possibilités sont envisageables :
? interdire la suppression ;
? supprimer également les n-uplets concernés dans
Jouer ;
? avertir l'utilisateur d'une incohérence ;
? mettre les valeurs des attributs concernés à une
valeur nulle dans la table Jouer,
si l'opération est possible (ce qui n'est pas le cas si
ces valeurs interviennent dans une clé primaire) ;
Les types de données
Les types de données peuvent être :
INTEGER : Ce type permet de stocker des entiers signés
codés sur 4 octets.
BIGINT : Ce type permet de stocker des entiers signés
codés sur 8 octets.
REAL : Ce type permet de stocker des réels comportant 6
chiffres significatifs codés sur 4 octets.
DOUBLE PRECISION : Ce type permet de stocker des réels
comportant 15 chiffres significatifs codés sur 8 octets.
NUMERIC[(précision, [longueur])] : Ce type de
données permet de stocker des données numériques à
la fois entières et réelles avec une précision de 1000
chiffres significatifs. longueur précise le nombre maximum de chiffres
significatifs stockés et précision donne le nombre maximum de
chiffres après la virgule.
CHAR(longueur) : Ce type de données permet de stocker des
chaînes de caractères de longueur fixe. longueur doit être
inférieur à 255, sa valeur par défaut est 1.
VARCHAR(longueur) : Ce type de données permet de stocker des
chaînes de caractères de longueur variable. longueur doit
être inférieur à 2000, il n'y a pas de valeur par
défaut. DATE : Ce type de données permet de stocker des
données constituées d'une date.
69
TIMESTAMP : Ce type de données permet de
stocker des données constituées d'une date et
d'une heure.
BOOLEAN : Ce type de données permet de
stocker des valeurs Booléenne.
MONEY : Ce type de données permet de
stocker des valeurs monétaires.
TEXT : Ce type de données permet des
stocker des chaînes de caractères de longueur variable.
|