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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| CREATE TABLE Employe(
EmployeId INT,
Matricule VARCHAR(8) NOT NULL,
EmployeNom VARCHAR(50) NOT NULL,
EmployePrenom VARCHAR(50) NOT NULL,
CONSTRAINT Employe_PK PRIMARY KEY(EmployeId),
CONSTRAINT Employe_AK UNIQUE(Matricule)
);
CREATE TABLE Voiture(
VoitureId INT,
Immatriculation VARCHAR(16) NOT NULL,
CONSTRAINT Voiture_PK PRIMARY KEY(VoitureId),
CONSTRAINT Voiture_AK UNIQUE(Immatriculation)
);
CREATE TABLE Chauffeur(
EmployeId INT,
CONSTRAINT Chauffeur_PK PRIMARY KEY(EmployeId),
CONSTRAINT Chauffeur_Employe_FK FOREIGN KEY(EmployeId) REFERENCES Employe(EmployeId)
);
CREATE TABLE ChauffeurOccasionnel(
EmployeId INT,
CONSTRAINT ChauffeurOccasionnel_PK PRIMARY KEY(EmployeId),
CONSTRAINT ChauffeurOccasionnel_Chauffeur_FK FOREIGN KEY(EmployeId) REFERENCES Chauffeur(EmployeId)
);
CREATE TABLE ChauffeurSociete(
EmployeId INT,
CONSTRAINT ChauffeurSociete_PK PRIMARY KEY(EmployeId),
CONSTRAINT ChauffeurSociete_Chauffeur_FK FOREIGN KEY(EmployeId) REFERENCES Chauffeur(EmployeId)
);
CREATE TABLE VoitureSociete(
VoitureId INT,
CONSTRAINT VoitureSociete_PK PRIMARY KEY(VoitureId),
CONSTRAINT VoitureSociete_Voiture_FK FOREIGN KEY(VoitureId) REFERENCES Voiture(VoitureId)
);
CREATE TABLE TypeMission(
TypeMissionId INT,
TypeMissionDesignation VARCHAR(50) NOT NULL,
CONSTRAINT TypeMission_PK PRIMARY KEY(TypeMissionId)
);
CREATE TABLE Fonction(
FonctionId INT,
FonctionDesignation VARCHAR(50) NOT NULL,
CONSTRAINT Fonction_PK PRIMARY KEY(FonctionId)
);
CREATE TABLE MoyenDeplacement(
MoyenDeplacementId INT,
MoyenDeplacementDesignation VARCHAR(50) NOT NULL,
CONSTRAINT MoyenDeplacement_PK PRIMARY KEY(MoyenDeplacementId)
);
CREATE TABLE Mission(
MissionId INT,
MissionCode VARCHAR(8) NOT NULL,
MissionDateDebut DATE NOT NULL,
MissionDateFin DATE NOT NULL,
MissionDesignation VARCHAR(50) NOT NULL,
MoyenDeplacementId INT NOT NULL,
TypeMissionId INT NOT NULL,
CONSTRAINT Mission_PK PRIMARY KEY(MissionId),
CONSTRAINT Mission_AK UNIQUE(MissionCode),
CONSTRAINT Mission_MoyenDeplacement_FK FOREIGN KEY(MoyenDeplacementId) REFERENCES MoyenDeplacement(MoyenDeplacementId),
CONSTRAINT Mission_TypeMission_FK FOREIGN KEY(TypeMissionId) REFERENCES TypeMission(TypeMissionId)
);
CREATE TABLE EmployeMission(
MissionId INT,
EmployeId INT,
CONSTRAINT EmployeMission_PK PRIMARY KEY(MissionId, EmployeId),
CONSTRAINT EmployeMission_Mission_FK FOREIGN KEY(MissionId) REFERENCES Mission(MissionId),
CONSTRAINT EmployeMission_Employe_FK FOREIGN KEY(EmployeId) REFERENCES Employe(EmployeId)
);
CREATE TABLE VoiturePersonnelle(
VoitureId INT,
EmployeId INT NOT NULL,
CONSTRAINT VoiturePersonnelle_PK PRIMARY KEY(VoitureId),
CONSTRAINT VoiturePersonnelle_AK UNIQUE(EmployeId),
CONSTRAINT VoiturePersonnelle_Voiture_FK FOREIGN KEY(VoitureId) REFERENCES Voiture(VoitureId),
CONSTRAINT VoiturePersonnelle_ChauffeurOccasionnel_FK FOREIGN KEY(EmployeId) REFERENCES ChauffeurOccasionnel(EmployeId)
);
CREATE TABLE MissionAchauffeurSte(
MissionId INT,
VoitureId INT NOT NULL,
EmployeId INT NOT NULL,
CONSTRAINT MissionAchauffeurSte_PK PRIMARY KEY(MissionId),
CONSTRAINT MissionAchauffeurSte_Mission_FK FOREIGN KEY(MissionId) REFERENCES Mission(MissionId),
CONSTRAINT MissionAchauffeurSte_VoitureSociete_FK FOREIGN KEY(VoitureId) REFERENCES VoitureSociete(VoitureId),
CONSTRAINT MissionAchauffeurSte_ChauffeurSociete_FK FOREIGN KEY(EmployeId) REFERENCES ChauffeurSociete(EmployeId)
);
CREATE TABLE MissionAchaufeurOccas(
MissionId INT,
VoitureId INT NOT NULL,
CONSTRAINT MissionAchaufeurOccas_PK PRIMARY KEY(MissionId),
CONSTRAINT MissionAchaufeurOccas_Mission_FK FOREIGN KEY(MissionId) REFERENCES Mission(MissionId),
CONSTRAINT MissionAchaufeurOccas_VoiturePersonnelle_FK FOREIGN KEY(VoitureId) REFERENCES VoiturePersonnelle(VoitureId)
);
CREATE TABLE EmployeFonction(
EmployeId INT,
FonctionId INT,
CONSTRAINT EmployeFonction_PK PRIMARY KEY(EmployeId, FonctionId),
CONSTRAINT EmployeFonction_Employe_FK FOREIGN KEY(EmployeId) REFERENCES Employe(EmployeId),
CONSTRAINT EmployeFonction_Fonction_FK FOREIGN KEY(FonctionId) REFERENCES Fonction(FonctionId)
);
--La date de début d'une mission ne doit pas être postérieure à sa date fin.
ALTER TABLE MISSION
ADD CONSTRAINT Mission_Datedebut_Avant_Datefin_Chck
CHECK (MissionDateDebut <= MissionDateFin) ; |