Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая Автосалон.doc
Скачиваний:
102
Добавлен:
14.02.2023
Размер:
6.14 Mб
Скачать

Заключение

Рассмотрим результаты курсовой работы, целью которой являлась разработка базы данных для дилерского центра “LEXUS”.

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

В состав разработанной базы данных вошло 11 таблиц, 1 процедура и 3 триггера.

Список литературы

  1. Что такое СУБД: [Электронный ресурс] // RUcenter. Url: https://www.nic.ru/help/chto-takoe-subd_8580.html/. (Дата обращения: 18.12.2022).

  2. СУБД: какие бывают, как выбрать»: [Электронный ресурс] // HIGHLOAD. Url: https://highload.today/subd-kakie-byvayut-kak-vybrat//. (Дата обращения: 18.12.2022).

  3. Справочное руководство по MySQL: [Электронный ресурс] // MySQL. Url: http://www.mysql.ru/docs/man/Features.html /. (Дата обращения: 18.12.2022).

  4. Microsoft SQL Server: [Электронный ресурс] // Bauman National Library. Url: https://ru.bmstu.wiki/Microsoft_SQL_Server /. (Дата обращения: 18.12.2022).

  5. PostgreSQL — объектно-реляционная система управления базами данных: [Электронный ресурс] // Web-creator Url: https://web-creator.ru/articles/postgresql /. (Дата обращения: 18.12.2022).

  6. All SRM - CRM системы для автосалонов и автодилеров имеют функции для управления ремонтами, поставщиками, складом запчастей и т.д. [Электронный ресурс]. Url: https://allcrm.ru/crm-dlya-avtobiznesa/ . (Дата обращения: 19.12.2022).

  7. Классификация логических моделей данных // sitforum URL: http://citforum.ru/database/articles/ref_vs_nav_models/ (дата обращения: 18.12.2022).

  8. ГОСТ 7.32-2001 Межгосударственный стандарт. Система стандартов по информации, библиотечному и издательскому делу. Отчет о научно-исследовательской работе. Структура и правила оформления.

  9. ГОСТ 7.0.5-2008 Система стандартов по информации, библиотечному и издательскому делу. Библиографическая ссылка. Общие требования и правила составления.

  10. Обеспечение безопасности базы данных: [Электронный ресурс] // Хабр Url: https://habr.com/ru/post/550882/ /. (Дата обращения: 13.12.2022).

  11. Добавление ролей учетных записей в PostgreSQL [Электронный ресурс] // ArcMap URL: https://desktop.arcgis.com/ru/arcmap/10.5/manage-data/gdbs-in-postgresql/add- users-postgresql.htm (дата обращения: 25.12.2022).

  12. CREATE VIEW [Электронный ресурс] // postgres URL: https://postgrespro.ru/docs/postgrespro/10/sql-createview (дата обращения: 24.12.2022).

  13. Создание нового пользователя и настройка прав в MySQL [Электронный ресурс] // selectel URL: https://selectel.ru/blog/tutorials/how-to-create-a-new-user-and-set-privileges-in-mysql/ (дата обращения: 24.12.2022).

  14. LEXUS [Электронный ресурс] // motor page URL: http://www.motorpage.ru/Lexus/ (дата обращения: 18.12.2022).

  15. Лузанов П., Рогов Е., Лёвшин И.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;

51