diff --git a/tables.sql b/tables.sql index c9423f6..e28d863 100755 --- a/tables.sql +++ b/tables.sql @@ -1,103 +1,120 @@ -DROP TABLE POSSEDE; -DROP TABLE LIVRAISON; -DROP TABLE AVOIR; -DROP TABLE CONTIENT; -DROP TABLE RETOUR; -DROP TABLE PRODUIT; -DROP TABLE FOURNISSEUR; -DROP TABLE CLIENT; -DROP TABLE ZONE_GEOGRAPHIQUE; -DROP TABLE RESERVATION; -DROP TABLE LOCATION; - -CREATE TABLE FOURNISSEUR { - id_fournisseur char(4) PRIMARY KEY, - nom varchar(30) UNIQUE NOT NULL, - note numeric(5) NOT NULL CHECK(note >= 0 AND note <= 5), - description varchar(50) -}; - -CREATE TABLE LIVRAISON { - id_livraison char(4) PRIMARY KEY, - date_livraison date NOT NULL, - id_fournisseur char(4) REFERENCES FOURNISSEUR -}; - -CREATE TABLE PRODUIT { - id_produit char(4) PRIMARY KEY, - nom varchar(50) UNIQUE NOT NULL, - qte numeric NOT NULL CHECK(qte >= 0), - prix_loca numeric(6,2) NOT NULL CHECK(prix_loca > 0), - prix_reserve numeric NOT NULL CHECK(prix_reserve > 0) - id_type char(4) REFERENCES TYPE -}; - -CREATE TABLE POSSEDE { - qte_livree numeric NOT NULL, - id_produit REFERENCES PRODUIT, - id_livraison REFERENCES LIVRAISON -}; - -CREATE TABLE TYPE { - id_type char(4) PRIMARY KEY, - description varchar(50) UNIQUE NOT NULL -}; - -CREATE TABLE RESERVATION { - id_reservation char(4) PRIMARY KEY, - date_reservation date NOT NULL -}; - -CREATE TABLE CONTIENT { - qte numeric NOT NULL CHECK(qte > 0), - id_produit char(4) REFERENCES PRODUIT, - id_reservation char(4) REFERENCES RESERVATION -}; -CREATE TABLE ETAT_PROD { - etat_prod char(4) PRIMARY KEY, - caution numeric(4,2) NOT NULL CHECK (caution > 0) -} -CREATE TABLE LOCATION { - id_location char(4) PRIMARY KEY, - nom varchar(30) NOT NULL, - note numeric () NOT NULL CHECK (note > 0 AND note <= 5), - description varchar(50), - etat_prod char(4) REFERENCES ETAT_PROD -}; - -CREATE TABLE AVOIR { - qte numeric NOT NULL CHECK(qte > 0), - id_produit char(4) REFERENCES PRODUIT, - id_location char(4) REFERENCES LOCATION -}; - -CREATE TABLE CLIENT { - id_client char(4) PRIMARY KEY, - nom varchar(30) NOT NULL, - num_tel numeric(10) UNIQUE NOT NULL, - num_rue numeric(), - code_postal char(5) NOT NULL, - ville varchar(20) NOT NULL, - type_client varchar(30) NOT NULL, - authorize_reduc char(1) NOT NULL CHECK(authorize_reduc = 'y' OR authorize_reduc ='n'), - id_location char(4) REFERENCES LOCATION, - id_reservation char(4) REFERENCES RESERVATION, - num_region numeric() REFERENCES ZONE_GEOGRAPHIQUE -}; - -CREATE TABLE RETOUR { - date_retour date NOT NULL, - id_location char(4) REFERENCES LOCATION, - id_client char(4) REFERENCES CLIENT -}; - -CREATE TABLE ZONE_GEOGRAPHIQUE { - num_region numeric() PRIMARY KEY, - region varchar(30) NOT NULL -}; - - - +DROP TABLE IF EXISTS POSSEDE; +DROP TABLE IF EXISTS LIVRAISON; +DROP TABLE IF EXISTS FOURNISSEUR; +DROP TABLE IF EXISTS AVOIR; +DROP TABLE IF EXISTS CONTIENT; +DROP TABLE IF EXISTS PRODUIT; +DROP TABLE IF EXISTS TYPE; +DROP TABLE IF EXISTS RETOUR; +DROP TABLE IF EXISTS CLIENT; +DROP TABLE IF EXISTS LOCATION; +DROP TABLE IF EXISTS ETAT_PROD; +DROP TABLE IF EXISTS ZONE_GEOGRAPHIQUE; +DROP TABLE IF EXISTS RESERVATION; + +\! clear + +CREATE TABLE FOURNISSEUR( + id_fournisseur char(4) PRIMARY KEY, + nom varchar(30) UNIQUE NOT NULL, + note numeric(5) NOT NULL CHECK(note >= 0 AND note <= 5), + description varchar(50) +); + +CREATE TABLE LIVRAISON ( + id_livraison char(4) PRIMARY KEY, + date_livraison date NOT NULL, + id_fournisseur char(4) REFERENCES FOURNISSEUR +); + +CREATE TABLE TYPE ( + id_type char(4) PRIMARY KEY, + description varchar(50) UNIQUE NOT NULL +); + +CREATE TABLE PRODUIT ( + id_produit char(4) PRIMARY KEY, + nom varchar(50) UNIQUE NOT NULL, + qte numeric NOT NULL CHECK(qte >= 0), + prix numeric(6,2) NOT NULL CHECK(prix > 0), + id_type char(4) REFERENCES TYPE +); + +CREATE TABLE POSSEDE ( + qte_livree numeric NOT NULL, + id_produit char(4) REFERENCES PRODUIT, + id_livraison char(4) REFERENCES LIVRAISON +); + + +CREATE TABLE RESERVATION ( + id_reservation char(4) PRIMARY KEY, + date_reservation date NOT NULL, + date_deb date NOT NULL, + CHECK(date_reservation != date_deb) +); + +CREATE TABLE CONTIENT ( + + qte numeric NOT NULL CHECK(qte > 0), + id_produit char(4) REFERENCES PRODUIT, + id_reservation char(4) REFERENCES RESERVATION +); + +CREATE TABLE ETAT_PROD ( + etat_prod char(4) PRIMARY KEY, + caution numeric(4,2) NOT NULL CHECK (caution > 0) +); + +CREATE TABLE LOCATION ( + id_location char(4) PRIMARY KEY, + nom varchar(30) NOT NULL, + note numeric NOT NULL CHECK (note > 0 AND note <= 5), + description varchar(50), + date_deb date NOT NULL, + etat_prod char(4) REFERENCES ETAT_PROD +); + +CREATE TABLE AVOIR ( + qte numeric NOT NULL CHECK(qte > 0), + id_produit char(4) REFERENCES PRODUIT, + id_location char(4) REFERENCES LOCATION +); + +CREATE TABLE ZONE_GEOGRAPHIQUE ( + num_region char(4) PRIMARY KEY, -- a voir a quoi correspond le num_region + region varchar(30) NOT NULL +); + +CREATE TABLE CLIENT ( + id_client char(4) PRIMARY KEY, + nom varchar(30) NOT NULL, + num_tel numeric(10) UNIQUE NOT NULL CHECK(num_tel > 0 AND num_tel < 0999999999), + num_rue numeric(3), + code_postal char(5) NOT NULL, + ville varchar(20) NOT NULL, + type_client varchar(30) NOT NULL, + authorize_reduc char(1) NOT NULL CHECK(authorize_reduc = 'y' OR authorize_reduc ='n'), + id_location char(4) REFERENCES LOCATION, + id_reservation char(4) REFERENCES RESERVATION, + num_region char(4) REFERENCES ZONE_GEOGRAPHIQUE -- a voir a quoi correspond le num_region +); + +CREATE TABLE RETOUR_L ( + date_retour date NOT NULL, + id_location char(4) REFERENCES LOCATION, + id_client char(4) REFERENCES CLIENT +); + +CREATE TABLE RETOUR_R ( + date_retour date NOT NULL, + id_reservation char(4) REFERENCES RESERVATION, + id_client char(4) REFERENCES CLIENT +); + + + +/* INSERT INTO FOURNISSEUR VALUES('F001', 'JEFOURNIS', '4', 'Fournisseur'); INSERT INTO FOURNISSEUR VALUES('F002', 'FOURNIER', '3', 'Fournisseur '); INSERT INTO FOURNISSEUR VALUES('F003', 'FOURNOIS', '5', 'Excellent fournisseur'); @@ -105,57 +122,91 @@ INSERT INTO FOURNISSEUR VALUES('F004', 'FOURNETOUT', '2', 'Ce fournisseur pourra INSERT INTO FOURNISSEUR VALUES('F005', 'FOURNETTE', '4', 'Un bon fournisseur'); INSERT INTO FOURNISSEUR VALUES('F006', 'FOURNESOL', '3', 'Assez bon fournisseur'); -INSERT INTO LIVRAISON VALUES('L001', '12-01-2022', 'F002'); -INSERT INTO LIVRAISON VALUES('L002', '12-01-2022', 'F001'); -INSERT INTO LIVRAISON VALUES('L003', '13-01-2022', 'F004'); -INSERT INTO LIVRAISON VALUES('L004', '13-01-2022', 'F005'); -INSERT INTO LIVRAISON VALUES('L005', '13-01-2022', 'F002'); -INSERT INTO LIVRAISON VALUES('L006', '15-01-2022', 'F003'); - -INSERT INTO PRODUIT VALUES('P001', 'Monopoly', '125', '1.70', '5', 'T006'); -INSERT INTO PRODUIT VALUES('P002', 'Echecs', '50', '1.80', '7', 'T001'); -INSERT INTO PRODUIT VALUES('P003', 'Carcassonne', '200', '1.90', '5', 'T003'); -INSERT INTO PRODUIT VALUES('P004', 'Mikado', '70', '1.50', '3', 'T007'); -INSERT INTO PRODUIT VALUES('P005', 'UNO', '200', '1.10', '2', 'T005'); -INSERT INTO PRODUIT VALUES('P006', 'Qui est ce ?', '200', '2.20', '3', 'T002'); - -INSERT INTO POSSEDE VALUES('5', 'P001', 'L003'); -INSERT INTO POSSEDE VALUES('2', 'P002', 'L001'); -INSERT INTO POSSEDE VALUES('1', 'P006', 'L002'); -INSERT INTO POSSEDE VALUES('9', 'P005', 'L006'); -INSERT INTO POSSEDE VALUES('22', 'P001', 'L005'); -INSERT INTO POSSEDE VALUES('6', 'P004', 'L004'); +INSERT INTO LIVRAISON VALUES('l001', '12-01-2022', 'F002'); +INSERT INTO LIVRAISON VALUES('l002', '12-01-2022', 'F001'); +INSERT INTO LIVRAISON VALUES('l003', '13-01-2022', 'F004'); +INSERT INTO LIVRAISON VALUES('l004', '13-01-2022', 'F005'); +INSERT INTO LIVRAISON VALUES('l005', '13-01-2022', 'F002'); +INSERT INTO LIVRAISON VALUES('l006', '15-01-2022', 'F003'); INSERT INTO TYPE VALUES('T001', 'jeu de strategie'); INSERT INTO TYPE VALUES('T002', 'jeu d enfants'); INSERT INTO TYPE VALUES('T003', 'jeu de famille'); INSERT INTO TYPE VALUES('T004', 'jeu d adulte'); INSERT INTO TYPE VALUES('T005', 'jeu de cartes'); -INSERT INTO TYPE VALUES('T006', 'jeu de plateau'); -INSERT INTO TYPE VALUES('T007', 'jeu d adresse'); -INSERT INTO RESERVATION VALUES('R001', '18-01-2022'); -INSERT INTO RESERVATION VALUES('R002', '19-01-2022'); -INSERT INTO RESERVATION VALUES('R003', '25-01-2022'); -INSERT INTO RESERVATION VALUES('R004', '30-01-2022'); -INSERT INTO RESERVATION VALUES('R005', '31-01-2022'); -INSERT INTO RESERVATION VALUES('R006', '06-02-2022'); -INSERT INTO RESERVATION VALUES('R007', '18-02-2022'); -INSERT INTO RESERVATION VALUES('R008', '01-03-2022'); +INSERT INTO PRODUIT VALUES('P001', 'Monopoly', 'T001', 'F001', '10', '20'); +INSERT INTO PRODUIT VALUES('P002', 'Risk', 'T001', 'F002', '10', '20'); +INSERT INTO PRODUIT VALUES('P003', 'Cluedo', 'T001', 'F003', '10', '20'); +INSERT INTO PRODUIT VALUES('P004', 'Uno', 'T005', 'F004', '10', '20'); +INSERT INTO PRODUIT VALUES('P005', 'Poker', 'T005', 'F005', '10', '20'); +INSERT INTO PRODUIT VALUES('P006', 'Bataille Navale', 'T005', 'F006', '10', '20'); + +INSERT INTO RESERVATION VALUES('R002', '19-01-2022', '21-01-2022'); +INSERT INTO RESERVATION VALUES('R003', '25-01-2022', '27-01-2022'); +INSERT INTO RESERVATION VALUES('R004', '30-01-2022', '01-02-2022'); +INSERT INTO RESERVATION VALUES('R005', '31-01-2022', '01-02-2022'); +INSERT INTO RESERVATION VALUES('R006', '06-02-2022', '08-02-2022'); +INSERT INTO RESERVATION VALUES('R007', '18-02-2022', '19-02-2022'); +INSERT INTO RESERVATION VALUES('R008', '01-03-2022', '02-03-2022'); + + -INSERT INTO CONTIENT VALUES('5', 'P001'); +INSERT INTO CONTIENT VALUES('5', 'P001', 'R002'); +INSERT INTO CONTIENT VALUES('2', 'P002', 'R002'); +INSERT INTO CONTIENT VALUES('7', 'P003', 'R001'); +INSERT INTO CONTIENT VALUES('3', 'P004', 'R003'); +INSERT INTO CONTIENT VALUES('5', 'P005', 'R004'); +INSERT INTO CONTIENT VALUES('4', 'P006', 'R004'); INSERT INTO ETAT_PROD VALUES('E001','1'); -INSERT INTO ETAT_PROD VALUES('E002','1.50'); -INSERT INTO ETAT_PROD VALUES('E003','2'); -INSERT INTO ETAT_PROD VALUES('E004','2.50'); -INSERT INTO ETAT_PROD VALUES('E005','3'); - -INSERT INTO LOCATION VALUES('L001', 'Dunkerque', '4', 'Lieu '); -INSERT INTO LOCATION VALUES('L002'); -INSERT INTO LOCATION VALUES('L003'); - -INSERT INTO AVOIR VALUES(); -INSERT INTO CLIENT VALUES(); -INSERT INTO RETOUR VALUES(); -INSERT INTO ZONE_GEOGRAPHIQUE VALUES(); \ No newline at end of file +INSERT INTO ETAT_PROD VALUES('E002','0001.50'); +INSERT INTO ETAT_PROD VALUES('E003','0200.00'); +INSERT INTO ETAT_PROD VALUES('E004','0250.50'); +INSERT INTO ETAT_PROD VALUES('E005','0300.50'); + +INSERT INTO LOCATION VALUES('L001', 'Dunkerque', '4', 'Lieu ', '12-01-2022', 'E002'); +INSERT INTO LOCATION VALUES('L002', 'Lille', '3', 'Description ', '08-01-2022', 'E003'); +INSERT INTO LOCATION VALUES('L003', 'Paris', '5', 'Lieu', '18-01-L2022', 'E005'); +INSERT INTO LOCATION VALUES('L004', 'Lyon', '2', 'Lie', '28-01-2022', 'E004'); + +INSERT INTO AVOIR VALUES('3', 'P003', 'L001'); +INSERT INTO AVOIR VALUES('5', 'P001', 'L002'); +INSERT INTO AVOIR VALUES('2', 'P002', 'L002'); +INSERT INTO AVOIR VALUES('4', 'P004', 'L003'); +INSERT INTO AVOIR VALUES('5', 'P006', 'L004'); +INSERT INTO AVOIR VALUES('6', 'P005', 'L004'); + +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z001', 'Auvergne-Rhône-Alpes'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z002', 'Bourgogne-Franche-Comté'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z003', 'Bretagne'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z004', 'Centre-Val de Loire'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z005', 'Corse'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z006', 'Grand Est'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z007', 'Hauts-de-France'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z008', 'Île-de-France'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z009', 'Normandie'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z010', 'Nouvelle-Aquitaine'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z011', 'Occitanie'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z012', 'Pays de la Loire'); +INSERT INTO ZONE_GEOGRAPHIQUE VALUES('Z013', 'Provence-Alpes-Côte d''Azur'); + +INSERT INTO CLIENT VALUES('C001', 'DUPONT', '0780526591', '12', '66500', 'Perpignan', 'Particulier', 'n', 'L003', 'R005', 'Z011'); +INSERT INTO CLIENT VALUES('C002', 'DURAND', '0780525592', '10', '15000', 'Aurillac', 'Particulier', 'n', 'L001', 'R002', 'Z001'); -- n° sans nom rue == NULL !!! +INSERT INTO CLIENT VALUES('C003', 'DUPOND', '0780526593', '11', '75000', 'Paris', 'Professionel', 'y', 'L003', 'R003', 'Z008'); +INSERT INTO CLIENT VALUES('C004', 'DURANT', '0780526594', '15', '75000', 'Paris', 'Professionel', 'y', 'L003', 'R004', 'Z008'); +INSERT INTO CLIENT VALUES('C005', 'DUPONCE', '0780526595', '18', '18480', 'Saint Florent sur Cher', 'Particulier', 'n', 'L002', 'R001', 'Z003'); +INSERT INTO CLIENT VALUES('C006', 'DURANDE', '0780526596', '19', '20400', 'Bastia', 'Particulier', 'n', 'L004', 'R006', 'Z005'); +INSERT INTO CLIENT VALUES('C007', 'DUPONCE', '0780526597', '17', '92130', 'Issy les Moulineaux', 'Particulier', 'n', 'L003', 'R007', 'Z008'); + +INSERT INTO RETOUR_L VALUES('2022-12-15', 'L003', 'C001'); +INSERT INTO RETOUR_L VALUES('2022-11-14', 'L001', 'C002'); +INSERT INTO RETOUR_L VALUES('2022-11-10', 'L003', 'C003'); +INSERT INTO RETOUR_L VALUES('2023-01-11', 'L003', 'C004'); + +INSERT INTO RETOUR_R VALUES('2022-12-15', 'R003', 'C001'); +INSERT INTO RETOUR_R VALUES('2022-11-14', 'R001', 'C002'); +INSERT INTO RETOUR_R VALUES('2022-11-10', 'R003', 'C003'); +INSERT INTO RETOUR_R VALUES('2023-01-11', 'R003', 'C004'); +*/ +\d \ No newline at end of file