Database Reference
In-Depth Information
Schéma relationnel (
suite
)
Script SQL (
suite
)
CREATE TABLE diriger (
num_proj VARCHAR2(6) NOT NULL,
id_coll VARCHAR2(5)
NOT NULL
,
CONSTRAINT pk_diriger
PRIMARY KEY (num_proj),
CONSTRAINT AK_DIRIGER
UNIQUE
(id_coll));
ALTER TABLE affecter
ADD CONSTRAINT fk_affecter_collabor
FOREIGN KEY (id_coll)
REFERENCES collaborateur (id_coll);
ALTER TABLE affecter
ADD CONSTRAINT fk_affecter_projet
FOREIGN KEY (num_proj)
REFERENCES projet (num_proj);
ALTER TABLE diriger
ADD CONSTRAINT fk_diriger_collabor
FOREIGN KEY (id_coll)
REFERENCES collaborateur (id_coll);
ALTER TABLE diriger
ADD CONSTRAINT fk_diriger_projet
FOREIGN KEY (num_proj)
REFERENCES projet (num_proj);
La contrainte
NOT NULL
sur la colonne
id_coll
dans la table
diriger
signiie que tout
projet est dirigé par un collaborateur (multiplicité minimale 1). La contrainte
UNIQUE
sur
cette même colonne implémente le fait qu'un collaborateur ne peut diriger plusieurs projets
(multiplicité maximale 1).
L'absence de contrainte
NOT NULL
sur la colonne
num_proj
dans la table
affecter
signiie
qu'un collaborateur ne peut participer à aucun projet (multiplicité minimale 0). La contrainte
UNIQUE
(du fait de la clé primaire) sur la colonne
id_coll
de cette même table implémente le
fait qu'un collaborateur ne peut participer à plusieurs projets (multiplicité maximale 1).
Cette. solution. présente. l'avantage. d'être. la. plus. évolutive. si. les. multiplicités. viennent. à.
changer..En.effet,.nul.besoin.de.modifier.la.structure.d'une.table,.seules.des.contraintes.seront.
à.activer.ou.à.désactiver.
Mise en pratique
Les exercices 3.1 « La création de tables (carte d'embarquement) » et 3.2 « La création de tables
(horaires de bus) » vous proposent de déduire le script SQL à partir de différents modèles
conceptuels.