Commit feb460f0 authored by David Gustavo De La Rocha Ramirez's avatar David Gustavo De La Rocha Ramirez
Browse files

Update scf.sql

parent be0a850c
......@@ -6,20 +6,20 @@ CREATE TABLE Ville (
---Gare (#nom_gare: varchar, #nom_ville=>Ville, adresse: varchar, zone_horaire: int) ;
CREATE TABLE Gare (
id_gare SERIAL,
id_gare INTEGER UNIQUE NOT NULL,
nom_gare VARCHAR NOT NULL,
nom_ville VARCHAR NOT NULL REFERENCES Ville(nom_ville),
adresse VARCHAR NOT NULL,
zone_horaire INTEGER NOT NULL,
PRIMARY KEY (id_gare)
PRIMARY KEY(id_gare)
);
---Ligne (#id_ligne: integer, nom_ligne: varchar, origine=>Gare, terminus=>Gare) ;
CREATE TABLE Ligne (
id_ligne INTEGER NOT NULL UNIQUE,
nom_ligne VARCHAR,
origine INTEGER REFERENCES Gare(id_gare),
terminus INTEGER REFERENCES Gare(id_gare),
id_ligne INTEGER UNIQUE NOT NULL,
nom_ligne VARCHAR NOT NULL,
origine INTEGER REFERENCES Gare(id_gare) NOT NULL,
terminus INTEGER REFERENCES Gare(id_gare) NOT NULL,
PRIMARY KEY(id_ligne)
);
......@@ -27,17 +27,17 @@ CREATE TABLE Ligne (
CREATE TYPE typeTrain AS ENUM('TGV', 'TER');
CREATE TABLE Train (
numero INTEGER UNIQUE NOT NULL,
type_train typeTrain,
places_max INTEGER,
premiere_class BOOLEAN,
vitesse_max INTEGER,
type_train typeTrain NOT NULL,
places_max INTEGER NOT NULL,
premiere_class BOOLEAN NOT NULL,
vitesse_max INTEGER NOT NULL,
PRIMARY KEY(numero)
);
---Arrêt ( #position:integer, #gare=>Gare, #ligne=>Ligne);
CREATE TABLE Arret (
---On ajoute une cle artificielle unique pour povoir l'instancier
id_arret SERIAL,
id_arret INTEGER UNIQUE NOT NULL,
position INTEGER NOT NULL,
gare INTEGER REFERENCES Gare(id_gare) NOT NULL,
ligne INTEGER REFERENCES Ligne(id_ligne) NOT NULL,
......@@ -58,14 +58,15 @@ CREATE TYPE typeExcept AS ENUM('ajout', 'suppression');
CREATE TABLE Horaires (
id_horaires SERIAL,
id_train INTEGER NOT NULL REFERENCES Train(numero),
depart TIME,
arrivee TIME,
arret INTEGER NOT NULL REFERENCES Arret(id_arret),
date_horaires DATE,
jour typeJour REFERENCES Calendrier(jour),
type_horaire typeHoraire NOT NULL,
depart TIME NOT NULL,
arrivee TIME NOT NULL,
arret INTEGER NOT NULL REFERENCES Arret(id_arret) NOT NULL,
date_horaires DATE NOT NULL,
jour typeJour REFERENCES Calendrier(jour) NOT NULL,
type_horaire typeHoraire NOT NULL NOT NULL,
type_except typeExcept,
PRIMARY KEY(id_horaires)
PRIMARY KEY(id_horaires),
CHECK (NOT(type_horaire = 'régulier') OR type_except = NULL)
);
---Voyageur(#id_voyageur: int, nom: varchar, prenom: varchar, adresse: varchar,
......@@ -75,24 +76,25 @@ CREATE TYPE typePaiement AS ENUM('carte', 'espèce', 'chèque');
CREATE TYPE typeStatus AS ENUM('voyageur', 'grand', 'plus');
CREATE TYPE typeVoyageur AS ENUM('occasionnel', 'régulier');
CREATE TABLE Voyageur (
id_voyageur SERIAL,
nom VARCHAR,
prenom VARCHAR,
adresse VARCHAR,
tel BIGINT,
paiement typePaiement,
id_voyageur INTEGER UNIQUE NOT NULL,
nom VARCHAR NOT NULL,
prenom VARCHAR NOT NULL,
adresse VARCHAR NOT NULL,
tel BIGINT NOT NULL,
paiement typePaiement NOT NULL,
id_carte INTEGER,
status_voyageur typeStatus,
type_voyageur typeVoyageur,
PRIMARY KEY(id_voyageur)
PRIMARY KEY(id_voyageur),
CHECK (NOT(type_voyageur = 'occasionnel') OR (id_carte = NULL AND status_voyageur = NULL))
);
---Billet(#id_billet: int, prix : reel, assurance : bool, id_voyageur=>Voyageur) ;
CREATE TABLE Billet (
id_billet SERIAL,
prix NUMERIC,
assurance BOOLEAN,
id_voyageur INTEGER REFERENCES Voyageur(id_voyageur),
prix NUMERIC NOT NULL,
assurance BOOLEAN NOT NULL,
id_voyageur INTEGER REFERENCES Voyageur(id_voyageur) NOT NULL,
PRIMARY KEY(id_billet)
);
......@@ -100,10 +102,10 @@ CREATE TABLE Billet (
--- horaire_départ=>Horaires, horaire_arrivée=>Horaires);
CREATE TABLE Trajet (
id_trajet SERIAL,
id_billet INTEGER NOT NULL REFERENCES Billet(id_billet),
numero_place INTEGER,
duree TIME,
horaire_depart INTEGER REFERENCES Horaires(id_horaires),
horaire_arrivee INTEGER REFERENCES Horaires(id_horaires),
id_billet INTEGER REFERENCES Billet(id_billet) NOT NULL,
numero_place INTEGER NOT NULL,
duree TIME NOT NULL,
horaire_depart INTEGER REFERENCES Horaires(id_horaires) NOT NULL,
horaire_arrivee INTEGER REFERENCES Horaires(id_horaires) NOT NULL,
PRIMARY KEY(id_trajet)
);
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment