Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прокат автомобилей.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
19 Мб
Скачать
☆
  1. Реляционная модель базы данных

  1. Клиент (ID клиента, ФИО, Паспортные данные, Номер в/у, Телефон, Кол-во заказов);

Внешние ключи:

ID клиента ссылается на Договор (ID клиента);

  1. Сотрудник (ID сотрудника, ФИО, Должность, Зарплата);

Внешние ключи:

ID сотрудника ссылается на Договор (ID сотрудника);

ID сотрудника ссылается на Акт осмотра (ID сотрудника);

  1. Договор (Номер договора, ID клиента, ID сотрудника, Номер автомобиля, Длительность аренды, Дата заключения, Дата оплаты, Статус оплаты, Дата окончания);

Внешние ключи:

Номер договора ссылается на Акт осмотра (номер договора);

Номер договора ссылается на Оплата (номер договора);

  1. Автомобиль (Номер автомобиля, ID автомобиля, Пробег, Дата последнего ТО, Дата истечения страховки, Цена руб./сут, Готовность автомобиля к аренде);

Внешние ключи:

Номер автомобиля ссылается на Акт осмотра (номер автомобиля);

Номер автомобиля ссылается на Договор (номер автомобиля);

Номер автомобиля ссылается на Парковка (номер автомобиля);

  1. Характеристики автомобиля (ID автомобиля, Тип привода, Трансмиссия, Положение руля, Марка, Название, Цвет, Год выпуска, Вместимость, Тип кузова, Комфортность);

Внешние ключи:

ID автомобиля ссылается на Автомобиль (ID автомобиля);

  1. Акт осмотра (ID акта, ID сотрудника, Номер договора, Номер автомобиля, Информация о повреждения, Сумма на обслуживание);

  2. Оплата (ID оплаты, Номер договора, Сумма, Дата);

  3. Парковка (Номер места, Номер автомобиля);

  1. Концептуальная модель базы данных

  2. Создание базы данных

Создание базы данных car_rental.

CREATE DATABASE car_rental;

GO

USE car_rental;

GO

  1. С труктура базы данны в SQL

5 .1 Продолжение Структура базы данны в SQL

  1. Создание таблиц

Создать таблицу client

CREATE TABLE client

(client_id INT NOT NULL

,name VARCHAR(50) NOT NULL

,passport_data VARCHAR(50) NOT NULL

,number_vu INT NOT NULL

,phone VARCHAR(15) NOT NULL

,number_of_orders INT NOT NULL

,PRIMARY KEY(client_id));

Создать таблицу posotion

CREATE TABLE position

(position_id INT NOT NULL

,position_name VARCHAR(50) NOT NULL

,PRIMARY KEY (position_id));

Создать таблицу drive_type

CREATE TABLE drive_type

(drive_type_id INT NOT NULL

,drive_type_name VARCHAR(10) NOT NULL

,CONSTRAINT check_drive_type_name CHECK(drive_type_name IN('Передний', 'Задний', '4WD'))

,PRIMARY KEY(drive_type_id));

Создать таблицу trasmission

CREATE TABLE transmission

(transmission_id INT NOT NULL

,transmission_name VARCHAR(15) NOT NULL

,PRIMARY KEY(transmission_id));

Создать таблицу car_steering_wheel

CREATE TABLE car_steering_wheel

(car_steering_wheel_id INT NOT NULL

,car_steering_wheel_name VARCHAR(7) NOT NULL

,CONSTRAINT check_car_steering_wheel_name CHECK(car_steering_wheel_name IN('Левый', 'Правый'))

,PRIMARY KEY(car_steering_wheel_id));

Создать таблицу color

CREATE TABLE color

(color_id INT NOT NULL

,color_name VARCHAR(10) NOT NULL

,PRIMARY KEY(color_id));

Создать таблицу body_type

CREATE TABLE body_type

(body_type_id INT NOT NULL

,body_type_name VARCHAR(20) NULL

,PRIMARY KEY(body_type_id));

Создать таблицу car_name

CREATE TABLE car_name

(car_name_id INT NOT NULL

,name VARCHAR(20) NOT NULL

,PRIMARY KEY (car_name_id));

Создать таблицу car_brand

CREATE TABLE car_brand

(car_brand_id INT NOT NULL

,car_brand_name VARCHAR(20) NOT NULL

,PRIMARY KEY(car_brand_id));

Создать таблицу willingness_to_lease

CREATE TABLE willingness_to_lease

( willingness_to_lease_id INT NOT NULL

,willingness_to_lease_name VARCHAR(20) NOT NULL

,CONSTRAINT check_willingness_to_lease_name CHECK(willingness_to_lease_name IN('Готов', 'В аренде', 'На обслуживание'))

,PRIMARY KEY (willingness_to_lease_id));

Создать таблицу status_cat

CREATE TABLE status_car

(status_car_id INT NOT NULL

,status_car_name VARCHAR(20) NOT NULL

,CONSTRAINT check_stastus_car CHECK(status_car_name IN('Готов','На обслуживание'))

,PRIMARY KEY(status_car_id));

Создать таблицу payment_status

CREATE TABLE payment_status

( payment_status_id INT NOT NULL

,payment_status_name VARCHAR(20) default 'Ожидает оплаты'

,CONSTRAINT check_payment_status_name CHECK(payment_status_name IN('Оплачено', 'Ожидает оплаты'))

,PRIMARY KEY (payment_status_id));

Создать таблицу car_full_name

CREATE TABLE car_full_name

(car_full_name_id INT NOT NULL

,car_name_id INT NOT NULL

,car_brand_id INT NOT NULL

,PRIMARY KEY(car_full_name_id)

,FOREIGN KEY(car_name_id) REFERENCES car_name(car_name_id)

,FOREIGN KEY(car_brand_id) REFERENCES car_brand(car_brand_id));

Создать таблицу employee

CREATE TABLE employee

(employee_id INT NOT NULL,

name VARCHAR(50) NOT NULL,

position_id INT NOT NULL,

salary INT NOT NULL,

PRIMARY KEY(employee_id),

FOREIGN KEY (position_id) REFERENCES position(position_id));

Создать таблицу performance_car

CREATE TABLE performance_car

(car_id INT NOT NULL

,car_full_name_id INT NOT NULL

,drive_type_id INT NOT NULL

,transmission_id INT NOT NULL

,car_steering_wheel_id INT NOT NULL

,year_of_manufacture DATE NOT NULL

,body_type_id INT NOT NULL

,color_id INT NOT NULL

,capacity INT NOT NULL

,comfort VARCHAR(10) NULL

,PRIMARY KEY(car_id)

,FOREIGN KEY (drive_type_id) REFERENCES drive_type(drive_type_id)

,FOREIGN KEY (transmission_id) REFERENCES transmission(transmission_id)

,FOREIGN KEY (car_steering_wheel_id) REFERENCES car_steering_wheel(car_steering_wheel_id)

,FOREIGN KEY (color_id) REFERENCES color(color_id)

,FOREIGN KEY (body_type_id) REFERENCES body_type(body_type_id)

,FOREIGN KEY (car_full_name_id) REFERENCES car_full_name(car_full_name_id));

Создать таблицу car

CREATE TABLE car

(car_number VARCHAR(9) NOT NULL

,car_id INT NOT NULL

,mileage INT NOT NULL

,date_of_last_TO DATE NOT NULL

,date_of_expire_insurance DATE NOT NULL

,price_rub_day INT NOT NULL

,willingness_to_lease_id INT NOT NULL

,PRIMARY KEY(car_number)

,FOREIGN KEY (car_id) REFERENCES performance_сar(car_id)

,FOREIGN KEY (willingness_to_lease_id) REFERENCES willingness_to_lease(willingness_to_lease_id));

Создать таблицу car_demand

CREATE TABLE car_demand(

id_issued_cars int IDENTITY(1,1) primary key NOT NULL

,car_number varchar(9) NULL

,count_month int NULL

,date_time date NULL

,recomends varchar(50) NULL

FOREIGN KEY (car_number) REFERENCES car(car_number))

GO

Создать таблицу car_logs

CREATE TABLE car_logs

(car_logs_id int IDENTITY(1,1) primary key NOT NULL

,date_logs datetime NULL

,user_name varchar(20) NULL

,car_number varchar(9) NOT NULL

,FOREIGN KEY(car_number) REFERENCES car(car_number))

GO

Создать таблицу contract

CREATE TABLE contract

(contract_number INT NOT NULL

,client_id INT NOT NULL

,employee_id INT NOT NULL

,car_number VARCHAR(9) NOT NULL

,duration_of_lease INT NOT NULL

,date_of_signing DATE NOT NULL

,date_of_payment DATE NULL

,date_of_end DATE NULL

,payment_status_id INT NOT NULL

,PRIMARY KEY(contract_number)

,FOREIGN KEY (client_id) REFERENCES client(client_id)

,FOREIGN KEY (employee_id) REFERENCES employee(employee_id)

,FOREIGN KEY (car_number) REFERENCES car(car_number)

,FOREIGN KEY (payment_status_id) REFERENCES payment_status(payment_status_id));

Создать таблицу report

CREATE TABLE report

(report_id INT NOT NULL

,employee_id INT NOT NULL

,car_number VARCHAR(9) NOT NULL

,contract_number INT NOT NULL

,information_damage VARCHAR(50) NOT NULL

,amount_maintenance INT NOT NULL

,status_car_id INT NOT NULL

,PRIMARY KEY(report_id)

,FOREIGN KEY (employee_id) REFERENCES employee(employee_id)

,FOREIGN KEY (car_number) REFERENCES car(car_number)

,FOREIGN KEY (status_car_id) REFERENCES status_car(status_car_id)

,FOREIGN KEY (contract_number) REFERENCES contract(contract_number));

Создать таблицу report_logs

create table report_logs

(report_logs_id int identity(1,1) primary key

,date_logs datetime NULL

,user_name varchar(20) NULL

,report_id INT NOT NULL

,employee_id INT NOT NULL

,car_number VARCHAR(9) NOT NULL

,contract_number INT NOT NULL

,information_damage VARCHAR(50) NOT NULL

,amount_maintenance INT NOT NULL

,status_car_id INT NOT NULL)

Создать таблицу payment

CREATE TABLE payment

(payment_id INT NOT NULL

,contract_number INT NOT NULL

,amount INT NOT NULL

,date_payment DATE NOT NULL

,PRIMARY KEY(payment_id)

,FOREIGN KEY (contract_number) REFERENCES contract(contract_number));

Создать таблицу parking

CREATE TABLE parking

(number_spaces INT NOT NULL

,car_number VARCHAR(9) NOT NULL

,PRIMARY KEY(number_spaces)

,FOREIGN KEY (car_number) REFERENCES car(car_number));