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`);