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
| --Personnes
CREATE TABLE PE_personne(
PE_ident SERIAL, --Identifiant unique de la personne
PE_date_crea DATE NOT NULL, --Date de création de la personne
PRIMARY KEY(PE_ident)
);
--Fournisseurs
CREATE TABLE FO_fournisseur(
PE_ident INTEGER,
FO_numero SMALLINT NOT NULL, --Numéro interne unique du fournisseur
PRIMARY KEY(PE_ident),
UNIQUE(FO_numero),
FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
);
--Clients
CREATE TABLE CL_client(
PE_ident INTEGER,
CL_numero SMALLINT NOT NULL, --Numéro interne unique du client
PRIMARY KEY(PE_ident),
UNIQUE(CL_numero),
FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
);
--Commandes clients
CREATE TABLE CC_cde_client(
CC_ident SERIAL, --Identifiant de la commande client
CC_date DATE NOT NULL, --Date de création de la commande client
PE_ident INTEGER NOT NULL,
PRIMARY KEY(CC_ident),
FOREIGN KEY(PE_ident) REFERENCES CL_client(PE_ident)
);
--Articles
CREATE TABLE AR_article(
AR_ident SERIAL, --Identifiant de l'article
AR_libelle VARCHAR(50) NOT NULL, --Libellé de l'article
AR_refint CHAR(8) NOT NULL, --Référence interne de l'article
PRIMARY KEY(AR_ident),
UNIQUE(AR_refint)
);
--Barème tarifaire
CREATE TABLE BA_bareme(
BA_ident SERIAL,
BA_code CHAR(4) NOT NULL, --Code barème
BA_libellé VARCHAR(50), --Libellé du barème
PRIMARY KEY(BA_ident),
UNIQUE(BA_code)
);
--Lignes des commandes clients
CREATE TABLE LC_ligne_cde(
CC_ident INTEGER,
LC_sequence SMALLINT, --N° de ligne de commande client
LC_quantite NUMERIC(9,2) NOT NULL, --Quantité commandée
AR_ident INTEGER NOT NULL,
PRIMARY KEY(CC_ident, LC_sequence),
FOREIGN KEY(CC_ident) REFERENCES CC_cde_client(CC_ident),
FOREIGN KEY(AR_ident) REFERENCES AR_article(AR_ident)
);
--Correspondance article interne / article fournisseur
CREATE TABLE PR_proposer(
PE_ident INTEGER,
AR_ident INTEGER,
CADATE DATE,
PR_reffou CHAR(20) NOT NULL,
PR_libfou VARCHAR(100) NOT NULL, --Libellé de la référence fournisseur
PR_indplan CHAR(4) NOT NULL, --Indice de plan fournisseur
PRIMARY KEY(PE_ident, AR_ident, CADATE),
FOREIGN KEY(PE_ident) REFERENCES FO_fournisseur(PE_ident),
FOREIGN KEY(AR_ident) REFERENCES AR_article(AR_ident)
);
CREATE TABLE AF_affecter(
PE_ident INTEGER,
BA_ident INTEGER,
CADATE DATE,
PRIMARY KEY(PE_ident, BA_ident, CADATE),
FOREIGN KEY(PE_ident) REFERENCES CL_client(PE_ident),
FOREIGN KEY(BA_ident) REFERENCES BA_bareme(BA_ident)
);
CREATE TABLE TA_tarifer(
AR_ident INTEGER,
BA_ident INTEGER,
CADATE DATE,
TA_prix NUMERIC(7,2) NOT NULL,
PRIMARY KEY(AR_ident, BA_ident, CADATE),
FOREIGN KEY(AR_ident) REFERENCES AR_article(AR_ident),
FOREIGN KEY(BA_ident) REFERENCES BA_bareme(BA_ident)
); |
Partager