· 8 years ago · Jan 12, 2018, 09:30 PM
1-- ОпиÑание таблицы Ð´Ð»Ñ Ñтанции --
2DROP TABLE IF EXISTS Station;
3CREATE TABLE Station (
4 name VARCHAR(255) NOT NULL UNIQUE, -- название Ñтанции
5 stationID INT AUTO_INCREMENT NOT NULL, -- ключевое поле
6 PRIMARY KEY (stationID) -- опиÑание оÑновного ключа, ÑоÑтоÑщего из единÑтвенного Ð¿Ð¾Ð»Ñ stationID
7);
8
9
10-- ОпиÑание таблицы Ð´Ð»Ñ Ð¿Ð¾ÐµÐ·Ð´Ð° --
11DROP TABLE IF EXISTS Train;
12CREATE TABLE Train (
13 name VARCHAR(255) NOT NULL UNIQUE, -- название поезда
14 trainID INT AUTO_INCREMENT NOT NULL, -- ключевое поле
15 arriveStation VARCHAR(255) NOT NULL, -- название Ñтанции Ð¿Ñ€Ð¸Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð°
16 maxPlaces INT AUTO_INCREMENT NOT NULL, -- количеÑтво меÑÑ‚ в поезде
17 currentFreePlaces INT AUTO_INCREMENT NOT NULL, -- текущее Ñвободное количеÑтво меÑÑ‚ в поезде
18 PRIMARY KEY (trainID) -- опиÑание оÑновного ключа, ÑоÑтоÑщего из единÑтвенного Ð¿Ð¾Ð»Ñ trainID
19);
20
21-- ОпиÑание таблицы Ð´Ð»Ñ Ð¿Ð°ÑÑажира --
22DROP TABLE IF EXISTS Passenger;
23CREATE TABLE Passenger (
24 name VARCHAR(255) NOT NULL, -- Ð¸Ð¼Ñ Ð¿Ð°ÑÑажира
25 surname VARCHAR(255) NOT NULL, -- Ñ„Ð°Ð¼Ð¸Ð»Ð¸Ñ Ð¿Ð°ÑÑажира
26 dateOfBirthday VARCHAR(255) NOT NULL, -- дата Ñ€Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°ÑÑажира
27 passengerID INT AUTO_INCREMENT NOT NULL, -- ключевое поле
28 PRIMARY KEY (passengerID) -- опиÑание оÑновного ключа, ÑоÑтоÑщего из единÑтвенного Ð¿Ð¾Ð»Ñ passengerID
29);
30
31-- ОпиÑание таблицы Ð´Ð»Ñ Ð±Ð¸Ð»ÐµÑ‚Ð° --
32DROP TABLE IF EXISTS Ticket;
33CREATE TABLE Ticket (
34 ticketID INT AUTO_INCREMENT NOT NULL UNIQUE, -- ключевое поле
35 passengerID INT NOT NULL, -- ÑÑылка на таблицу паÑÑажира (passengerID -> Passenger)
36 trainID INT NOT NULL, -- ÑÑылка на таблицу поезда (trainID -> Train)
37 PRIMARY KEY (ticketID), -- опиÑание оÑновного ключа, ÑоÑтоÑщего из единÑтвенного Ð¿Ð¾Ð»Ñ ticketID
38 FOREIGN KEY (passengerID) REFERENCES Passenger(passengerID) ON DELETE NO ACTION ON UPDATE NO ACTION,
39 FOREIGN KEY (trainID) REFERENCES Train(trainID) ON DELETE NO ACTION ON UPDATE NO ACTION
40); -- иÑпользуем внешние ключи и контролируем таблицы-потомки во Ð²Ñ€ÐµÐ¼Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ñ… обновлений или удалений данных в родительÑкой
41 -- таблице. При NO ACTION еÑли ÑвÑзанные запиÑи родительÑкой таблицы как-то изменÑÑŽÑ‚ÑÑ Ñо значениÑми которые ÑодержатÑÑ
42 -- в ÑоответÑвующих запиÑÑÑ… дочерней таблицы, то БД не даÑÑ‚ изменить запиÑÑŒ в родительÑкой таблице.
43 -- (что логично в данной Ñитуации, как мне видитÑÑ)
44
45-- ОпиÑание таблицы Ð´Ð»Ñ Ñ€Ð°ÑпиÑÐ°Ð½Ð¸Ñ Ð´Ð²Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð¾Ð² --
46DROP TABLE IF EXISTS TimeTable;
47CREATE TABLE TimeTable (
48 currentID INT AUTO_INCREMENT NOT NULL UNIQUE, -- ключевое поле
49 stationID INT NOT NULL, -- ÑÑылка на таблицу Ñтанции (stationID -> Station)
50 trainID INT NOT NULL, -- ÑÑылка на таблицу поезда (trainID -> Train)
51 timeArrive TIME NOT NULL, -- Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸Ð±Ñ‹Ñ‚Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð°
52 timeOutgo TIME NOT NULL, -- Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐµÐ·Ð´Ð°
53 PRIMARY KEY (currentID), -- опиÑание оÑновного ключа, ÑоÑтоÑщего из единÑтвенного Ð¿Ð¾Ð»Ñ currentID
54 FOREIGN KEY (stationID) REFERENCES Station(stationID) ON DELETE NO ACTION ON UPDATE NO ACTION, -- внешние ключи
55 FOREIGN KEY (trainID) REFERENCES Train(trainID) ON DELETE NO ACTION ON UPDATE NO ACTION
56);