- •Прокат автомобилей
- •Анализ предметной области
- •Описание предметной области.
- •Основные бизнес процессы
- •Реляционная модель базы данных
- •Заполнение таблиц данными
- •Запросы
- •Настройка безопасности
- •1 Способ
- •2 Способ
- •Представления
- •Создание Backup
- •Пользовательские функции
- •Курсоры
- •Триггеры
- •Процедуры
Реляционная модель базы данных
Клиент (ID клиента, ФИО, Паспортные данные, Номер в/у, Телефон, Кол-во заказов);
Внешние ключи:
ID клиента ссылается на Договор (ID клиента);
Сотрудник (ID сотрудника, ФИО, Должность, Зарплата);
Внешние ключи:
ID сотрудника ссылается на Договор (ID сотрудника);
ID сотрудника ссылается на Акт осмотра (ID сотрудника);
Договор (Номер договора, ID клиента, ID сотрудника, Номер автомобиля, Длительность аренды, Дата заключения, Дата оплаты, Статус оплаты, Дата окончания);
Внешние ключи:
Номер договора ссылается на Акт осмотра (номер договора);
Номер договора ссылается на Оплата (номер договора);
Автомобиль (Номер автомобиля, ID автомобиля, Пробег, Дата последнего ТО, Дата истечения страховки, Цена руб./сут, Готовность автомобиля к аренде);
Внешние ключи:
Номер автомобиля ссылается на Акт осмотра (номер автомобиля);
Номер автомобиля ссылается на Договор (номер автомобиля);
Номер автомобиля ссылается на Парковка (номер автомобиля);
Характеристики автомобиля (ID автомобиля, Тип привода, Трансмиссия, Положение руля, Марка, Название, Цвет, Год выпуска, Вместимость, Тип кузова, Комфортность);
Внешние ключи:
ID автомобиля ссылается на Автомобиль (ID автомобиля);
Акт осмотра (ID акта, ID сотрудника, Номер договора, Номер автомобиля, Информация о повреждения, Сумма на обслуживание);
Оплата (ID оплаты, Номер договора, Сумма, Дата);
Парковка (Номер места, Номер автомобиля);
Концептуальная
модель базы данныхСоздание базы данных
Создание базы данных car_rental.
CREATE DATABASE car_rental;
GO
USE car_rental;
GO
С
труктура
базы данны в SQL
5
.1
Продолжение Структура базы данны в SQL
Создание таблиц
Создать таблицу 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));
