diff --git a/BusTP2.sql b/BusTP2.sql index d70e895464067b013051297cf634be848a8955ec..b44dad72db4d97c76ab4fa440763f805c70804db 100644 --- a/BusTP2.sql +++ b/BusTP2.sql @@ -2,12 +2,13 @@ DROP TABLE VILLES; CREATE TABLE Villes ( - NomV VARCHAR(50) PRIMARY KEY NOT NULL + NomV VARCHAR2(50) PRIMARY KEY NOT NULL ) CREATE TABLE Bus ( NumB INT PRIMARY KEY NOT NULL, - CapacitéB INT Check(CapacitéB > 0) NOT NULL + CapacitéB INT NOT NULL, + CONSTRAINT chk_capacity Check(CapacitéB > 0) ) CREATE TABLE Trajets ( @@ -17,37 +18,43 @@ CREATE TABLE Trajets ( ) CREATE TABLE Etapes ( - NumT INT PRIMARY KEY NOT NULL, + NumT INT NOT NULL, + NomV VARCHAR2(50) NOT NULL, + DateA DATE NOT NULL, + DateD DATE NOT NULL, + PRIMARY KEY (NumT, NomV), FOREIGN KEY (NumT) REFERENCES Trajets(NumT), - NomV VARCHAR(50) PRIMARY KEY NOT NULL, FOREIGN KEY (NomV) REFERENCES Villes(NomV), - DateA DATE NOT NULL, - DateD DATE NOT NULL + CONSTRAINT chk_duree_arret CHECK(DateD >= DateA + 5/1440) ) CREATE TABLE Tarifs ( - VilleD VARCHAR(50) PRIMARY KEY NOT NULL, + VilleD VARCHAR2(50) NOT NULL, + VilleA VARCHAR2(50) NOT NULL, + Prix NUMBER(10,2) NOT NULL, + PRIMARY KEY (VilleD, VilleA), FOREIGN KEY (VilleD) REFERENCES Villes(NomV), - VilleA VARCHAR(50) PRIMARY KEY NOT NULL, FOREIGN KEY (VilleA) REFERENCES Villes(NomV), - Prix DECIMAL(10,2) Check(Prix > 0) NOT NULL + CONSTRAINT chk_prix Check(Prix > 0), + CONSTRAINT chk_villes_diff CHECK (VilleA <> VilleD) ) CREATE TABLE Clients ( NumC INT PRIMARY KEY NOT NULL, - NomC VARCHAR(50) NOT NULL, - AdresseC VARCHAR(50) NOT NULL + NomC VARCHAR2(50) NOT NULL, + AdresseC VARCHAR2(50) NOT NULL ) CREATE TABLE Réservations ( NumR INT PRIMARY KEY NOT NULL, NumC INT NOT NULL, - FOREIGN KEY (NumC) REFERENCES Clients(NumC), NumT INT NOT NULL, - FOREIGN KEY (NumT) REFERENCES Trajets(NumT), - VilleD VARCHAR(50) NOT NULL, - FOREIGN KEY (VilleD) REFERENCES Villes(NomV), - VilleA VARCHAR(50) NOT NULL, - FOREIGN KEY (VilleA) REFERENCES Villes(NomV), - Nbplaces INT CHECK(Nbplaces > 0) NOT NULL + VilleD VARCHAR2(50) NOT NULL, + VilleA VARCHAR2(50) NOT NULL, + Nbplaces INT NOT NULL, + FOREIGN KEY (NumC) REFERENCES Clients(NumC), + FOREIGN KEY (NumT, VilleD) REFERENCES Etapes(NumT, NomV), + FOREIGN KEY (NumT, VilleA) REFERENCES Etapes(NumT, NomV), + FOREIGN KEY (VilleD, VilleA) REFERENCES Tarifs(VilleD, VilleA), + CONSTRAINT chk_places CHECK(Nbplaces > 0) ) \ No newline at end of file