CREATE TABLE CATEGORIE(
categorieId INT IDENTITY,
codecategorie CHAR(4) NOT NULL,
libelleCategorie VARCHAR(50) NOT NULL,
nombreplacecategorie INT NOT NULL,
PRIMARY KEY(categorieId),
UNIQUE(codecategorie)
);
CREATE TABLE CLIENT(
clientId INT IDENTITY,
codeclient VARCHAR(10) NOT NULL,
nomClient VARCHAR(50) NOT NULL,
prenomClient VARCHAR(50) NOT NULL,
adresseClient VARCHAR(50) NOT NULL,
telephoneClient VARCHAR(30) NOT NULL,
PRIMARY KEY(clientId),
UNIQUE(codeclient)
);
CREATE TABLE APPORTEUR(
apporteurId INT IDENTITY,
codeapporteur VARCHAR(5) NOT NULL,
nomApporteur VARCHAR(50) NOT NULL,
prenomApporteur VARCHAR(50) NOT NULL,
PRIMARY KEY(apporteurId),
UNIQUE(codeapporteur)
);
CREATE TABLE TYPECONTRAT(
typeContratId INT IDENTITY,
codetypecontrat CHAR(2) NOT NULL,
libelleTypeContrat VARCHAR(50) NOT NULL,
PRIMARY KEY(typeContratId),
UNIQUE(codetypecontrat)
);
CREATE TABLE GARANTIE(
garantieId INT IDENTITY,
codegarantie CHAR(2) NOT NULL,
Libelle_Garantie VARCHAR(50) NOT NULL,
PRIMARY KEY(garantieId),
UNIQUE(codegarantie)
);
CREATE TABLE Sous_Garantie(
sousGarantieId INT IDENTITY,
codesousgarantie CHAR(2) NOT NULL,
libelleSousGarantieId VARCHAR(50) NOT NULL,
categorieId INT NOT NULL,
garantieId INT NOT NULL,
PRIMARY KEY(sousGarantieId),
UNIQUE(codesousgarantie),
FOREIGN KEY(categorieId) REFERENCES CATEGORIE(categorieId),
FOREIGN KEY(garantieId) REFERENCES GARANTIE(garantieId)
);
CREATE TABLE PUISSANCE(
puissanceId INT IDENTITY,
codepuissance VARCHAR(3) NOT NULL,
borneInf INT NOT NULL,
borneSup INT NOT NULL,
unite INT NOT NULL,
PRIMARY KEY(puissanceId),
UNIQUE(codepuissance)
);
CREATE TABLE PFC(
categorieId INT,
puissanceId INT,
responsabilitecivile VARCHAR(50) NOT NULL,
PRIMARY KEY(categorieId, puissanceId),
FOREIGN KEY(categorieId) REFERENCES CATEGORIE(categorieId),
FOREIGN KEY(puissanceId) REFERENCES PUISSANCE(puissanceId)
);
CREATE TABLE AGENCE(
agenceId INT IDENTITY,
codeagence VARCHAR(3) NOT NULL,
nomAgence VARCHAR(50) NOT NULL,
dateCreation DATE NOT NULL,
PRIMARY KEY(agenceId),
UNIQUE(codeagence)
);
CREATE TABLE SOUS_CATEGORIE(
souscategorieId INT IDENTITY,
codesouscategorie VARCHAR(4) NOT NULL,
libelleSousCategorie VARCHAR(50) NOT NULL,
categorieId INT NOT NULL,
PRIMARY KEY(souscategorieId),
UNIQUE(codesouscategorie),
FOREIGN KEY(categorieId) REFERENCES CATEGORIE(categorieId)
);
CREATE TABLE PFC_SC(
categorieId INT,
puissanceId INT,
souscategorieId INT NOT NULL,
PRIMARY KEY(categorieId, puissanceId),
FOREIGN KEY(categorieId, puissanceId) REFERENCES PFC(categorieId, puissanceId),
FOREIGN KEY(souscategorieId) REFERENCES SOUS_CATEGORIE(souscategorieId)
);
CREATE TABLE CAISSIERE(
agenceId INT,
caissiereId INT IDENTITY,
codecaissiere VARCHAR(4) NOT NULL,
prenomcaissiere VARCHAR(40) NOT NULL,
nomcaissiere VARCHAR(40) NOT NULL,
PRIMARY KEY(agenceId, caissiereId),
UNIQUE(codecaissiere),
FOREIGN KEY(agenceId) REFERENCES AGENCE(agenceId)
);
CREATE TABLE AVENANT_LIBELLE(
avenantlibelleId INT IDENTITY,
avenantlibellecode CHAR(3) NOT NULL,
avenantlibellevaleur VARCHAR(50),
PRIMARY KEY(avenantlibelleId),
UNIQUE(avenantlibellecode)
);
CREATE TABLE MODEPAIEMENT(
modepaiemenId INT IDENTITY,
modepaiement_libelle VARCHAR(50),
PRIMARY KEY(modepaiemenId)
);
CREATE TABLE PRODUCTEUR(
agenceId INT,
producteurId INT IDENTITY,
codeproducteur VARCHAR(5) NOT NULL,
Nomproducteur VARCHAR(50) NOT NULL,
Prenomprodcteur VARCHAR(50) NOT NULL,
PRIMARY KEY(agenceId, producteurId),
UNIQUE(codeproducteur),
FOREIGN KEY(agenceId) REFERENCES AGENCE(agenceId)
);
CREATE TABLE CONTRAT(
clientId INT,
contratId INT IDENTITY,
codecontrat VARCHAR(10) NOT NULL,
dateEffetContrat DATE NOT NULL,
dateExpirationContrat DATE NOT NULL,
apporteurId INT,
agenceId INT NOT NULL,
agenceId_1 INT NOT NULL,
producteurId INT NOT NULL,
typeContratId INT NOT NULL,
PRIMARY KEY(clientId, contratId),
UNIQUE(codecontrat),
FOREIGN KEY(clientId) REFERENCES CLIENT(clientId),
FOREIGN KEY(apporteurId) REFERENCES APPORTEUR(apporteurId),
FOREIGN KEY(agenceId) REFERENCES AGENCE(agenceId),
FOREIGN KEY(agenceId_1, producteurId) REFERENCES PRODUCTEUR(agenceId, producteurId),
FOREIGN KEY(typeContratId) REFERENCES TYPECONTRAT(typeContratId)
);
CREATE TABLE AVENANT(
clientId INT,
contratId INT,
avenantId INT IDENTITY,
codeavenant VARCHAR(10) NOT NULL,
libelleAvenant VARCHAR(50) NOT NULL,
dateEffetAvenant DATE NOT NULL,
dateExpirationAvenant DATE NOT NULL,
avenantlibelleId INT NOT NULL,
apporteurId INT,
PRIMARY KEY(clientId, contratId, avenantId),
UNIQUE(codeavenant),
FOREIGN KEY(clientId, contratId) REFERENCES CONTRAT(clientId, contratId),
FOREIGN KEY(avenantlibelleId) REFERENCES AVENANT_LIBELLE(avenantlibelleId),
FOREIGN KEY(apporteurId) REFERENCES APPORTEUR(apporteurId)
);
CREATE TABLE VEHICULE(
clientId INT,
contratId INT,
vehiculeId INT IDENTITY,
codevehicule CHAR(5) NOT NULL,
marque VARCHAR(50) NOT NULL,
type VARCHAR(50) NOT NULL,
energie VARCHAR(15) NOT NULL,
serie VARCHAR(40) NOT NULL,
vehiculepuissance INT NOT NULL,
nombreDePlaceCarteGrise INT NOT NULL,
nombreDePlaceCabine BIGINT NOT NULL,
clientId_1 INT NOT NULL,
categorieId INT NOT NULL,
puissanceId INT NOT NULL,
PRIMARY KEY(clientId, contratId, vehiculeId),
UNIQUE(codevehicule),
FOREIGN KEY(clientId, contratId) REFERENCES CONTRAT(clientId, contratId),
FOREIGN KEY(clientId_1) REFERENCES CLIENT(clientId),
FOREIGN KEY(categorieId, puissanceId) REFERENCES PFC(categorieId, puissanceId)
);
CREATE TABLE PROTEGER(
categorieId INT,
garantieId INT,
PRIMARY KEY(categorieId, garantieId),
FOREIGN KEY(categorieId) REFERENCES CATEGORIE(categorieId),
FOREIGN KEY(garantieId) REFERENCES GARANTIE(garantieId)
);
CREATE TABLE ASSOCIER(
clientId INT,
contratId INT,
garantieId INT,
PRIMARY KEY(clientId, contratId, garantieId),
FOREIGN KEY(clientId, contratId) REFERENCES CONTRAT(clientId, contratId),
FOREIGN KEY(garantieId) REFERENCES GARANTIE(garantieId)
);
CREATE TABLE ENCAISSE_C(
clientId INT,
contratId INT,
agenceId INT,
caissiereId INT,
modepaiemenId INT,
dateEncaisseC DATE NOT NULL,
montantEncaisseC BIGINT NOT NULL,
PRIMARY KEY(clientId, contratId, agenceId, caissiereId, modepaiemenId),
FOREIGN KEY(clientId, contratId) REFERENCES CONTRAT(clientId, contratId),
FOREIGN KEY(agenceId, caissiereId) REFERENCES CAISSIERE(agenceId, caissiereId),
FOREIGN KEY(modepaiemenId) REFERENCES MODEPAIEMENT(modepaiemenId)
);
CREATE TABLE ENCAISSE_A(
clientId INT,
contratId INT,
avenantId INT,
agenceId INT,
caissiereId INT,
modepaiemenId INT,
dateEncaisseA DATE NOT NULL,
montantEncaisseA BIGINT NOT NULL,
PRIMARY KEY(clientId, contratId, avenantId, agenceId, caissiereId, modepaiemenId),
FOREIGN KEY(clientId, contratId, avenantId) REFERENCES AVENANT(clientId, contratId, avenantId),
FOREIGN KEY(agenceId, caissiereId) REFERENCES CAISSIERE(agenceId, caissiereId),
FOREIGN KEY(modepaiemenId) REFERENCES MODEPAIEMENT(modepaiemenId)
);
CREATE TABLE CLI_AV(
clientId INT,
clientId_1 INT,
contratId INT,
avenantId INT,
dateemissioncliav DATE NOT NULL,
PRIMARY KEY(clientId, clientId_1, contratId, avenantId),
FOREIGN KEY(clientId) REFERENCES CLIENT(clientId),
FOREIGN KEY(clientId_1, contratId, avenantId) REFERENCES AVENANT(clientId, contratId, avenantId)
);
CREATE TABLE VEH_AV(
clientId INT,
contratId INT,
vehiculeId INT,
clientId_1 INT,
contratId_1 INT,
avenantId INT,
dateemissionvehav DATE NOT NULL,
PRIMARY KEY(clientId, contratId, vehiculeId, clientId_1, contratId_1, avenantId),
FOREIGN KEY(clientId, contratId, vehiculeId) REFERENCES VEHICULE(clientId, contratId, vehiculeId),
FOREIGN KEY(clientId_1, contratId_1, avenantId) REFERENCES AVENANT(clientId, contratId, avenantId)
);
Partager