185 lines
6.1 KiB
SQL
Executable File
185 lines
6.1 KiB
SQL
Executable File
create database PortDB character set utf8 collate utf8_bin;
|
||
|
||
use PortDB;
|
||
|
||
CREATE TABLE `Users` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Password` nvarchar (1000) NOT NULL COMMENT 'Пароль',
|
||
`PersonId` integer COMMENT 'Дані людини'
|
||
);
|
||
|
||
CREATE TABLE `Positions` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва позиції'
|
||
);
|
||
|
||
CREATE TABLE `ContactInfo` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Content` nvarchar (255) NOT NULL COMMENT 'Дані про контакт',
|
||
`PersonId` integer COMMENT 'Людина',
|
||
`ContactTypeId` integer COMMENT 'Тип контакту'
|
||
);
|
||
|
||
CREATE TABLE `ContactTypes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва типи контакту'
|
||
);
|
||
|
||
CREATE TABLE `Services` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Date` timestamp NOT NULL COMMENT 'Дата обслуговування',
|
||
`Done` boolean NOT NULL DEFAULT 0 COMMENT 'Виконане',
|
||
`ShipId` integer COMMENT 'Корабель',
|
||
`ServiceTypeId` integer COMMENT 'Тип обслуговування'
|
||
);
|
||
|
||
CREATE TABLE `ServiceTypes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва типу',
|
||
`Description` nvarchar (255) NOT NULL COMMENT 'Опис обслуговування'
|
||
);
|
||
|
||
CREATE TABLE `Ships` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) NOT NULL COMMENT 'Назва корабля',
|
||
`Length` decimal(10, 2) NOT NULL COMMENT 'Довжина корабля',
|
||
`Width` decimal(10, 2) NOT NULL COMMENT 'Ширина корабля',
|
||
`Capacity` integer NOT NULL COMMENT 'Місткість корабля (у тоннах)',
|
||
`ShipTypeId` integer COMMENT 'Тип корабля',
|
||
`VoyageId` integer COMMENT 'Інформація про рейс',
|
||
`DockId` integer COMMENT 'Причал'
|
||
);
|
||
|
||
CREATE TABLE `ShipTypes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва типу'
|
||
);
|
||
|
||
CREATE TABLE `Docks` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) NOT NULL COMMENT 'Назва причалу',
|
||
`MaxLength` integer NOT NULL COMMENT 'Максимальна довжина причалу',
|
||
`MaxWidth` integer NOT NULL COMMENT 'Максимальна ширина причалу'
|
||
);
|
||
|
||
CREATE TABLE `Cargoes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Quantity` integer NOT NULL COMMENT 'Кількість',
|
||
`CargoTypeId` integer COMMENT 'Тип вантажу',
|
||
`ShipId` integer COMMENT 'Корабель',
|
||
`PurposeId` integer COMMENT 'Ціль'
|
||
);
|
||
|
||
CREATE TABLE `Purposes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва цілі',
|
||
`Description` nvarchar (255) NOT NULL COMMENT 'Опис цілі'
|
||
);
|
||
|
||
CREATE TABLE `CargoTypes` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (255) UNIQUE NOT NULL COMMENT 'Назва типу'
|
||
);
|
||
|
||
CREATE TABLE `Persons` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Passport` nvarchar (1000) UNIQUE NOT NULL COMMENT 'Паспортні дані',
|
||
`FirstName` nvarchar (255) NOT NULL COMMENT 'Ім\'я',
|
||
`LastName` nvarchar (255) NOT NULL COMMENT 'Прізвище',
|
||
`PositionId` integer COMMENT 'Посада'
|
||
);
|
||
|
||
CREATE TABLE `CrewPersons` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`PersonId` integer COMMENT 'Дані людини',
|
||
`ShipId` integer COMMENT 'Корабель'
|
||
);
|
||
|
||
CREATE TABLE `Employees` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`PersonId` integer COMMENT 'Дані людини'
|
||
);
|
||
|
||
CREATE TABLE `ServiceEmployee` (
|
||
`EmployeeId` integer COMMENT 'Працівник',
|
||
`ServiceId` integer COMMENT 'Обслуговування'
|
||
);
|
||
|
||
CREATE TABLE `Country` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`Name` nvarchar (50) UNIQUE NOT NULL COMMENT 'Назва країни'
|
||
);
|
||
|
||
CREATE TABLE `DockEmplyee` (
|
||
`DockId` integer COMMENT 'Причал',
|
||
`EmployeeId` integer COMMENT 'Працівник'
|
||
);
|
||
|
||
CREATE TABLE `Voyages` (
|
||
`Id` integer PRIMARY KEY AUTO_INCREMENT,
|
||
`CountryFromId` integer COMMENT 'Країна відправки',
|
||
`CountryToId` integer COMMENT 'Країна доставки'
|
||
);
|
||
|
||
ALTER TABLE `Users`
|
||
ADD FOREIGN KEY (`PersonId`) REFERENCES `Persons` (`Id`);
|
||
|
||
ALTER TABLE `ContactInfo`
|
||
ADD FOREIGN KEY (`PersonId`) REFERENCES `Persons` (`Id`);
|
||
|
||
ALTER TABLE `ContactInfo`
|
||
ADD FOREIGN KEY (`ContactTypeId`) REFERENCES `ContactTypes` (`Id`);
|
||
|
||
ALTER TABLE `Services`
|
||
ADD FOREIGN KEY (`ShipId`) REFERENCES `Ships` (`Id`);
|
||
|
||
ALTER TABLE `Services`
|
||
ADD FOREIGN KEY (`ServiceTypeId`) REFERENCES `ServiceTypes` (`Id`);
|
||
|
||
ALTER TABLE `Ships`
|
||
ADD FOREIGN KEY (`ShipTypeId`) REFERENCES `ShipTypes` (`Id`);
|
||
|
||
ALTER TABLE `Ships`
|
||
ADD FOREIGN KEY (`VoyageId`) REFERENCES `Voyages` (`Id`);
|
||
|
||
ALTER TABLE `Ships`
|
||
ADD FOREIGN KEY (`DockId`) REFERENCES `Docks` (`Id`);
|
||
|
||
ALTER TABLE `Cargoes`
|
||
ADD FOREIGN KEY (`CargoTypeId`) REFERENCES `CargoTypes` (`Id`);
|
||
|
||
ALTER TABLE `Cargoes`
|
||
ADD FOREIGN KEY (`ShipId`) REFERENCES `Ships` (`Id`);
|
||
|
||
ALTER TABLE `Cargoes`
|
||
ADD FOREIGN KEY (`PurposeId`) REFERENCES `Purposes` (`Id`);
|
||
|
||
ALTER TABLE `Persons`
|
||
ADD FOREIGN KEY (`PositionId`) REFERENCES `Positions` (`Id`);
|
||
|
||
ALTER TABLE `CrewPersons`
|
||
ADD FOREIGN KEY (`PersonId`) REFERENCES `Persons` (`Id`);
|
||
|
||
ALTER TABLE `CrewPersons`
|
||
ADD FOREIGN KEY (`ShipId`) REFERENCES `Ships` (`Id`);
|
||
|
||
ALTER TABLE `Employees`
|
||
ADD FOREIGN KEY (`PersonId`) REFERENCES `Persons` (`Id`);
|
||
|
||
ALTER TABLE `ServiceEmployee`
|
||
ADD FOREIGN KEY (`EmployeeId`) REFERENCES `Employees` (`Id`);
|
||
|
||
ALTER TABLE `ServiceEmployee`
|
||
ADD FOREIGN KEY (`ServiceId`) REFERENCES `Services` (`Id`);
|
||
|
||
ALTER TABLE `DockEmplyee`
|
||
ADD FOREIGN KEY (`DockId`) REFERENCES `Docks` (`Id`);
|
||
|
||
ALTER TABLE `DockEmplyee`
|
||
ADD FOREIGN KEY (`EmployeeId`) REFERENCES `Employees` (`Id`);
|
||
|
||
ALTER TABLE `Voyages`
|
||
ADD FOREIGN KEY (`CountryFromId`) REFERENCES `Country` (`Id`);
|
||
|
||
ALTER TABLE `Voyages`
|
||
ADD FOREIGN KEY (`CountryToId`) REFERENCES `Country` (`Id`); |