19
Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR. Page web : pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htm E-mail : [email protected] Université Paris Ouest Nanterre la Défense. 2009-2010. 1

Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

Embed Size (px)

Citation preview

Page 1: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

Initiation aux bases de données et à la programmation événementielle

Cours N°4 :

langage de définition de données.

Support de cours de Souheib BAARIR.

Page web : pagesperso-systeme.lip6.fr/Souheib.Baarir/bdvba/support.htmE-mail : [email protected]

Université Paris Ouest Nanterre la Défense.2009-2010. 1

Page 2: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

2

Tables 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 à l’aide de fenêtres de dialogue et d’assistants (Access, Query,…).

• Cependant, SQL prévoit des instructions particulières pour gérer les schémas…C’est ce qu’on appel le Langage de Définition de Données (LDD).

Page 3: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

LDD en SQL

•Plusieurs types de requêtes : d’interrogation (LID). de manipulation (LMD). de définition (LDD).

• CREATE TABLE… : créer une table.

• ALTER TABLE… : modifier une table.

• DROP TABLE… : supprimer une table.

3

Page 4: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

4

Création de table : syntaxe générale (simplifiée)

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 [, …]])]]*

)

La création d’une table est prévue en SQL via l’instruction CREATE TABLE.

Page 5: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

5

Cré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 :

1.Les valeurs numériques. Bit,YesNo,… Numeric, Short, Int, Real, Double,… Autoincrement,…

2.Les dates et les heures. Date. Time. 

3.Les chaînes de caractères. Text, Memo,… Char,…

Page 6: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

6

Cré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]))

Page 7: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

7

Création de table : Intégrité référentielle

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])

)

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])

Page 8: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

8

Modification de table : syntaxe générale (simplifié)

ALTER TABLE table

ADD COLUMN champ type[(taille)] [NOT NULL] |     

ALTER COLUMN champ type[(size)] |

ADD CONSTRAINT … |   

DROP COLUMN champ |

DROP CONSTRAINT nom

SQL (de ACCESS) permet de modifier le schéma d’une table par l’instruction ALTER TABLE, suivie de la spécification de l’opération à effectuer.

Page 9: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

9

Modification de table : Premier exemple

ALTER TABLE article ALTER COLUMN [prix article] CHAR(25)

Page 10: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

10

Suppression de table : syntaxe générale (simplifiée)

La suppression d’une table se fait par DROP TABLE :DROP TABLE table

DROP TABLE article Supprime la table article de notre base de

données.

Page 11: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

11

Exercice : BD Articles-Fournisseurs

Un vendeur veut gérer, de façon automatique, les articles qu’il vend. Sachant • qu’un fournisseur est décrit par : un numéro de Siret, une description, et une adresse,•qu’un article est décrit par : un code alphanumérique, une description, un prix d’achat et un prix de vente,•qu’un article à un seul fournisseur et qu’un 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

Page 12: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

12

La 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]))

Page 13: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

13

La table Articles Un article est décrit par : un code alphanumérique, une description,

un prix d’achat 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]))

Page 14: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

14

Insertion 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])

Page 15: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

15

Exemple de violation d’ intégrité référentielle

Page 16: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

16

La 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]))

Page 17: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

17

Les associations (n-n) : problème

Un article à plusieurs fournisseurs et un fournisseur fournit plusieurs articles.

Un article à un seul fournisseur et un fournisseur peut fournir plusieurs articles.

Code Article …

1

2

4

6

8

9

N° Siret …

105230

105234

105237

ArticlesFournisseursRèf

fournisseur

105230

105234

105230

105234

105230

105237

Association (1-N)Association (1-N)

Association (N-N) !?Association (N-N) !?

Page 18: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

18

Les associations (n-n) : solution

Code Article …

1

2

4

6

8

9

N° Siret …

105230

105234

105237

ArticlesFournisseurs

Association (N-N) Association (N-N) Deux associations (1-N).Deux associations (1-N).Table(s) intermédiaires. Table(s) intermédiaires.

Réf Article Réf fournisseur

1 105230

2 105234

1 105234

4 105230

6 105237

8 105230

8 105234

9 105234

ArticlesFournisseurs

La clé primaire de la table ArticlesFournisseurs : (Réf Article, Réf fournisseur)La clé primaire de la table ArticlesFournisseurs : (Réf Article, Réf fournisseur)

Page 19: Initiation aux bases de données et à la programmation événementielle Cours N°4 : langage de définition de données. Support de cours de Souheib BAARIR

19

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])

)

Création de la table Articles-Fournisseurs