Title: Initiation aux bases de donn
1Initiation aux bases de données et à la
programmation événementielle
- Cours N4
- langage de définition de données.
Support de cours de Souheib BAARIR. Page web
pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/su
pport.htm E-mail souheib.baarir_at_u-paris10.fr
Université Paris Ouest Nanterre la
Défense. 2009-2010.
2Tables Vs. Schémas des tables
- Une base de données comporte des Tables
(relations), dont les formats sont décrits par
les Schémas des tables - La plupart des SGBD permettent de créer ces
schémas de manière interactive à laide de
fenêtres de dialogue et dassistants (Access,
Query,). - Cependant, SQL prévoit des instructions
particulières pour gérer les schémasCest ce
quon appel le Langage de Définition de Données
(LDD).
3LDD en SQL
- Plusieurs types de requêtes
- dinterrogation (LID).
- de manipulation (LMD).
- de définition (LDD).
- CREATE TABLE créer une table.
- ALTER TABLE modifier une table.
- DROP TABLE supprimer une table.
4Création de table syntaxe générale (simplifiée)
La création dune table est prévue en SQL via
linstruction CREATE TABLE.
CREATE TABLE table ( champ1 type (taille)
NOT NULL ,champ2 type (taille) NOT
NULL ,CONSTRAINT nom PRIMARY KEY (champi
, champj , ) UNIQUE
(champk , champl , ) FOREIGN
KEY (champm , champn , )
REFERENCES tableE (champE1 ,champE2 , )
)
5Création de table types de données
- Un type de données définit le genre de contenu
d'un champ. - les opérations pouvant être effectuées sur ce
champ. - Trois catégories de types
- Les valeurs numériques.
- Bit,YesNo,
- Numeric, Short, Int, Real, Double,
- Autoincrement,
- Les dates et les heures.
- Date.
- Time.
- Les chaînes de caractères.
- Text, Memo,
- Char,
6Création de table Premier exemple
CREATE TABLE article ( code article
Autoincrement NOT NULL, prix article
INT, date fabrication DATE,
CONSTRAINT C PRIMARY KEY (code article) )
7Création de table Intégrité référentielle
La clause FOREIGN KEY permet, pour les valeurs du
champ indiqué, de faire référence à des valeurs
existantes dans un champ d'une autre table. Ce
mécanisme s'appelle intégrité référentielle.
Une valeur insérée dans le champ référence
fournisseur de la table article doit
obligatoirement exister comme clé primaire de la
table fournisseur (le champ N Siret)
CREATE TABLE article ( code article
Autoincrement NOT NULL, prix article
INT, date fabrication DATE,
référence fournisseur INT NOT NULL,
CONSTRAINT C PRIMARY KEY (code article),
CONSTRAINT C1 FOREIGN KEY (référence
fournisseur) REFERENCES fournisseur (N
Siret) )
8Modification de table syntaxe générale
(simplifié)
SQL (de ACCESS) permet de modifier le schéma
dune table par linstruction ALTER TABLE,
suivie de la spécification de lopération à
effectuer.
- ALTER TABLE table
- ADD COLUMN champ type(taille) NOT NULL
- ALTER COLUMN champ type(size)
- ADD CONSTRAINT
- DROP COLUMN champ
- DROP CONSTRAINT nom
-
9Modification de table Premier exemple
- ALTER TABLE article ALTER COLUMN prix article
CHAR(25)
10Suppression de table syntaxe générale
(simplifiée)
La suppression dune table se fait par DROP TABLE
DROP TABLE table
- DROP TABLE article ?
- Supprime la table article de notre base de
données.
11Exercice BD Articles-Fournisseurs
- Un vendeur veut gérer, de façon automatique, les
articles quil vend. Sachant -
- quun fournisseur est décrit par un numéro de
Siret, une description, et une - adresse,
- quun article est décrit par un code
alphanumérique, une description, un prix - dachat et un prix de vente,
- quun article à un seul fournisseur et quun
fournisseur peut fournir plusieurs - articles.
- Comment construire la base de données
correspondante à son besoin ?
Pour décrire les fournisseurs
? Une table Fournisseurs. Pour
décrire les articles
? Une table Articles. Pour
décrire le lien entre un article et un
fournisseur ? Clé primaire/clé externe
12La table Fournisseurs
Un fournisseur est décrit par un numéro de
Siret, une description, et une adresse.
CREATE TABLE Fournisseurs ( N Siret
INT NOT NULL, Description
Text(30), Adresse Text(50),
CONSTRAINT C PRIMARY KEY (N Siret) )
13La table Articles
Un article est décrit par un code
alphanumérique, une description, un
prix dachat et un prix de vente.
CREATE TABLE Articles ( Code Article
Text(40) NOT NULL, Description
Text(30), Prix achat Real,
Prix vente Real, CONSTRAINT C1
PRIMARY KEY (Code Article) )
14Insertion du lien Modification de la table
Articles
Un article à un seul fournisseur et un
fournisseur peut fournir plusieurs articles.
ALTER TABLE Articles ADD COLUMN Réf
fournisseur INT
ALTER TABLE Articles ADD CONSTRAINT C2 FOREIGN
KEY (Réf fournisseur) REFERENCES
Fournisseurs(N Siret)
15Exemple de violation d intégrité référentielle
16La table Articles complète, dés la création
CREATE TABLE Articles ( Code Article
Text(40) NOT NULL, Description
Text(30), Prix achat Real,
Prix vente Real, Réf
fournisseur INT, CONSTRAINT C1
PRIMARY KEY (Code Article), CONSTRAINT C2
FOREIGN KEY (Réf fournisseur)
REFERENCES Fournisseurs(N Siret) )
17Les associations (n-n) problème
Un article à un seul fournisseur et un
fournisseur peut fournir plusieurs articles.
Association (1-N)
Articles
Fournisseurs
Code Article
1
2
4
6
8
9
Rèf fournisseur
105230
105234
105230
105234
105230
105237
N Siret
105230
105234
105237
Un article à plusieurs fournisseurs et un
fournisseur fournit plusieurs articles.
?Association (N-N) !?
18Les associations (n-n) solution
Association (N-N) ?Deux associations
(1-N). ?Table(s) intermédiaires.
Articles
ArticlesFournisseurs
Fournisseurs
Réf Article Réf fournisseur
1 105230
2 105234
1 105234
4 105230
6 105237
8 105230
8 105234
9 105234
Code Article
1
2
4
6
8
9
N Siret
105230
105234
105237
La clé primaire de la table ArticlesFournisseurs
(Réf Article, Réf fournisseur)
19Création de la table Articles-Fournisseurs
CREATE TABLE ArticlesFournisseurs ( Réf
Articles Text(40), Réf
Fournisseurs INT, CONSTRAINT C3
PRIMARY KEY (Réf Articles, Réf
Fournisseurs), CONSTRAINT C4 FOREIGN KEY
(Réf Articles)
REFERENCES Articles(Code
Article), CONSTRAINT C5 FOREIGN KEY (Réf
Fournisseurs) REFERENCES
Fournisseurs(N Siret) )