CREATE TABLE PERSONNE
(
personneId INTEGER NOT NULL
, personneNom VARCHAR(48) NOT NULL
, personeAdresse VARCHAR(48) NOT NULL
, CONSTRAINT PERSONNE_PK PRIMARY KEY(personneId)
);
CREATE TABLE FOURNISSEUR
(
personneId INTEGER NOT NULL
, tauxRemise NUMERIC(4,2) NOT NULL
, CONSTRAINT FOURNISSEUR_PK PRIMARY KEY(personneId)
, CONSTRAINT FOURNISSEUR_PERSONNE_FK FOREIGN KEY(personneId)
REFERENCES PERSONNE(personneId)
ON DELETE CASCADE
);
CREATE TABLE CLIENT
(
personneId INTEGER NOT NULL
, conditionsTarifaires VARCHAR(48) NOT NULL
, CONSTRAINT CLIENT_PK PRIMARY KEY(personneId)
, CONSTRAINT CLIENT_PERSONNE_FK FOREIGN KEY(personneId)
REFERENCES PERSONNE(personneId)
ON DELETE CASCADE
);
CREATE TABLE COMMANDE
(
personneId INTEGER NOT NULL
, commandeId INTEGER NOT NULL
, commandeNo CHAR(12) NOT NULL
, commandeDate DATE NOT NULL
, commandeMontant INTEGER NOT NULL
, CONSTRAINT COMMANDE_PK PRIMARY KEY(personneId, commandeId)
, CONSTRAINT COMMANDE_AK UNIQUE(commandeNo)
, CONSTRAINT COMMANDE_CLIENT_FK FOREIGN KEY(personneId)
REFERENCES CLIENT(personneId)
);
CREATE TABLE LIGNE_COMMANDE
(
personneId INTEGER NOT NULL
, commandeId INTEGER NOT NULL
, ligneCommandeId INTEGER NOT NULL
, quantiteCommandee INTEGER NOT NULL
, livraisonDate DATE NOT NULL
, CONSTRAINT LIGNE_COMMANDE_PK PRIMARY KEY(personneId, ligneCommandeId)
, CONSTRAINT LIGNE_COMMANDE_COMMANDE_FK FOREIGN KEY(personneId, commandeId)
REFERENCES COMMANDE(personneId, commandeId)
);
CREATE TABLE FACTURE
(
personneId INTEGER NOT NULL
, factureId INTEGER NOT NULL
, factureNo CHAR(12) NOT NULL
, factureDate DATE NOT NULL
, factureMontant INTEGER NOT NULL
, CONSTRAINT FACTURE_PK PRIMARY KEY(personneId, factureId)
, CONSTRAINT FACTURE_AK UNIQUE(factureNo)
, CONSTRAINT FACTURE_CLIENT_FK FOREIGN KEY(personneId)
REFERENCES CLIENT(personneId)
);
CREATE TABLE REGLEMENT
(
personneId INTEGER NOT NULL
, reglementId INTEGER NOT NULL
, reglementDate DATE NOT NULL
, reglementMontant INTEGER NOT NULL
, CONSTRAINT REGLEMENT_PK PRIMARY KEY (personneId, reglementId)
, CONSTRAINT REGLEMENT_CLIENT_FK FOREIGN KEY(personneId)
REFERENCES CLIENT(personneId)
);
CREATE TABLE LIGNE_FACTURE
(
personneId INTEGER NOT NULL
, factureId INTEGER NOT NULL
, ligneFactureId INTEGER NOT NULL
, reglementId INTEGER NOT NULL
, quantiteFacturee INTEGER NOT NULL
, CONSTRAINT LIGNE_FACTURE_PK PRIMARY KEY(personneId, ligneFactureId)
, CONSTRAINT LIGNE_FACTURE_FACTURE_FK FOREIGN KEY(personneId, factureId)
REFERENCES FACTURE(personneId, factureId)
, CONSTRAINT LIGNE_FACTURE_REGLEMENT_FK FOREIGN KEY(personneId, reglementId)
REFERENCES REGLEMENT(personneId, reglementId)
);
CREATE TABLE LETTRAGE
(
personneId INTEGER NOT NULL
, ligneCommandeId INTEGER NOT NULL
, ligneFactureId INTEGER NOT NULL
, CONSTRAINT LETTRAGE_PK PRIMARY KEY(personneId, ligneCommandeId, ligneFactureId)
, CONSTRAINT LETTRAGE_LIGNE_COMMANDE_FK FOREIGN KEY(personneId, ligneCommandeId)
REFERENCES LIGNE_COMMANDE(personneId, ligneCommandeId)
, CONSTRAINT LETTRAGE_LIGNE_FACTURE_FK FOREIGN KEY(personneId, ligneFactureId)
REFERENCES LIGNE_FACTURE(personneId, ligneFactureId)
);
Partager