This repository has been archived on 2022-12-11. You can view files and clone it, but cannot push or open issues or pull requests.
metro/SQL/Create BD.sql

179 lines
3.9 KiB
Transact-SQL

USE master
GO
CREATE DATABASE Metro
ON
(NAME='Metro_Data',
FILENAME='C:\Metro\Metro.mdf',
SIZE=5,
MAXSIZE=100,
FILEGROWTH=2)
LOG ON
(NAME='Metro_Log',
FILENAME='C:\Metro\Metro.ldf',
SIZE=5,
MAXSIZE=100,
FILEGROWTH=2)
GO
USE Metro
GO
CREATE DEFAULT d_start_time
AS '5:15'
GO
CREATE DEFAULT d_finish_time
AS '23:55'
GO
CREATE RULE r_kvalif
AS @x IN ('Ïåðâàÿ','Âòîðàÿ','Òðåòüÿ')
GO
CREATE TYPE t_doljnost
FROM nvarchar(20) not null
GO
CREATE DEFAULT d_doljnost
AS 'Äèñïåò÷åð'
GO
EXEC sp_bindefault 'd_doljnost', 't_doljnost'
GO
CREATE RULE r_doljnost
AS @x IN ('Äèñïåò÷åð', 'Ñòàðøèé Äèñïåò÷åð')
GO
EXEC sp_bindrule 'r_doljnost', 't_doljnost'
GO
CREATE TYPE t_fio
FROM nvarchar(64) not null
GO
CREATE RULE r_fio
AS
@x like '% %'
GO
exec sp_bindrule 'r_fio', 't_fio'
GO
CREATE TABLE typsostav (
typkod int PRIMARY KEY,
name nvarchar(20),
kolmest int,
dlina float CHECK (dlina < 200) not null,
shirina int CHECK (shirina < 3000) not null,
visota int CHECK (visota < 5000) not null,
naznachenie nvarchar(30),
koleya int CHECK (koleya=1520) not null,
speed int
)
CREATE TABLE psostav (
serial int PRIMARY KEY,
typkod int,
stat int,
probeg int not null,
iznos_motor int not null,
iznos_tk int not null,
constraint FK_typkod_psostav foreign key (typkod) references typsostav
)
GO
CREATE TABLE mashinist (
serialpas float PRIMARY KEY,
serial int,
fio t_fio,
tel nvarchar(16) not null,
staj int not null,
kvalif nvarchar(10),
constraint FK_serial_mashinist foreign key (serial) references psostav
)
GO
EXEC sp_bindrule 'r_kvalif', 'mashinist.kvalif'
GO
CREATE TABLE dispetcher (
serialpas float PRIMARY KEY,
fio t_fio,
tel nvarchar(16) not null,
doljnost t_doljnost,
pas nvarchar(1000) not null
)
GO
CREATE TABLE stanciya (
kod int PRIMARY KEY,
name nvarchar(20),
paspotok int,
kod_vpered int,
rast_vpered int,
kod_nazad int,
rast_nazad int,
stat int,
start_time time,
finish_time time
)
GO
EXEC sp_bindefault 'd_start_time', 'stanciya.start_time'
EXEC sp_bindefault 'd_finish_time', 'stanciya.finish_time'
CREATE TABLE vetka (
name nvarchar(20) PRIMARY KEY,
start_stanciya int,
finish_stanciya int,
depo_status int,
start_status int,
finish_status int,
constraint FK_start_stanciya foreign key (start_stanciya) references stanciya(kod),
constraint FK_finish_stanciya foreign key (finish_stanciya) references stanciya(kod),
)
GO
CREATE TABLE spravka (
kod int PRIMARY KEY,
name nvarchar(30),
krit float,
srok_dos_det int,
vremya_remonta int
)
GO
CREATE TABLE remont (
typik int PRIMARY KEY,
serial int,
start datetime,
kod int,
constraint FK_kod_remont foreign key (kod) references spravka,
constraint FK_serial_remont foreign key (serial) references psostav
)
GO
CREATE TABLE raspisanie (
start_vremya time,
start_kod int,
finish_vremya time,
finish_kod int,
naprav int,
vetka nvarchar(20),
serial int,
serialpas float,
constraint PK_jurnal_raspisanie PRIMARY KEY (start_vremya,serialpas,serial,start_kod),
constraint FK_serial_raspisanie foreign key (serial) references psostav,
constraint FK_serialpas_raspisanie foreign key (serialpas) references dispetcher,
constraint FK_start_kod_raspisanie foreign key (start_kod) references stanciya(kod),
constraint FK_finish_kod_raspisanie foreign key (finish_kod) references stanciya(kod),
constraint FK_vetka_raspisanie foreign key (vetka) references vetka(name)
)
GO
CREATE TABLE jurnal (
start datetime,
serialpas float,
serial int,
typik int,
zametka nvarchar(30)
constraint PK_jurnal PRIMARY KEY (start,serialpas,serial,typik),
constraint FK_serial_jurnal foreign key (serial) references psostav,
constraint FK_serialpas_jurnal foreign key (serialpas) references dispetcher,
constraint FK_typik_jurnal foreign key (typik) references remont
)
GO