Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / отчет курсовая бд.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
6.38 Mб
Скачать

6.2. Индексы.

Индексация полей в таблицах происходила из соображений того, что в будущем по этим полям планируется производить поиск и сортировку. В таблицах chat-user, damage_of_equipment, halts, messages, qualification-of-instructor, rent, review, route-halt, teams и trip индексированные поля создавались автоматически при связывании таблиц между собой. В таблицах equipment и routes индексированными полями являются названия оборудования и маршрутов соответственно. Это было сделано для того, чтоб в будущем при написании запросов эти таблицы было удобно группировать по названию.

Рис. 38. Индексы в таблице chat-user.

Рис. 39. Индексы в таблице chats.

Рис. 40. Индексы в таблице damage_of_equipment.

Рис. 41. Индексы в таблице halts.

Рис. 42. Индексы в таблице messages.

Рис. 43. Индексы в таблице qualification-of-instructor.

Рис. 44. Индексы в таблице rent.

Рис. 45. Индексы в таблице review.

Рис. 46. Индексы в таблице route-halt.

Рис. 47. Индексы в таблице teams.

Рис. 48. Индексы в таблице trip.

Рис. 49. Индексы в таблице equipment.

Рис. 50. Индексы в таблице routes.

6.3. Роли.

При проектировании данной базы данных были выбраны три роли: администратор, инструктор, турист.

CREATE ROLE administrator;

CREATE ROLE instructor;

CREATE ROLE tourist;

Администратор может видеть все данные в базе, может добавлять, изменять и удалять данные.

GRANT INSERT, UPDATE, DELETE ON hikingtrips.* TO administrator;

Инструктор может видеть данные о походах, привалах, оборудовании и туристах. Он может добавлять, изменять и удалять данные в таблицах походов, привалов и оборудовании и может только просматривать таблицу туристов.

GRANT INSERT, UPDATE, DELETE ON hikingtrips.routes TO instructor;

GRANT INSERT, UPDATE, DELETE ON hikingtrips.halts TO instructor;

GRANT INSERT, UPDATE, DELETE ON hikingtrips.equipment TO instructor;

GRANT SELECT ON hikingtrips.costumers TO instructor;

Турист может только просматривать таблицу походов, привалов и оборудования.

GRANT SELECT ON hikingtrips.routes TO tourist;

GRANT SELECT ON hikingtrips.halts TO tourist;

GRANT SELECT ON hikingtrips.equipment TO tourist;

6.4. Процедуры.

Процедура для снижения цен маршрутов на 10% в конце месяца:

BEGIN

DECLARE cur_date DATE;

SET cur_date = CURDATE();

IF LAST_DAY(current_date) = current_date THEN

UPDATE routes

SET price = price * 0.90

WHERE price IS NOT NULL;

END IF;

END

6.5. Триггеры.

Триггер для проверки вводимой даты рождения:

BEGIN

IF YEAR(NEW.date_of_birth) > 2007 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'The user is under 18 years old. You cannot add underage users';

END IF;

END

Триггер для проверки вводимого адреса электронной почты:

BEGIN

IF NEW.email NOT LIKE '%@%.%' THEN

SIGNAL SQLSTATE '45000'

SET MESSAGE_TEXT = 'Invalid email address has been entered';

END IF;

END

Триггер для вводимого номера телефона:

BEGIN

IF NOT NEW.phone_number REGEXP '^[0-9]{11}$' THEN

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'The phone number must consist of 11 digits.';

END IF;

END

Соседние файлы в папке курсовая