1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| CREATE TABLE EMP_employe(
EMP_ident INT IDENTITY,
EMP_matricule CHAR(6) NOT NULL,
EMP_nom VARCHAR(50) NOT NULL,
EMP_prenom VARCHAR(50) NOT NULL,
PRIMARY KEY(EMP_ident),
UNIQUE(EMP_matricule)
);
CREATE TABLE CAL_calendrier(
CAL_date DATE,
CAL_numjour TINYINT NOT NULL,
CAL_libjour CHAR(8) NOT NULL,
CAL_numsem TINYINT NOT NULL,
CAL_ouvrable BIT NOT NULL,
PRIMARY KEY(CAL_date)
);
CREATE TABLE CLI_client(
CLI_ident INT IDENTITY,
CLI_nom VARCHAR(50) NOT NULL,
CLI_prenom VARCHAR(50) NOT NULL,
PRIMARY KEY(CLI_ident)
);
CREATE TABLE COM_commande(
CLI_ident INT,
COM_seq SMALLINT,
PRIMARY KEY(CLI_ident, COM_seq),
FOREIGN KEY(CLI_ident) REFERENCES CLI_client(CLI_ident)
);
CREATE TABLE CMP_competence(
CMP_ident INT IDENTITY,
CMP_code CHAR(4),
CMP_libelle VARCHAR(128) NOT NULL,
PRIMARY KEY(CMP_ident),
UNIQUE(CMP_code)
);
CREATE TABLE PRS_prestation(
CLI_ident INT,
COM_seq SMALLINT,
PRS_seq SMALLINT,
CMP_ident INT NOT NULL,
PRIMARY KEY(CLI_ident, COM_seq, PRS_seq),
FOREIGN KEY(CLI_ident, COM_seq) REFERENCES COM_commande(CLI_ident, COM_seq),
FOREIGN KEY(CMP_ident) REFERENCES CMP_competence(CMP_ident)
);
CREATE TABLE PLA_plage(
CAL_date DATE,
PLA_seq SMALLINT,
PLA_hdeb TIME,
PLA_hfin TIME NOT NULL,
PRIMARY KEY(CAL_date, PLA_seq),
FOREIGN KEY(CAL_date) REFERENCES CAL_calendrier(CAL_date)
);
CREATE TABLE INT_intervention(
CLI_ident INT,
COM_seq SMALLINT,
PRS_seq SMALLINT,
INT_seq SMALLINT,
CAL_date DATE NOT NULL,
PLA_seq SMALLINT NOT NULL,
EMP_ident_remplace INT,
EMP_ident_affecte INT,
PRIMARY KEY(CLI_ident, COM_seq, PRS_seq, INT_seq),
FOREIGN KEY(CLI_ident, COM_seq, PRS_seq) REFERENCES PRS_prestation(CLI_ident, COM_seq, PRS_seq),
FOREIGN KEY(CAL_date, PLA_seq) REFERENCES PLA_plage(CAL_date, PLA_seq),
FOREIGN KEY(EMP_ident_remplace) REFERENCES EMP_employe(EMP_ident),
FOREIGN KEY(EMP_ident_affecte) REFERENCES EMP_employe(EMP_ident)
);
CREATE TABLE DSP_etre_dispo(
CAL_date DATE,
PLA_seq SMALLINT,
EMP_ident INT,
PRIMARY KEY(CAL_date, PLA_seq, EMP_ident),
FOREIGN KEY(CAL_date, PLA_seq) REFERENCES PLA_plage(CAL_date, PLA_seq),
FOREIGN KEY(EMP_ident) REFERENCES EMP_employe(EMP_ident)
);
CREATE TABLE POS_posseder(
EMP_ident INT,
CMP_ident INT,
PRIMARY KEY(EMP_ident, CMP_ident),
FOREIGN KEY(EMP_ident) REFERENCES EMP_employe(EMP_ident),
FOREIGN KEY(CMP_ident) REFERENCES CMP_competence(CMP_ident)
);
alter table INT_intervention
ADD CONSTRAINT FK_001
FOREIGN KEY(CAL_date, PLA_seq, EMP_ident_affecte)
REFERENCES DSP_etre_dispo(CAL_date, PLA_seq, EMP_ident); |
Partager