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

Update scf.sql

parent e3af5357
---Ville (#nom_ville: varchar) ;
CREATE TABLE Ville (
nom_ville VARCHAR PRIMARY KEY
nom_ville VARCHAR UNIQUE NOT NULL,
PRIMARY KEY(nom_ville)
);
---Gare (#nom_gare: varchar, #nom_ville=>Ville, adresse: varchar, zone_horaire: int) ;
CREATE TABLE Gare (
nom_gare VARCHAR UNIQUE NOT NULL,
nom_ville VARCHAR REFERENCES Ville(nom_ville),
id_gare SERIAL,
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 (nom_gare, nom_ville)
PRIMARY KEY (id_gare)
);
---Ligne (#id_ligne: integer, nom_ligne: varchar, origine=>Gare, terminus=>Gare) ;
CREATE TABLE Ligne (
id INTEGER PRIMARY KEY,
id_ligne INTEGER NOT NULL UNIQUE,
nom_ligne VARCHAR,
origine VARCHAR REFERENCES Gare(nom_gare),
terminus VARCHAR REFERENCES Gare(nom_gare)
origine INTEGER REFERENCES Gare(id_gare),
terminus INTEGER REFERENCES Gare(id_gare),
PRIMARY KEY(id_ligne)
);
---Train (#numero:integer, type: {TGV, TER}, places_max : integer, premiere_class : bool, vitesse_max : integer) ;
CREATE TYPE typeTrain AS ENUM('TGV', 'TER');
CREATE TABLE Train (
numero INTEGER PRIMARY KEY,
numero INTEGER UNIQUE NOT NULL,
type_train typeTrain,
places_max INTEGER,
premiere_class BOOLEAN,
vitesse_max INTEGER
vitesse_max INTEGER,
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,
position INTEGER NOT NULL,
gare INTEGER REFERENCES Gare(id_gare) NOT NULL,
ligne INTEGER REFERENCES Ligne(id_ligne) NOT NULL,
PRIMARY KEY(id_arret)
);
---Calendrier (#jour : {lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche})
CREATE TYPE typeJour AS ENUM('lundi', 'mardi', 'mecredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
CREATE TABLE Calendrier (
jour typeJour UNIQUE NOT NULL,
PRIMARY KEY(jour)
);
---Horaires (#id_horaires: int, #id_train =>Train, départ : heure, arrivée : heure, arrêt=>Arrêt,
--- date : date, jour=>Calendrier, type: {régulier, exceptionnel}, type_except : {ajout, suppression}) ;
CREATE TYPE typeHoraire AS ENUM('régulier', 'exceptionnel');
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,
type_except typeExcept,
PRIMARY KEY(id_horaires)
);
---Voyageur(#id_voyageur: int, nom: varchar, prenom: varchar, adresse: varchar,
--- tel: longint, paiement: {carte, espèce, chèque}, id_carte: integer,
--- status: {voyageur, grand, plus}, type: {occasionnel, régulier});
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 INTEGER PRIMARY KEY,
id_voyageur SERIAL,
nom VARCHAR,
prenom VARCHAR,
adresse VARCHAR,
......@@ -39,12 +83,27 @@ CREATE TABLE Voyageur (
paiement typePaiement,
id_carte INTEGER,
status_voyageur typeStatus,
type_voyageur typeVoyageur
type_voyageur typeVoyageur,
PRIMARY KEY(id_voyageur)
);
---Billet(#id_billet: int, prix : reel, assurance : bool, id_voyageur=>Voyageur) ;
CREATE TABLE Billet (
id_billet INTEGER PRIMARY KEY,
id_billet SERIAL,
prix NUMERIC,
assurance BOOLEAN,
id_voyageur INTEGER REFERENCES Voyageur(id_voyageur)
);
\ No newline at end of file
id_voyageur INTEGER REFERENCES Voyageur(id_voyageur),
PRIMARY KEY(id_billet)
);
---Trajet (#id_trajet : int, #id_billet=>Billet, numéro_place :integer, durée: heure,
--- 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),
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