
- •Глава 1. Анализ предметной области асу «Автосалон» 5
- •Глава 2. Проектирование базы данных для объекта автоматизации автосалон «Lexus» 16
- •Глава 3. Программная реализация бд автосалона «Lexus» 27
- •Введение
- •Глава 1. Анализ предметной области асу «Автосалон»
- •1.1. Анализ объекта автоматизации ооо «Lexus»
- •Информационная модель
- •1.2. Обзор информационных технологий, подходящих для разработки бд
- •1.3. Обзор продуктов аналогов
- •Функциональные возможности:
- •1.4. Требования к разрабатываемой базе данных
- •Глава 2. Проектирование базы данных для объекта автоматизации автосалон «Lexus»
- •2.1. Разработка инфологической модели бд
- •2.2. Обоснование выбора модели данных
- •Сетевая модель
- •Иерархическая модель
- •Объектно-ориентированная модель
- •Реляционная модель
- •2.3. Даталогическое проектирование бд
- •2.4 Нормализация
- •Глава 3. Программная реализация бд автосалона «Lexus»
- •3.1 Анализ и выбор субд
- •3.2. Физическое проектирование бд
- •3.3 Разработка представлений
- •3.4 Разработка отчетов
- •3.5 Реализация ограничений, автоматизация обработки данных в бД
- •3.7. Безопасность и контроль
- •Заключение
- •Список литературы
Заключение
Рассмотрим результаты курсовой работы, целью которой являлась разработка базы данных для дилерского центра “LEXUS”.
В ходе данной работы был произведён анализ предметной области, были рассмотрены СУБД, которые могли бы реализовать физическое проектирование базы данных, были описаны требования к разрабатываемой модели базы данных. Была разработана инфологическая модель, на основе которой, по правилам перехода от инфологической модели в реляционную, была разработана и нормализирована реляционная модель. Была проведена физическая реализация базы данных и установленных на неё ограничений по средством написания триггерных функций. Были реализованы представления для более информативного вывода данных на экран. Был проведён анализ безопасности и контроля в выбранной для физической реализации СУБД и разграничен доступ к таблицам по средствам добавления новых пользователей с индивидуальными правами.
В состав разработанной базы данных вошло 11 таблиц, 1 процедура и 3 триггера.
Список литературы
Что такое СУБД: [Электронный ресурс] // RUcenter. Url: https://www.nic.ru/help/chto-takoe-subd_8580.html/. (Дата обращения: 18.12.2022).
СУБД: какие бывают, как выбрать»: [Электронный ресурс] // HIGHLOAD. Url: https://highload.today/subd-kakie-byvayut-kak-vybrat//. (Дата обращения: 18.12.2022).
Справочное руководство по MySQL: [Электронный ресурс] // MySQL. Url: http://www.mysql.ru/docs/man/Features.html /. (Дата обращения: 18.12.2022).
Microsoft SQL Server: [Электронный ресурс] // Bauman National Library. Url: https://ru.bmstu.wiki/Microsoft_SQL_Server /. (Дата обращения: 18.12.2022).
PostgreSQL — объектно-реляционная система управления базами данных: [Электронный ресурс] // Web-creator Url: https://web-creator.ru/articles/postgresql /. (Дата обращения: 18.12.2022).
All SRM - CRM системы для автосалонов и автодилеров имеют функции для управления ремонтами, поставщиками, складом запчастей и т.д. [Электронный ресурс]. Url: https://allcrm.ru/crm-dlya-avtobiznesa/ . (Дата обращения: 19.12.2022).
Классификация логических моделей данных // sitforum URL: http://citforum.ru/database/articles/ref_vs_nav_models/ (дата обращения: 18.12.2022).
ГОСТ 7.32-2001 Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.
ГОСТ 7.0.5-2008 Система стандартов по информации, библиотечному и издательскому делу. Библиографическая ссылка. Общие требования и правила составления.
Обеспечение безопасности базы данных: [Электронный ресурс] // Хабр Url: https://habr.com/ru/post/550882/ /. (Дата обращения: 13.12.2022).
Добавление ролей учетных записей в PostgreSQL [Электронный ресурс] // ArcMap URL: https://desktop.arcgis.com/ru/arcmap/10.5/manage-data/gdbs-in-postgresql/add- users-postgresql.htm (дата обращения: 25.12.2022).
CREATE VIEW [Электронный ресурс] // postgres URL: https://postgrespro.ru/docs/postgrespro/10/sql-createview (дата обращения: 24.12.2022).
Создание нового пользователя и настройка прав в MySQL [Электронный ресурс] // selectel URL: https://selectel.ru/blog/tutorials/how-to-create-a-new-user-and-set-privileges-in-mysql/ (дата обращения: 24.12.2022).
LEXUS [Электронный ресурс] // motor page URL: http://www.motorpage.ru/Lexus/ (дата обращения: 18.12.2022).
Лузанов П., Рогов Е., Лёвшин И.Postgres. Первое знакомство. – Москва, Постгрес Профессиональный, 2022. – 183 с.
Приложение
Программный код
Создание представлений
CREATE OR REPLACE VIEW public.cheque
AS
SELECT deal.id,
clients.fio,
deal.managerid,
deal.carid,
deal.date,
deal.insur,
deal.equip,
deal.trams_amount,
deal.credit
FROM deal,
clients
WHERE deal.clientsid = clients.id;
CREATE OR REPLACE VIEW public.dgip
AS
SELECT deal.id,
deal.clientsid,
deal.managerid,
deal.carid,
deal.date,
deal.insur,
deal.equip,
deal.trams_amount,
deal.credit
FROM deal,
car_specif
WHERE deal.carid = car_specif.carid AND car_specif.car_tupe='джип';
CREATE OR REPLACE VIEW public.creditpr
AS
SELECT credit.dealid,
clients.fio,
credit.cr_amount
FROM deal,
clients,
credit
WHERE deal.clientsid = clients.id AND deal.id = credit.dealid;
Создание процедуры
CREATE OR REPLACE PROCEDURE public.new_client(
IN newid integer,
IN newfio character,
IN newtel character,
IN newpass character)
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
rowcount int;
BEGIN
SELECT Count(*) INTO rowcount
FROM clients
WHERE tel = newtel OR pass = newpass;
IF rowcount > 0 THEN
BEGIN
raise notice 'Клиент уже есть в базе данных - никаких действий не предпринято';
RETURN;
END;
END IF;
INSERT INTO clients(id, fio, tel, pass)
VALUES(newid, newfio, newtel, newpass);
raise notice 'Новый клиент успешно добавлен в базу';
END;
$BODY$;
ALTER PROCEDURE public.new_client(integer, character, character, character)
OWNER TO postgres;
Создание Триггеров
CREATE OR REPLACE FUNCTION public.incl_deals()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
rowcount smallint;
begin
if new.managerid = 1 Then
UPDATE manager
SET incl_deals_num = incl_deals_num + 1
WHERE new.managerid = id;
elseif new.managerid = 2 Then
UPDATE manager
SET incl_deals_num = incl_deals_num + 1
WHERE new.managerid = id;
elseif new.managerid = 3 Then
UPDATE manager
SET incl_deals_num = incl_deals_num + 1
WHERE new.managerid = id;
END IF;
RETURN NULL;
end;
$BODY$;
ALTER FUNCTION public.incl_deals()
OWNER TO postgres;
create or replace function new_name_rav()
returns trigger as $$
BEGIN
/* Ничего не делаем, кроме случая,
когда обновляется столбец name */
IF new.fio = old.fio THEN
RETURN NULL;
END IF;
UPDATE clients
SET fio = new.fio
WHERE fio = old.fio;
RETURN NULL;
END;
$$ language plpgsql;
CREATE OR REPLACE TRIGGER new_name
INSTEAD OF UPDATE ON cheque
FOR EACH ROW execute procedure new_name_rav();
CREATE OR REPLACE FUNCTION public.creditck_raw()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
DECLARE
rowcount int;
begin
UPDATE credit
SET cr_amount = new.trams_amount
WHERE new.id = credit.dealid;
return new;
end;
$BODY$;
ALTER FUNCTION public.creditck_raw()
OWNER TO postgres;
Создание ролей
CREATE USER client;
ALTER USER client WITH PASSWORD 'client';
GRANT SELECT
ON cars , car_specif , additions
TO client;
CREATE USER director;
ALTER USER director WITH PASSWORD 'director';
GRANT SELECT,UPDATE,INSERT,DELETE
ON Additions , carSpecif, Cars, Clients, Deal, Manager, SalManager, Credit, Insuranse, Repairer, InsurRepl
TO director;
CREATE USER manager;
ALTER USER manager WITH PASSWORD 'manager';
GRANT SELECT,UPDATE,INSERT
ON Clients, Deal, Credit , Cars, Additions, Insuranse
TO manager;