Загрузка данных
USE user333_db;
GO
-- Удаление таблиц в обратном порядке связей для избежания конфликтов при перезапуске
DROP TABLE IF EXISTS Kurs_Denezhnoj_Edinicy;
DROP TABLE IF EXISTS Dopolnitelnye_Usloviya_Arendy;
DROP TABLE IF EXISTS Utochnenie_Dogovora;
DROP TABLE IF EXISTS Platezhnyj_Dokument;
DROP TABLE IF EXISTS Dogovor_Arendy;
DROP TABLE IF EXISTS Transportnoe_Sredstvo;
DROP TABLE IF EXISTS Denezhnaya_Edinica;
DROP TABLE IF EXISTS Klient;
DROP TABLE IF EXISTS Kategoriya;
DROP TABLE IF EXISTS Ofis_Prokata;
DROP TABLE IF EXISTS Strana;
GO
-- 1. Таблица: Страна
CREATE TABLE Strana (
Kod_Strany INT IDENTITY(1,1) PRIMARY KEY,
Nazvanie NVARCHAR(100) NOT NULL
);
GO
-- 2. Таблица: Офис проката
CREATE TABLE Ofis_Prokata (
Kod_Ofisa INT IDENTITY(1,1) PRIMARY KEY,
Gorod NVARCHAR(100) NOT NULL,
Adres NVARCHAR(255) NOT NULL,
Kod_Strany INT NOT NULL,
CONSTRAINT FK_OfisProkata_Strana FOREIGN KEY (Kod_Strany) REFERENCES Strana(Kod_Strany)
);
GO
-- 3. Таблица: Категория
CREATE TABLE Kategoriya (
Kod_Kategorii INT IDENTITY(1,1) PRIMARY KEY,
Nazvanie NVARCHAR(100) NOT NULL,
Kolichestvo_Mest INT NOT NULL
);
GO
-- 4. Таблица: Клиент
CREATE TABLE Klient (
Kod_Klienta INT IDENTITY(1,1) PRIMARY KEY,
Familiya NVARCHAR(100) NOT NULL,
Imya NVARCHAR(100) NOT NULL,
Otchestvo NVARCHAR(100) NULL,
Gorod NVARCHAR(100) NOT NULL,
Adres NVARCHAR(255) NOT NULL,
Voditelskoe_Udostoverenie NVARCHAR(50) NOT NULL,
Kod_Strany INT NOT NULL,
CONSTRAINT AK_Klient_Voditelskoe UNIQUE (Voditelskoe_Udostoverenie), -- AK1.1
CONSTRAINT FK_Klient_Strana FOREIGN KEY (Kod_Strany) REFERENCES Strana(Kod_Strany)
);
GO
-- 5. Таблица: Денежная единица
CREATE TABLE Denezhnaya_Edinica (
Kod_Valyuty INT IDENTITY(1,1) PRIMARY KEY,
Nazvanie NVARCHAR(50) NOT NULL,
Kod_Strany INT NOT NULL,
CONSTRAINT AK_Valyuta_Nazvanie UNIQUE (Nazvanie), -- AK1.1
CONSTRAINT FK_Valyuta_Strana FOREIGN KEY (Kod_Strany) REFERENCES Strana(Kod_Strany) -- AK1.2 / FK
);
GO
-- 6. Таблица: Транспортное средство
CREATE TABLE Transportnoe_Sredstvo (
Kod_TS INT IDENTITY(1,1) PRIMARY KEY,
Kod_Kategorii INT NOT NULL,
Stoimost_Prokata MONEY NOT NULL,
Marka NVARCHAR(100) NOT NULL,
Model NVARCHAR(100) NOT NULL,
Cvet NVARCHAR(50) NOT NULL,
Gosnomer NVARCHAR(20) NOT NULL,
Kod_Valyuty INT NOT NULL,
CONSTRAINT AK_TS_Gosnomer UNIQUE (Gosnomer), -- AK1.1
CONSTRAINT FK_TS_Kategoriya FOREIGN KEY (Kod_Kategorii) REFERENCES Kategoriya(Kod_Kategorii),
CONSTRAINT FK_TS_Valyuta FOREIGN KEY (Kod_Valyuty) REFERENCES Denezhnaya_Edinica(Kod_Valyuty)
);
GO
-- 7. Таблица: Договор аренды
CREATE TABLE Dogovor_Arendy (
Nomer_Dogovora INT IDENTITY(1,1) PRIMARY KEY,
-- Точки get. и return. из схемы заменены на разрешенные подчеркивания
Get_Kod_Ofisa INT NOT NULL,
Return_Kod_Ofisa INT NOT NULL,
Data_Oformleniya DATE NOT NULL,
Data_Oplaty DATE NULL,
Srok_Arendy INT NOT NULL,
Data_Nachala_Arendy DATE NOT NULL,
Fakticheskaya_Data_Okonchaniya_Arendy DATE NULL,
Menedzher NVARCHAR(150) NOT NULL,
Telefon NVARCHAR(20) NOT NULL,
Dogovor_Annulirovan BIT NOT NULL DEFAULT 0,
Kod_Klienta INT NOT NULL,
Kod_TS INT NOT NULL,
CONSTRAINT FK_Dogovor_OfisVydachi FOREIGN KEY (Get_Kod_Ofisa) REFERENCES Ofis_Prokata(Kod_Ofisa),
CONSTRAINT FK_Dogovor_OfisVozvrata FOREIGN KEY (Return_Kod_Ofisa) REFERENCES Ofis_Prokata(Kod_Ofisa),
CONSTRAINT FK_Dogovor_Klient FOREIGN KEY (Kod_Klienta) REFERENCES Klient(Kod_Klienta),
CONSTRAINT FK_Dogovor_TS FOREIGN KEY (Kod_TS) REFERENCES Transportnoe_Sredstvo(Kod_TS)
);
GO
-- 8. Таблица: Платежный документ
CREATE TABLE Platezhnyj_Dokument (
Nomer_Dokumenta INT PRIMARY KEY, -- По схеме вводится вручную (без автоинкремента)
Tip_Dokumenta NVARCHAR(100) NOT NULL,
Data_Oplaty DATE NOT NULL,
Summa MONEY NOT NULL,
Kod_Valyuty INT NOT NULL,
CONSTRAINT FK_Platezh_Valyuta FOREIGN KEY (Kod_Valyuty) REFERENCES Denezhnaya_Edinica(Kod_Valyuty)
);
GO
-- 9. Таблица: Уточнение договора
CREATE TABLE Utochnenie_Dogovora (
Nomer_Dogovora INT NOT NULL,
Nomer_Zapisi INT NOT NULL,
Koefficient DECIMAL(5,2) NOT NULL,
PRIMARY KEY (Nomer_Dogovora, Nomer_Zapisi),
CONSTRAINT FK_Utochnenie_Dogovor FOREIGN KEY (Nomer_Dogovora) REFERENCES Dogovor_Arendy(Nomer_Dogovora) ON DELETE CASCADE
);
GO
-- 10. Таблица: Дополнительные условия аренды
CREATE TABLE Dopolnitelnye_Usloviya_Arendy (
Nomer_Zapisi INT IDENTITY(1,1) PRIMARY KEY,
Uslovie NVARCHAR(MAX) NOT NULL,
Kod_Valyuty INT NOT NULL,
Stoimost MONEY NOT NULL,
CONSTRAINT FK_DopUsloviya_Valyuta FOREIGN KEY (Kod_Valyuty) REFERENCES Denezhnaya_Edinica(Kod_Valyuty)
);
GO
-- 11. Таблица: Курс денежной единицы
CREATE TABLE Kurs_Denezhnoj_Edinicy (
Nomer_Zapisi INT IDENTITY(1,1) PRIMARY KEY,
In_Kod_Valyuty INT NOT NULL, -- Входная валютная пара (1-я р.е.)
For_Kod_Valyuty INT NOT NULL, -- Выходная валютная пара (2-я р.е.)
Data DATE NOT NULL,
Znachenie_Kursa DECIMAL(18,4) NOT NULL,
CONSTRAINT AK_Kurs_Para_Data UNIQUE (In_Kod_Valyuty, For_Kod_Valyuty, Data), -- AK1.1
CONSTRAINT FK_Kurs_ValyutaVhod FOREIGN KEY (In_Kod_Valyuty) REFERENCES Denezhnaya_Edinica(Kod_Valyuty),
CONSTRAINT FK_Kurs_ValyutaVyhod FOREIGN KEY (For_Kod_Valyuty) REFERENCES Denezhnaya_Edinica(Kod_Valyuty)
);
GO