USE test ;
DROP TABLE IF EXISTS ELEVE ;
DROP TABLE IF EXISTS MONITEUR ;
DROP TABLE IF EXISTS SECRETAIRE ;
DROP TABLE IF EXISTS UTILISATEUR ;
CREATE TABLE UTILISATEUR
(
uId INT NOT NULL
, nom VARCHAR(32) NOT NULL
, prenom VARCHAR(32) NOT NULL
, login VARCHAR(32) NOT NULL
, email VARCHAR(32) NOT NULL
, CONSTRAINT UTILISATEUR_PK PRIMARY KEY (uId)
, CONSTRAINT UTILISATEUR_AK1 UNIQUE (email)
) ;
CREATE TABLE SECRETAIRE
(
uId INT NOT NULL
, CONSTRAINT SECRETAIRE_PK PRIMARY KEY (uId)
, CONSTRAINT SECRETAIRE_UTILISATEUR_FK FOREIGN KEY (uId)
REFERENCES UTILISATEUR (uId) ON DELETE CASCADE
) ;
CREATE TABLE MONITEUR
(
uId INT NOT NULL
, uIdSecretaire INT NOT NULL
, CONSTRAINT MONITEUR_PK PRIMARY KEY (uId)
, CONSTRAINT MONITEUR_UTILISATEUR_FK FOREIGN KEY (uId)
REFERENCES UTILISATEUR (uId) ON DELETE CASCADE
, CONSTRAINT MONITEUR_SECRETAIRE_FK FOREIGN KEY (uIdSecretaire)
REFERENCES SECRETAIRE (uId)
) ;
CREATE TABLE ELEVE
(
uId INT NOT NULL
, telephone VARCHAR(24) NOT NULL
, portable VARCHAR(24) NOT NULL
, nationalite VARCHAR(32) NOT NULL
, soldeDuCompte INT NOT NULL DEFAULT 0
, adresse VARCHAR(64) NOT NULL
, dateDeNaissance DATE NOT NULL
, uIdMoniteur INT NOT NULL
, CONSTRAINT ELEVE_PK PRIMARY KEY (uId)
, CONSTRAINT ELEVE_UTILISATEUR_FK FOREIGN KEY (uId)
REFERENCES UTILISATEUR (uId) ON DELETE CASCADE
, CONSTRAINT ELEVE_MONITEUR_FK FOREIGN KEY (UidMoniteur)
REFERENCES MONITEUR (uId)
) ;
INSERT INTO UTILISATEUR (uId, nom, prenom, login, email) VALUES
(1, 'Castafiore', 'Bianca', 'casta', 'casta.bianca@chose.fr')
, (11, 'Naudin', 'Fernand', 'naufer', 'fernand@truc.fr')
, (12, 'Volfoni', 'Raoul', 'raoul', 'raoul@truc.fr')
, (13, 'Volfoni', 'Paul', 'paulo', 'paulvolf@truc.fr')
, (21, 'Tournesol', 'Tryphon', 'prof', 'tryphon@truc.fr')
, (22, 'Lampion', 'Séraphin', 'thelamp', 's.lamp@machin.fr')
, (23, 'Halambique', 'Nestor', 'totor', 'nestor@machin.fr')
;
INSERT INTO SECRETAIRE (uId) VALUES (1)
;
INSERT INTO MONITEUR (uId, uIdSecretaire) VALUES (11, 1), (12, 1), (13, 1)
;
INSERT INTO ELEVE (uId, telephone, portable, nationalite, adresse, dateDeNaissance, UidMoniteur) VALUES
(21, '0123456789', '0678901234', 'be', '3 rue Martin', '1997-07-14', 11)
, (22, '0123456780', '0678901235', 'be', '13 place de Moulinsart', '1997-04-01', 11)
, (23, '0123456781', '0678901236', 'be', '1 place de Moulinsart', '1996-01-01', 12)
;
Etc.
Partager