Système de Gestion de Base de Dones Relationnelle
Une base de données relationnelle repose sur des concepts simples :
1. des tables à deux dimensions qui contiennent des données :
un nombre statique de colonnes qui représentent les attributs
(la valeur d’un attribut peut être “ nul ”),
un nombre dynamique de lignes (n-uplets ou tuples) qui représentent les instances
Annuaire ID Nom Prénom Telephone
QW01Z Dupont Paul 1122334455
QE05Z ABDI Hamed 1829364656
CW45B Gamma Erich 1922336415
HP81A Pree Wolfgang 2132536455
Figure 05 Exemple de représentation tabulaire d'une relation
2. une algèbre simple, composé d’un ensemble d’opérateurs qui facilitent la manipulation des relations :
opérations élémentaires, opérations sur des ensembles (union, différence, produit cartésien, etc.),
opérations supplémentaires (inclusion, intersection, division) ;
3. des méthodes d’accès pour optimiser les performances : index d’arbre balancé, tables de hachage, etc.
4. la théorie des formes normales qui nécessite le respect d’un effort de conception sur le modèle de base de
données (éviter et éliminer les données redondantes et acquérir une meilleure compréhension des relations
sémantiques entre les données : formes normales)
5. des règles d’intégrité :
intégrité de l’identité : unicité de la clé primaire (une par table),
intégrité des références : cohérence entre clé étrangère et clé primaire ;
intégrité de la cohérence : définie par le concepteur pour garantir la cohérence des données,
6. un Langage de Définition des Données (LDD) qui permet d’administrer des tables, attributs, vues, index,
… (CREATE, DROP, ALTER)
7. un Langage de Manipulation des Données (LMD) qui permet de manipuler les données via des
méthodes connues sous l’abréviation CRUD.
8. un Langage de Contrôle des Données (LCD) permet la gestion des transactions (COMMIT et
ROLLBACK), privilèges d’accès (GRANT et REVOKE) et connexion à un serveur.
1
nom de la relation
instance
(tuple)
Nom de lattribut
Donnée (valeur d'un attribut pour une
instance donnée)
Clé primaire
La norme SQL 2 (dit aussi SQL-92) qui fait suite à la norme SQL-89 et maintenant reconnue, souvent que
partiellement, par l'ensemble des systèmes de gestion de bases de données.
Quelques définitions :
Une table, ou relation, est un ensemble de données relatives à un même sujet
La clé primaire d'une relation est un attribut ou groupe d'attribut de la relation qui détermine univoquement tous
les autres.
Tout attribut est associé à un domaine.
Un domaine est l'ensemble de valeurs que peut prendre un attribut.
Un domaine est constitué d'un type d'une longueur et de contraintes (dites contraintes de domaines) qui réduisent
l'ensemble des valeurs permises (restriction).
Une clé étrangère dans une table est un attribut (ou ensemble d'attribut) de cette table dont la valeur est valeur
de clé primaire ou candidate dans une autre table.
Structure générale du langage
Les instructions SQL se répartissent en trois familles fonctionnellement distinctes (LDD, LMD et LCD)
LDD : permet la description de la structure de la base : table, vue, index, attributs...
CREATE, DROP, ALTER
LMD : les quatre opérations fondamentales sur les données
SELECT, INSERT, DELETE, UPDATE
LCD : pour le contrôle de données : contient
COMMIT, ROLLBACK : Les primitives de gestion des transactions.
Une transaction est un ensemble indivisible d'opérations.
GRANT, REVOKE : privilèges d'accès au données
CONNECT : connexion au serveur
SET : permet de paramétrer la session
Trois formes d'utilisation :
SQL interactif (requête avec résultat immédiat),
Module SQL (SQL intégré dans un langage de troisième génération C, Cobol...)
SQL dynamique qui est une extension du SQL intégré permettant des requêtes SQL non connues a
priori, c'est à dire au moment de la compilation.
Exemple d'API : ODBC (Open DataBase Connectivity), sous forme de bibliothèques de fonction.
JDBC (Java DataBase Connectivity), permettre à des applications Java, via des pilotes JDBC,
d'accéder à des sources de données communues.
2
1 contraintes déclaratives
Il existe 4 types de contraintes déclaratives :
1. Contraintes de domaine (sur les colonnes définissant les valeurs prises par un attribut)
2. Contraintes d'intégrité d'entité : Déclaration d'une clé primaire
3. Contraintes d'intégrité référentielle : Assure la liaison entre clés étrangères et clés primaires.
4. Les Assertions, qui permettent de définir des contraintes sur des colonnes quelconques.
Soit le MLD suivant.
Créons un ordre de création de la table Imprimante :
CREATE TABLE Imprimante
(
RefImprimante VARCHAR2(10),
CodeType CHAR(1),
DesImprimante VARCHAR2(40),
)
Puis étudions le type de contrainte que nous pourrions lui appliquer.
CONTRAINTES DE DOMAINE
Une contrainte qui permet de restreindre les valeurs d'une colonne.
NOT NULL : Interdire l'utilisation de NULL dans une colonne.
En SQL; NULL est une valeur de donnée compatible avec tout type de donnée.
Interprétation possible de la présence d'une valeur NULL : manquante, inconnue, quelconque ou
inapplicable (non-pertinente).
Ne pas confondre avec les valeurs : "", (chaîne vide), " " (espace), 0, 0.0,
DEFAULT : SI Le système n'a pas de valeur EXPLICITE à placer dans la colonne ET que la contrainte DEFAULT
est renseignée ALORS il insérera la valeur correspondante.
Exemple de valeurs par défaut selon le domaine :
DATE, TIME, DATETIME : Date système
Numérique : Zéro
Chaîne : 'Inconnu', 'même adresse',
UNIQUE Indique qu'il ne peut y avoir de valeurs dupliquées dans la colonne.
La contrainte UNIQUE peut s'appliquer à plusieurs colonnes d'une même table contrairement à la
clause PRIMARY KEY.
Peut accepter une ET UNE SEULE valeur NULL dans la colonne (à moins d'avoir spécifié la contrainte
NOT NULL bien entendu).
3
CHECK( ) La clause CHECK (expression logique) spécifie une contrainte sur les tuples d'une table. L'expression
logique est aussi appelée condition de recherche. Est rejetée toute ligne pour laquelle la condition de
recherche rendra FALSE, mais acceptera les lignes sur lesquelles la condition de recherche rendra
TRUE ou UNKNOWN.
Exemple :
CHECK (nom_pays IN (SELECT * FROM pays)) CONSTRAINT NOMPAYS_CONSTRAINT
CHECK ( (x, y) VALUES (IN ((1,2),(2,1),(1,3),(3,1))) CONSTRAINT COORD_CONSTRAINT
CRÉATION DE DOMAINE
Un même domaine peut être partagé par différents attributs dans différentes tables. Il est alors utile de
le spécifier en définissant un domaine particulier accompagné des ses contraintes. Exemple.
CREATE DOMAIN TypeQte INTEGER DEFAULT 0
CHECK (VALUE >= 0);
CREATE DOMAIN Sexe CHAR(1) DEFAULT 'M'
CHECK (VALUE IN ('M', 'F'));
CREATE DOMAIN Base10 INTEGER DEFAULT 0
CHECK (VALUE BETWEEN 0 AND 9);
CREATE DOMAIN TypePays VARCHAR(20)
CHECK (VALUE IN (SELECT nom_pays FROM pays));
CREATE DOMAIN OUI_NON VARCHAR(20)
DEFAULT 'NON'
CONSTRAINT CTR_LISTE_VALEUR CHECK (UPPER(VALUE) IN ('OUI', 'NON'))
CONTRAINTE D'INTÉGRITÉ D'ENTITÉ : CLÉ PRIMAIRE
PRIMARY KEY Indique qu'il ne peut y avoir de valeurs dupliquées dans la clé et que la contrainte NOT NULL est
automatiquement appliquée.
La contrainte PRIMARY KEY peut s'appliquer à plusieurs colonnes d'une même table (qui doivent
être déclarées NOT NULL).
CREATE TABLE Imprimante
(RefImprimante VARCHAR2(10) NOT NULL,
CodeType CHAR(1) NOT NULL,
DesImprimante VARCHAR2(40) DEFAULT 'Inconnue',
CONSTRAINT PK_IMPRIMANTE PRIMARY KEY (RefImprimante)
)
Une clé définie sur plusieurs colonnes.
CREATE TABLE Accepter
(RefCartouche VARCHAR2(12) NOT NULL,
RefImprimante VARCHAR2(10) NOT NULL,
CONSTRAINT PK_ACCEPTER PRIMARY KEY (RefCartouche, RefImprimante)
)
4
CONTRAINTE D'INTÉGRITÉ RÉFÉRENTIELLE
Le schéma est
Vue de la table qui référence
Clause REFERENCES
C'est la façon la plus simple de définir une contrainte relationnelle. La syntaxe est :
[CONSTRAINT nom de la contrainte]
REFERENCES <nom de la table référencée> [(Colonne de référence)]
Exemple.
CREATE TABLE Imprimante
(RefImprimante VARCHAR2(10) NOT NULL,
CodeType CHAR(1) NOT NULL REFERENCES Type (CodeType),
DesImprimante VARCHAR2(40) DEFAULT 'Inconnue',
CONSTRAINT PK_IMPRIMANTE PRIMARY KEY (RefImprimante)
)
Clause FOREIGN KEY
Si la clé étrangère est composée de plusieurs attributs il faut utiliser la clause FOREIGN KEY.
CREATE TABLE lig_liv
(llv_liv INTEGER NOT NULL REFERENCES livraisons,
llv_art INTEGER NOT NULL REFERENCES articles,
llv_qte INTEGER NOT NULL,
llv_cmd INTEGER NOT NULL,
PRIMARY KEY (llv_liv, llv_art),
FOREIGN KEY (llv_cmd, llv_art) REFERENCES lig_cmd
);
Remarque : La clause FOREIGN KEY peut s'utiliser même si la clé étrangère est atomique.
ALTER TABLE Imprimante
ADD CONSTRAINT FK_IMPRIMAN_RATTACHER_TYPE
FOREIGN KEY (CodeType) REFERENCES Type (CodeType)
5
<référence
Table
Référencée
ID_TR
attribut
Table qui
référence
ID_TQR
att. clé étrangère
attribut
Clauses
FOREIGN KEY
REFERENCES
ON UPDATE
ON DELETE
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !