CREATE TABLE client( ClientId COUNTER, ClientNom VARCHAR(50), Clientadresse VARCHAR(130), ClientTelephone VARCHAR(25), PRIMARY KEY(ClientId) ); CREATE TABLE livraisonclient( livraisonclientId COUNTER, livraisonclientDate DATE, livraisonclientDelai INT, PRIMARY KEY(livraisonclientId) ); CREATE TABLE factureclient( ClientId INT, factureclientId COUNTER, factureclientDate DATE, Echeance DATE, PRIMARY KEY(ClientId, factureclientId), FOREIGN KEY(ClientId) REFERENCES client(ClientId) ); CREATE TABLE familleproduit( FamilleproduitId COUNTER, FamilleproduitLibelle VARCHAR(50), PRIMARY KEY(FamilleproduitId) ); CREATE TABLE tva( TvaId COUNTER, Tvapourcentage DECIMAL(5,2), PRIMARY KEY(TvaId) ); CREATE TABLE etat( EtatId COUNTER, EtatLibelle VARCHAR(50), PRIMARY KEY(EtatId) ); CREATE TABLE reglement( ReglementId COUNTER, ReglementLibelle VARCHAR(50), ReglementMode VARCHAR(20), ReglementMontant DECIMAL(15,2), ReglementDate DATE, ClientId INT NOT NULL, factureclientId INT NOT NULL, PRIMARY KEY(ReglementId), FOREIGN KEY(ClientId, factureclientId) REFERENCES factureclient(ClientId, factureclientId) ); CREATE TABLE magasin( MagasinId COUNTER, MagasinNom VARCHAR(50) NOT NULL, MagasinAdresse VARCHAR(50), MagasinTelephone VARCHAR(50), PRIMARY KEY(MagasinId), UNIQUE(MagasinNom) ); CREATE TABLE unite( UniteId COUNTER, UniteAbrege VARCHAR(15) NOT NULL, UniteLibelle VARCHAR(50), PRIMARY KEY(UniteId), UNIQUE(UniteAbrege) ); CREATE TABLE fournisseur( FournisseurId COUNTER, FournisseurNom VARCHAR(30), FournisseurAdresse VARCHAR(150), FournisseurTelephone VARCHAR(25), PRIMARY KEY(FournisseurId) ); CREATE TABLE reception( ReceptionId COUNTER, ReceptionLibelle VARCHAR(50), ReceptionDate DATE, PRIMARY KEY(ReceptionId) ); CREATE TABLE commandefournisseur( FournisseurId INT, CommandefournisseurId COUNTER, CommandefournisseurDate DATE, CommandefournisseurMontant DECIMAL(15,2), PRIMARY KEY(FournisseurId, CommandefournisseurId), FOREIGN KEY(FournisseurId) REFERENCES fournisseur(FournisseurId) ); CREATE TABLE facturefournisseur( FournisseurId INT, FacturefournisseurId COUNTER, FacturefournisseurNumero VARCHAR(12) NOT NULL, FacturefournisseurTTC DECIMAL(15,2), FacturefournisseurDate DATE, FacturefournisseurMontant DECIMAL(15,2), PRIMARY KEY(FournisseurId, FacturefournisseurId), UNIQUE(FacturefournisseurNumero), FOREIGN KEY(FournisseurId) REFERENCES fournisseur(FournisseurId) ); CREATE TABLE avoirfacture( ClientId INT, factureclientId INT, PRIMARY KEY(ClientId, factureclientId), FOREIGN KEY(ClientId, factureclientId) REFERENCES factureclient(ClientId, factureclientId) ); CREATE TABLE avoir_bonlivraison( livraisonclientId INT, PRIMARY KEY(livraisonclientId), FOREIGN KEY(livraisonclientId) REFERENCES livraisonclient(livraisonclientId) ); CREATE TABLE lignefactureachatdirect( FournisseurId INT, FacturefournisseurId INT, LignefactureachatdirectId COUNTER, LignefactureachatdirectQuantite DECIMAL(15,2), LignefactureachatdirectPrixvente DECIMAL(15,2), PRIMARY KEY(FournisseurId, FacturefournisseurId, LignefactureachatdirectId), FOREIGN KEY(FournisseurId, FacturefournisseurId) REFERENCES facturefournisseur(FournisseurId, FacturefournisseurId) ); CREATE TABLE produit( ProduitId COUNTER, Produitlibelle VARCHAR(50), ProduitCodebar VARCHAR(50), ProduitMarque VARCHAR(50), ProduitCaracteristique VARCHAR(50), ProduitPuvente DECIMAL(15,2), ProduitStockinitial DECIMAL(15,2), ProduitStockalerte DECIMAL(15,2), FamilleproduitId INT NOT NULL, PRIMARY KEY(ProduitId), FOREIGN KEY(FamilleproduitId) REFERENCES familleproduit(FamilleproduitId) ); CREATE TABLE commandeclient( ClientId INT, CommandeclientId COUNTER, CommandeclientDate DATE, CommandeclientMontant DECIMAL(15,2), EtatId INT NOT NULL, PRIMARY KEY(ClientId, CommandeclientId), FOREIGN KEY(ClientId) REFERENCES client(ClientId), FOREIGN KEY(EtatId) REFERENCES etat(EtatId) ); CREATE TABLE lignecommandeclient( ClientId INT, CommandeclientId INT, lignecommandeclientId COUNTER, lignecommandeclientQuantite DECIMAL(15,2), lignecommandeclientPrixunitaire DECIMAL(15,2), LignecommandeclientRemise DECIMAL(5,2), UniteId INT NOT NULL, TvaId INT NOT NULL, ProduitId INT NOT NULL, PRIMARY KEY(ClientId, CommandeclientId, lignecommandeclientId), FOREIGN KEY(ClientId, CommandeclientId) REFERENCES commandeclient(ClientId, CommandeclientId), FOREIGN KEY(UniteId) REFERENCES unite(UniteId), FOREIGN KEY(TvaId) REFERENCES tva(TvaId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId) ); CREATE TABLE lignelivraisonclient( MagasinId INT, livraisonclientId INT, lignelivraisonclientId COUNTER, lignelivraisonclientQuantite DECIMAL(15,2), lignelivraisonclientPrixvente DECIMAL(15,2), ClientId INT NOT NULL, CommandeclientId INT NOT NULL, lignecommandeclientId INT NOT NULL, PRIMARY KEY(MagasinId, livraisonclientId, lignelivraisonclientId), FOREIGN KEY(MagasinId) REFERENCES magasin(MagasinId), FOREIGN KEY(livraisonclientId) REFERENCES livraisonclient(livraisonclientId), FOREIGN KEY(ClientId, CommandeclientId, lignecommandeclientId) REFERENCES lignecommandeclient(ClientId, CommandeclientId, lignecommandeclientId) ); CREATE TABLE lignefactureclient( ClientId INT, factureclientId INT, lignefactureclientId COUNTER, lignefactureclientQuantite DECIMAL(15,2), lignefactureclientprix DECIMAL(15,2), MagasinId INT NOT NULL, livraisonclientId INT NOT NULL, lignelivraisonclientId INT NOT NULL, PRIMARY KEY(ClientId, factureclientId, lignefactureclientId), UNIQUE(MagasinId, livraisonclientId, lignelivraisonclientId), FOREIGN KEY(ClientId, factureclientId) REFERENCES factureclient(ClientId, factureclientId), FOREIGN KEY(MagasinId, livraisonclientId, lignelivraisonclientId) REFERENCES lignelivraisonclient(MagasinId, livraisonclientId, lignelivraisonclientId) ); CREATE TABLE ligneventedirect( livraisonclientId INT, VentedirectId COUNTER, VentedirectQuantite DECIMAL(15,2), VentedirectPrixvente DECIMAL(15,2), ProduitId INT NOT NULL, PRIMARY KEY(livraisonclientId, VentedirectId), FOREIGN KEY(livraisonclientId) REFERENCES livraisonclient(livraisonclientId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId) ); CREATE TABLE lignefactureventedirect( ClientId INT, factureclientId INT, LignefactureventedirectId COUNTER, LignefactureventedirectQuantite DECIMAL(15,2), LignefactureventedirectPrixvente DECIMAL(15,2), livraisonclientId INT NOT NULL, VentedirectId INT NOT NULL, PRIMARY KEY(ClientId, factureclientId, LignefactureventedirectId), UNIQUE(livraisonclientId, VentedirectId), FOREIGN KEY(ClientId, factureclientId) REFERENCES factureclient(ClientId, factureclientId), FOREIGN KEY(livraisonclientId, VentedirectId) REFERENCES ligneventedirect(livraisonclientId, VentedirectId) ); CREATE TABLE conversion( ProduitId_1 INT, UniteId INT, UniteId_In INT, UniteId_Out INT, ProduitId INT, Valeur_In DECIMAL(10,2), Valeur_Out DECIMAL(10,2), PRIMARY KEY(ProduitId_1, UniteId, UniteId_In, UniteId_Out, ProduitId), FOREIGN KEY(ProduitId_1) REFERENCES produit(ProduitId), FOREIGN KEY(UniteId) REFERENCES unite(UniteId) ); CREATE TABLE ligneCommandefournisseur( FournisseurId INT, CommandefournisseurId INT, LigneCommandefournisseurId COUNTER, LigneCommandefournisseurQuantite DECIMAL(15,2), LigneCommandefournisseurPrixunitaire DECIMAL(15,2), LigneCommandefournisseurRemise DECIMAL(5,2), TvaId INT NOT NULL, UniteId INT NOT NULL, ProduitId INT NOT NULL, PRIMARY KEY(FournisseurId, CommandefournisseurId, LigneCommandefournisseurId), FOREIGN KEY(FournisseurId, CommandefournisseurId) REFERENCES commandefournisseur(FournisseurId, CommandefournisseurId), FOREIGN KEY(TvaId) REFERENCES tva(TvaId), FOREIGN KEY(UniteId) REFERENCES unite(UniteId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId) ); CREATE TABLE lignereception( LignereceptionId COUNTER, LignereceptionQuantite DECIMAL(15,2), LignereceptionPrixachat DECIMAL(15,2), FournisseurId INT NOT NULL, CommandefournisseurId INT NOT NULL, LigneCommandefournisseurId INT NOT NULL, PRIMARY KEY(LignereceptionId), FOREIGN KEY(FournisseurId, CommandefournisseurId, LigneCommandefournisseurId) REFERENCES ligneCommandefournisseur(FournisseurId, CommandefournisseurId, LigneCommandefournisseurId) ); CREATE TABLE lignefacturefournisseur( FournisseurId INT, FacturefournisseurId INT, LignefacturefournisseurId COUNTER, LignefacturefournisseurQuantite DECIMAL(15,2), LignefacturefournisseurPrixachat DECIMAL(15,2), LignereceptionId INT NOT NULL, PRIMARY KEY(FournisseurId, FacturefournisseurId, LignefacturefournisseurId), UNIQUE(LignereceptionId), FOREIGN KEY(FournisseurId, FacturefournisseurId) REFERENCES facturefournisseur(FournisseurId, FacturefournisseurId), FOREIGN KEY(LignereceptionId) REFERENCES lignereception(LignereceptionId) ); CREATE TABLE sortie( ProduitId INT, SortieId COUNTER, SortieCause VARCHAR(50), SortieDate DATE, SortieQuantite DECIMAL(15,2), UniteId INT NOT NULL, PRIMARY KEY(ProduitId, SortieId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId), FOREIGN KEY(UniteId) REFERENCES unite(UniteId) ); CREATE TABLE conditionspeciale( ConditionspecialeId COUNTER, ConditionspecialeTauxremise DECIMAL(5,2), ClientId INT NOT NULL, CommandeclientId INT NOT NULL, PRIMARY KEY(ConditionspecialeId), FOREIGN KEY(ClientId, CommandeclientId) REFERENCES commandeclient(ClientId, CommandeclientId) ); CREATE TABLE ligneachatdirect( ProduitId INT, ReceptionId INT, AchatdirectId COUNTER, AchatdirectQuantite DECIMAL(15,2), AchatdirectPrixvente DECIMAL(15,2), PRIMARY KEY(ProduitId, ReceptionId, AchatdirectId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId), FOREIGN KEY(ReceptionId) REFERENCES reception(ReceptionId) ); CREATE TABLE stocker( ProduitId INT, MagasinId INT, UniteId INT, StockQuantite DECIMAL(15,2), StockDate DATE, PRIMARY KEY(ProduitId, MagasinId, UniteId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId), FOREIGN KEY(MagasinId) REFERENCES magasin(MagasinId), FOREIGN KEY(UniteId) REFERENCES unite(UniteId) ); CREATE TABLE comprendre_f( ReceptionId INT, LignereceptionId INT, PRIMARY KEY(ReceptionId, LignereceptionId), FOREIGN KEY(ReceptionId) REFERENCES reception(ReceptionId), FOREIGN KEY(LignereceptionId) REFERENCES lignereception(LignereceptionId) ); CREATE TABLE catalogue( ProduitId INT, FournisseurId INT, CataloguePrix DECIMAL(15,2), CatalogueDelai DECIMAL(15,2), PRIMARY KEY(ProduitId, FournisseurId), FOREIGN KEY(ProduitId) REFERENCES produit(ProduitId), FOREIGN KEY(FournisseurId) REFERENCES fournisseur(FournisseurId) ); CREATE TABLE transformer_achat_direct( ProduitId INT, ReceptionId INT, AchatdirectId INT, FournisseurId INT, FacturefournisseurId INT, LignefactureachatdirectId INT, PRIMARY KEY(ProduitId, ReceptionId, AchatdirectId, FournisseurId, FacturefournisseurId, LignefactureachatdirectId), FOREIGN KEY(ProduitId, ReceptionId, AchatdirectId) REFERENCES ligneachatdirect(ProduitId, ReceptionId, AchatdirectId), FOREIGN KEY(FournisseurId, FacturefournisseurId, LignefactureachatdirectId) REFERENCES lignefactureachatdirect(FournisseurId, FacturefournisseurId, LignefactureachatdirectId) );