Добавил:
https://vk.com/club199197084 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УД_КР_Цуканова_0363.docx
Скачиваний:
1
Добавлен:
03.02.2024
Размер:
99.18 Кб
Скачать

3. Обоснование выбора субд

Для реализации курсовой работы выбрана СУБД MySQL – реляционная БД подходит для данных, с которыми идет работа.

Администрирование СУБД происходит с помощью веб-приложения с открытым исходным кодом PhpMyAdmin. PhpMyAdmin позволяет через браузер и не только осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Удобство выбранного приложения для администрирования СУБД состоит в том, что позволяет управлять СУБД MySQL без непосредственного ввода SQL команд. PhpMyAdmin является полностью бесплатным, запускается в любом браузере и не требует дополнительного ПО, кроме сервера.

4. Описание групп пользовАтелеЙ

Для СУБД потребуется несколько видов пользователя – администратор и обычный пользователь, так как с программой работать будут работники автосервиса и администратор. Работники автосервиса смогут использовать приложение для вывода каких-либо сведенных данных, т.е. просматривать базу данных, искать нужную информацию, администратор сверх этого функционала может добавлять, удалять и редактировать данные в БД.

Для наглядности прав доступа представим их в таблице 1.

Таблица 1 – Распределение прав доступа

Объект

Пользователь

Администратор

Таблица «car»

SU

SUID

Таблица «masters»

SU

SUID

Таблица «owners»

SU

SUID

Таблица «services»

SU

SUID

Таблица «cars_services»

SU

SUID

Таблица «masters_cars»

SU

SUID

Таблица «owners_cars»

SU

SUID

Таблица «services_masters»

SU

SUID

5. Описание функций управление данными

В данном разделе описаны функции управления данными и создании таблиц.

Запрос для создания таблицы car:

CREATE TABLE `car` (  

`id` int(11) NOT NULL AUTO_INCREMENT,

`Number` varchar(20) NOT NULL,  

`RequestDate` date NOT NULL,  

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для создания таблицы masters:

CREATE TABLE `masters` (  

`id` int(11) NOT NULL AUTO_INCREMENT,  

`Name` varchar(100) NOT NULL,  

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

Запрос для создания таблицы owners:

CREATE TABLE `owners` (  

`id` int(11) NOT NULL AUTO_INCREMENT,  

`Name` varchar(100) NOT NULL,  

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для создания таблицы services:

CREATE TABLE `services` (  

`id` int(11) NOT NULL AUTO_INCREMENT,  

`Name` varchar(100) NOT NULL,  

`Price` int(11) NOT NULL,  

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

Запрос для создания таблицы cars_services:

CREATE TABLE `cars_services` (  

`id_car` int(11) NOT NULL,  

`id_service` int(11) NOT NULL,  

KEY `id_car` (`id_car`),  

KEY `id_service` (`id_service`),  

CONSTRAINT `cars_services_ibfk_2` FOREIGN KEY (`id_service`) REFERENCES `services` (`id`),  

CONSTRAINT `cars_services_ibfk_1` FOREIGN KEY (`id_car`) REFERENCES `car` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для создания таблицы masters_cars:

CREATE TABLE `masters_cars` (  

`id_master` int(11) NOT NULL,  

`id_car` int(11) NOT NULL,  

KEY `id_master` (`id_master`),  

KEY `id_car` (`id_car`),  CONSTRAINT `masters_cars_ibfk_2` FOREIGN KEY (`id_car`) REFERENCES `car` (`id`),  

CONSTRAINT `masters_cars_ibfk_1` FOREIGN KEY (`id_master`) REFERENCES `masters` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для создания таблицы owners_cars:

CREATE TABLE `owners_cars` (  

`id_owner` int(11) NOT NULL,  

`id_car` int(11) NOT NULL,  

UNIQUE KEY `id_car` (`id_car`),  KEY `id_owner` (`id_owner`),  

CONSTRAINT `owners_cars_ibfk_2` FOREIGN KEY (`id_car`) REFERENCES `car` (`id`),  

CONSTRAINT `owners_cars_ibfk_1` FOREIGN KEY (`id_owner`) REFERENCES `owners` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для создания таблицы services_masters:

CREATE TABLE `services_masters` (  

`id_service` int(11) NOT NULL,  

`id_master` int(11) NOT NULL,  

KEY `id_service` (`id_service`),  

KEY `is_master` (`id_master`),  

CONSTRAINT `services_masters_ibfk_2` FOREIGN KEY (`id_master`) REFERENCES `masters` (`id`),  

CONSTRAINT `services_masters_ibfk_1` FOREIGN KEY (`id_service`) REFERENCES `services` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

Запрос для добавления записи в car:

INSERT INTO `carservice`.`car` (

`id` ,

`Number` ,

`RequestDate` ,

`OnService`

)

VALUES (

NULL , 'Р 711 ХФ', '2022-11-20', '0'

);

Запрос для создания записи в промежуточной таблице cars_services, где указываются проблемы машин, связывая идентификатор машины с идентификатором услуги автосалона:

INSERT INTO `carservice`.`cars_services` (

`id` ,

`id_car` ,

`id_service`

)

VALUES (

NULL , '27', '7'

);

Запрос для формирования списка услуг, предлагаемых автосервисом, с указанием их цены:

SELECT Name, Price

FROM services

ORDER BY `services`.`Price` ASC

Запрос для формирования списка машин, в данный момент обслуживаемых автосервисом, с указанием их цены:

SELECT Number, RequestDate

FROM `car`

WHERE `onService`=1

ORDER BY `car`.`RequestDate` DESC

Выдача информации о данной машине (оказываемые услуги):

SELECT

car.Number AS 'Номер машины',

services.Name AS 'Услуга',

services.Price AS 'Стоимость'

FROM cars_services

LEFT JOIN car ON (car.id = cars_services.id_car)

LEFT JOIN services ON (services.id = cars_services.id_service)

WHERE car.Number = ' /* НОМЕР МАШИНЫ, О КОТОРОЙ ПРЕДОСТАВЛЯЕТСЯ ИНФОРМАЦИЯ */ '

Запрос для формирования строки со списком машин одного владельца:

SELECT

owners.Name AS 'Хозяин',

(SELECT GROUP_CONCAT(car.Number SEPARATOR ', ') FROM car, owners_cars WHERE

car.id = owners_cars.id_car and

owners_cars.id_owner = owners.id) AS 'Номер машины'

FROM owners

WHERE owners.id = /* id хозяина*/

Запрос для формирования списка машин и общей стоимости ремонтных услуг для каждой машины для владельца авто:

SELECT

owners.Name AS 'Хозяин',

car.Number AS 'Машины',

(SELECT SUM(services.Price) FROM services, cars_services

WHERE services.id = cars_services.id_service and cars_services.id_car = car.id) AS 'Цены на услуги'

FROM owners_cars

LEFT JOIN car ON ( car.id = owners_cars.id_car )

LEFT JOIN owners ON ( owners.id = owners_cars.id_owner )

WHERE owners.id = /* id хозяина*/

Соседние файлы в предмете Управление данными