Загрузка данных


--9-- Страна
USE [car-rental-mssql];
GO
CREATE TABLE [901_Страна] (
    [Код страны]   INT             IDENTITY(1,1) NOT NULL,
    [Название]     NVARCHAR(100)   NOT NULL,
    CONSTRAINT [PK_Страна] PRIMARY KEY CLUSTERED ([Код страны] ASC)
);
GO


--9-- Денежная единица
CREATE TABLE [902_Денежная единица] (
    [Код валюты]   INT             IDENTITY(1,1) NOT NULL,
    [Название]     NVARCHAR(100)   NOT NULL,
    [Код страны]   INT             NULL,
    CONSTRAINT [PK_Денежная единица] PRIMARY KEY CLUSTERED ([Код валюты] ASC),
    CONSTRAINT [UQ_Денежная единица_Название] UNIQUE ([Название]),
    CONSTRAINT [AK_Денежная единица_Страна] UNIQUE ([Код страны]),
    CONSTRAINT [FK_Денежная единица_Страна] FOREIGN KEY ([Код страны])
        REFERENCES [Страна] ([Код страны])
);
GO


--9-- Курс денежной единицы
CREATE TABLE [903_Курс денежной единицы] (
    [Номер записи]    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


--9-- Офис проката
CREATE TABLE [904_Офис проката] (
    [Код офиса]   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


--9-- Клиент
CREATE TABLE [905_Клиент] (
    [Код клиента]                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


--9-- Категория
CREATE TABLE [906_Категория] (
    [Код категории]    INT             IDENTITY(1,1) NOT NULL,
    [Название]         NVARCHAR(100)   NOT NULL,
    [Количество мест]  INT             NULL,
    CONSTRAINT [PK_Категория] PRIMARY KEY CLUSTERED ([Код категории] ASC),
    CONSTRAINT [UQ_Категория_Название] UNIQUE ([Название])
);
GO


--9-- Транспортное средство
CREATE TABLE [907_Транспортное средство] (
    [Код ТС]              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


--9-- Договор аренды
CREATE TABLE [908_Договор аренды] (
    [Номер договора]                       INT             IDENTITY(1,1) NOT NULL,
    [get_Код офиса]                        INT             NULL,
    [return_Код офиса]                     INT             NULL,
    [Дата оформления]                      DATE            NULL,
    [Дата оплаты]                          DATE            NULL,
    [Срок аренды]                          INT             NULL,
    [Дата начала аренды]                   DATE            NULL,
    [Фактическая дата окончания аренды]    DATE            NULL,
    [Менеджер]                             NVARCHAR(150)   NULL,
    [Телефон]                              NVARCHAR(50)    NULL,
    [Договор аннулирован]                  BIT             NULL,
    [Код клиента]                          INT             NULL,
    [Код ТС]                               INT             NULL,
    CONSTRAINT [PK_Договор аренды] PRIMARY KEY CLUSTERED ([Номер договора] ASC),
    CONSTRAINT [FK_Договор_ОфисВыдачи] FOREIGN KEY ([get_Код офиса])
        REFERENCES [Офис проката] ([Код офиса]),
    CONSTRAINT [FK_Договор_ОфисВозврата] FOREIGN KEY ([return_Код офиса])
        REFERENCES [Офис проката] ([Код офиса]),
    CONSTRAINT [FK_Договор_Клиент] FOREIGN KEY ([Код клиента])
        REFERENCES [Клиент] ([Код клиента]),
    CONSTRAINT [FK_Договор_ТС] FOREIGN KEY ([Код ТС])
        REFERENCES [Транспортное средство] ([Код ТС])
);
GO


--9-- Платежный документ
CREATE TABLE [909_Платежный документ] (
    [Номер документа]   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


--9-- Дополнительные условия аренды
CREATE TABLE [910_Дополнительные условия аренды] (
    [Номер записи]   INT             IDENTITY(1,1) NOT NULL,
    [Условие]        NVARCHAR(255)   NULL,
    [Код валюты]     INT             NULL,
    [Стоимость]      DECIMAL(18,2)   NULL,
    CONSTRAINT [PK_Доп условия аренды] PRIMARY KEY CLUSTERED ([Номер записи] ASC),
    CONSTRAINT [FK_ДопУсловия_Валюта] FOREIGN KEY ([Код валюты])
        REFERENCES [Денежная единица] ([Код валюты])
);
GO


--9-- Уточнение договора
CREATE TABLE [911_Уточнение договора] (
    [Номер договора]   INT   NOT NULL,
    [Номер записи]     INT   NOT NULL,
    [Коэффициент]      DECIMAL(10,4)   NULL,
    CONSTRAINT [PK_Уточнение договора] PRIMARY KEY CLUSTERED ([Номер договора] ASC, [Номер записи] ASC),
    CONSTRAINT [FK_Уточнение_Договор] FOREIGN KEY ([Номер договора])
        REFERENCES [Договор аренды] ([Номер договора]),
    CONSTRAINT [FK_Уточнение_ДопУсловия] FOREIGN KEY ([Номер записи])
        REFERENCES [Дополнительные условия аренды] ([Номер записи])
);
GO