Langage de définition des données

publicité
SQL Structured Query Language
Langage de définition des
données
INT Management
148
Plan du document
Introduction
Définition des données
Contraintes d’intégrité
slide 150
slide 152
slide 159
149
Présentation de SQL
Introduction
Fonctionnalités :
définition et manipulation de données au format
relationnel
contrôle des données
Le langage de manipulation
non procédural
emprunté à l'algèbre relationnelle et au calcul
relationnel de tuples
150
Présentation de SQL (2)
Introduction
Origine
langage SEQUEL du prototype de SGBD relationnel
SYSTEM/R (74-76)
laboratoire de recherche IBM à San José
Normalisation ISO
norme SQL1 (1986, 1989)
norme SQL2 (1992)
nouvelle norme en préparation SQL3
Langage de requêtes des SGBD relationnels
ORACLE (Oracle Corporation - 1977)
INGRES (Ingres Technology - 1980)
DB2 (IBM - 1984)
INFORMIX (Informix Inc - 1981)
SYBASE (Sybase Inc - 1984)
MySQL (1995)
151
Définition des données
Définition des données
définition des schémas des relations
définition de vues relationnelles
définition de contraintes d'intégrité
définition de droits
validation d'un traitement
définition du placement et des index
(non normalisé => SGBD dépendant !!)
152
LDD SQL vs. Modèle relationnel
Domaines limités
Clé facultative :
Doublons
Opérateur de projection différent ( DISTINCT)
Relation n’est plus un ensemble
153
Domaines de base
Numériques :
Définition des données
Entier : INTEGER, SMALLINT
Décimal : DECIMAL (m,n), NUMBER(m,n)
Réel flottant : FLOAT, REAL
Chaîne de caractères : CHAR (n), VARCHAR(n)
Temporel : DATE (dans la norme SQL2 !)
chaque SGBD possède d'autres domaines qui lui
sont propres
Valeur NULL : absence de valeur
154
Schéma d’une relation
Définition des données
Création
CREATE TABLE Vins (
num Integer,
cru Char(20),
annee Integer)
Mise à jour
Ajout d'un attribut (norme SQL2 !)
ALTER TABLE Vins ADD COLUMN degre Integer
Suppression (norme SQL2 !)
DROP TABLE Vins
155
BD Exemple: les vins
Vins(num, cru, annee, degre)
Recoltes(nvin, nprod, quantite)
Producteurs(num, nom, prenom, region)
Buveurs(num, nom, prenom, ville)
Commandes(ncde, date, nb, nvin, qte)
Livraisons(ncde, no_ordre, qteLivree)
BD Exemple
V
R
P
B
C
L
156
Modèle E/A de la BD des vins
Vins
Buveurs
num
cru
degré
annee
0,n
recoltes
BD Exemple
num
nom
prenom
ville
0,n
0,n
concerne
Passer
quantite
0,n
Producteurs
num
nom
prenom
region
1,1
1,1
Commandes
ncde
qté
date
0,n
Donner_lieu
Livraisons
(1,1)
No_ordre
qteLivrée
date
157
Exemple en SQL
CREATE TABLE VINS (
num integer,
cru char (40),
annee integer,
degre float)
CREATE TABLE PRODUCTEURS (
num integer,
nom char(40),
prenom char(40),
region char(40))
CREATE TABLE RECOLTES(
nprod integer,
nvin integer,
quantite integer)
158
Contraintes d’intégrité
Règles de gestion des données
Etat cohérent de la base
Vérifiées en permanence
159
Exemples de contraintes d’intégrité
Modèle relationnel :
Schéma de la BD Vins
Vins(num, cru, annee, degre)
Producteurs(num, nom, prénom, region)
Unicité de la clé (num dans vins)
CI référentielle (nvin vers num)
Domaine :
Année entre 1970 et 2000
Région : ‘ Bourgogne ’,
‘ Beaujolais ’, …
Non nullité :
Nom de cru de vin obligatoire
Recoltes(nprod, nvin, quantité)
Comportementale:
Le degré d’un vin est supérieur à 7
Le degré d’un vin augmente
160
Les CIs dans les SGBD
Quand les déclarer ?
Comment les exprimer?
À la création du schéma de BD
Au cours de la vie de la BD
SQL
Extensions de SQL
Qu’offrent les SGBD ?
Peu de CIs en général
Autres CIs vérifiées par programme
161
Les CIs dans les SGBD (2)
Normes :
SQL 86 : unicité, non nullité, vue avec « check option »
SQL89 : domaine, clé, intégrité référentielle avec « rejet »
SQL2 (SQL92) : intégrité référentielle avec «cascade
delete et update »
Définition d ’une CI
2 possibilités:
À chaque définition d’attribut
À la fin de la définition d’une relation
162
Exemple
CREATE TABLE VINS (
num integer PRIMARY KEY,
cru char (40) NOT NULL,
annee integer CONSTRAINT Cannee
CHECK (annee between 1970 and 2000),
degre float CONSTRAINT Cdegre
CHECK (degre between 9.0 and 15.0))
CREATE TABLE PRODUCTEURS (
num integer,
nom char(40),
prenom char(40),
region char(40)
PRIMARY KEY(num))
ALTER TABLE PRODUCTEURS
add CONSTRAINT Cregion CHECK
(region in ('Bourgogne', 'Beaujolais',
'Alsace', 'Jura', 'Corse'))
CREATE TABLE RECOLTES(
nprod integer,
nvin integer,
quantite integer)
ALTER TABLE RECOLTES
add primary key (nprod, nvin)
ALTER TABLE RECOLTES
add constraint refVIN
foreign key (nvin)
references
VINS(num) on delete cascade
ALTER TABLE RECOLTES
add constraint refREP
foreign key (nprod)
references
PRODUCTEURS(num) on delete
cascade
163
Problèmes liés aux CIs
Cohérence
Redondance
Pas de règles contradictoires
Age > 18 et âge > 21
Optimisation
Nombre minimal de données mises à jour en jeu pour la
vérification
Vérification sur certains types de màj uniquement
164
Téléchargement