Загрузка данных
-- =====================================================
-- База данных "Прокат автомобилей" (схема со стр. 122-123)
-- =====================================================
CREATE DATABASE [car-rental-mssql];
GO
USE [car-rental-mssql];
GO
-- 1. Страна
CREATE TABLE [Страна] (
[Код страны] INT IDENTITY(1,1) NOT NULL,
[Название] NVARCHAR(100) NOT NULL,
CONSTRAINT [PK_Страна] PRIMARY KEY CLUSTERED ([Код страны] ASC)
);
GO
-- 2. Денежная единица
CREATE TABLE [Денежная единица] (
[Код валюты] INT IDENTITY(1,1) NOT NULL,
[Название] NVARCHAR(100) NOT NULL,
[Код страны] INT NULL,
CONSTRAINT [PK_Денежная единица] PRIMARY KEY CLUSTERED ([Код валюты] ASC),
CONSTRAINT [UQ_Денежная единица_Название] UNIQUE ([Название]),
CONSTRAINT [FK_Денежная единица_Страна] FOREIGN KEY ([Код страны])
REFERENCES [Страна] ([Код страны])
);
GO
-- 3. Курс денежной единицы
CREATE TABLE [Курс денежной единицы] (
[Номер записи] INT IDENTITY(1,1) NOT NULL,
[in_Код валюты] INT NULL, -- исходная валюта
[for_Код валюты] INT NULL, -- в какую переводим
[Дата] DATE NULL,
[Значение курса] DECIMAL(18,4) NULL,
CONSTRAINT [PK_Курс денежной единицы] PRIMARY KEY CLUSTERED ([Номер записи] ASC),
CONSTRAINT [FK_Курс_in] FOREIGN KEY ([in_Код валюты])
REFERENCES [Денежная единица] ([Код валюты]),
CONSTRAINT [FK_Курс_for] FOREIGN KEY ([for_Код валюты])
REFERENCES [Денежная единица] ([Код валюты])
);
GO
-- 4. Клиент
CREATE TABLE [Клиент] (
[Код клиента] INT IDENTITY(1,1) NOT NULL,
[Фамилия] NVARCHAR(100) NOT NULL,
[Имя] NVARCHAR(100) NOT NULL,
[Отчество] NVARCHAR(100) NULL,
[Город] NVARCHAR(100) NULL,
[Адрес] NVARCHAR(255) NULL,
[Водительское удостоверение] NVARCHAR(50) NOT NULL,
[Код страны] INT NULL,
CONSTRAINT [PK_Клиент] PRIMARY KEY CLUSTERED ([Код клиента] ASC),
CONSTRAINT [UQ_Клиент_ВУ] UNIQUE ([Водительское удостоверение]),
CONSTRAINT [FK_Клиент_Страна] FOREIGN KEY ([Код страны])
REFERENCES [Страна] ([Код страны])
);
GO
-- 5. Офис проката
CREATE TABLE [Офис проката] (
[Код офиса] INT IDENTITY(1,1) NOT NULL,
[Город] NVARCHAR(100) NULL,
[Адрес] NVARCHAR(255) NULL,
[Код страны] INT NULL,
CONSTRAINT [PK_Офис проката] PRIMARY KEY CLUSTERED ([Код офиса] ASC),
CONSTRAINT [FK_Офис проката_Страна] FOREIGN KEY ([Код страны])
REFERENCES [Страна] ([Код страны])
);
GO
-- 6. Категория
CREATE TABLE [Категория] (
[Код категории] INT IDENTITY(1,1) NOT NULL,
[Название] NVARCHAR(100) NOT NULL,
[Количество мест] INT NULL,
CONSTRAINT [PK_Категория] PRIMARY KEY CLUSTERED ([Код категории] ASC),
CONSTRAINT [UQ_Категория_Название] UNIQUE ([Название])
);
GO
-- 7. Транспортное средство
CREATE TABLE [Транспортное средство] (
[Код ТС] INT IDENTITY(1,1) NOT NULL,
[Код категории] INT NULL,
[Стоимость проката] DECIMAL(18,2) NULL,
[Марка] NVARCHAR(100) NULL,
[Модель] NVARCHAR(100) NULL,
[Цвет] NVARCHAR(50) NULL,
[Госномер] NVARCHAR(20) NOT NULL,
[Код валюты] INT NULL,
CONSTRAINT [PK_Транспортное средство] PRIMARY KEY CLUSTERED ([Код ТС] ASC),
CONSTRAINT [UQ_ТС_Госномер] UNIQUE ([Госномер]),
CONSTRAINT [FK_ТС_Категория] FOREIGN KEY ([Код категории])
REFERENCES [Категория] ([Код категории]),
CONSTRAINT [FK_ТС_Денежная единица] FOREIGN KEY ([Код валюты])
REFERENCES [Денежная единица] ([Код валюты])
);
GO
-- 8. Договор аренды
CREATE TABLE [Договор аренды] (
[Номер договора] INT IDENTITY(1,1) NOT NULL,
[рег_Код офиса] INT NULL, -- офис выдачи
[Код клиента] INT NULL,
[Дата оформления] DATE NULL,
[Дата оплаты] DATE NULL,
[Срок аренды] INT NULL, -- в днях
[Дата начала аренды] DATE NULL,
[Фактическая дата окончания аренды] DATE NULL,
[Менеджер] NVARCHAR(150) NULL,
[Телефон] NVARCHAR(50) NULL,
[Договор аннулирован] BIT NULL,
[Код ТС] INT NULL,
CONSTRAINT [PK_Договор аренды] PRIMARY KEY CLUSTERED ([Номер договора] ASC),
CONSTRAINT [FK_Договор_Офис_выдачи] FOREIGN KEY ([рег_Код офиса])
REFERENCES [Офис проката] ([Код офиса]),
CONSTRAINT [FK_Договор_Клиент] FOREIGN KEY ([Код клиента])
REFERENCES [Клиент] ([Код клиента]),
CONSTRAINT [FK_Договор_ТС] FOREIGN KEY ([Код ТС])
REFERENCES [Транспортное средство] ([Код ТС])
);
GO
-- 9. Платежный документ
CREATE TABLE [Платежный документ] (
[Номер документа] INT IDENTITY(1,1) NOT NULL,
[Номер договора] INT NULL,
[Тип документа] NVARCHAR(100) NULL,
[Дата оплаты] DATE NULL,
[Сумма] DECIMAL(18,2) NULL,
[Код валюты] INT NULL,
CONSTRAINT [PK_Платежный документ] PRIMARY KEY CLUSTERED ([Номер документа] ASC),
CONSTRAINT [FK_Платежный_Договор] FOREIGN KEY ([Номер договора])
REFERENCES [Договор аренды] ([Номер договора]),
CONSTRAINT [FK_Платежный_Валюта] FOREIGN KEY ([Код валюты])
REFERENCES [Денежная единица] ([Код валюты])
);
GO
-- 10. Уточнение договора
CREATE TABLE [Уточнение договора] (
[Номер договора] INT NOT NULL,
[Номер записи] INT IDENTITY(1,1) NOT NULL,
[Коэффициент] DECIMAL(10,4) NULL,
CONSTRAINT [PK_Уточнение договора] PRIMARY KEY CLUSTERED ([Номер записи] ASC),
CONSTRAINT [FK_Уточнение_Договор] FOREIGN KEY ([Номер договора])
REFERENCES [Договор аренды] ([Номер договора])
);
GO
-- 11. Дополнительные условия аренды
CREATE TABLE [Дополнительные условия аренды] (
[Номер записи] INT IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Доп условия аренды] PRIMARY KEY CLUSTERED ([Номер записи] ASC)
);
GO
-- 12. Условие (связывает доп. условия с денежной единицей)
CREATE TABLE [Условие] (
[Номер записи] INT IDENTITY(1,1) NOT NULL,
[Код валюты] INT NULL,
[Стоимость] DECIMAL(18,2) NULL,
CONSTRAINT [PK_Условие] PRIMARY KEY CLUSTERED ([Номер записи] ASC),
CONSTRAINT [FK_Условие_ДопУсловия] FOREIGN KEY ([Номер записи])
REFERENCES [Дополнительные условия аренды] ([Номер записи]),
CONSTRAINT [FK_Условие_Валюта] FOREIGN KEY ([Код валюты])
REFERENCES [Денежная единица] ([Код валюты])
);
GO