Your cart is currently empty!


♦
Jekaterina Guzek, Õpimapp / Portfolio
Создаем базу данных
Можно создать таблицу двумя вариантами
Создаем первую таблицу person
таблица movie
таблица picture
Теперь у нас есть таблицы
После создания таблицы, мы заполним каждую по 5 записей, начнем с person (пример будет, другие будут так же заполняться)
Заполняем таблицу pictire и делаем свзять с таблицей person
После добавления связи добавляем и проверяем, чтобы свзять появилась
Заполняем таблицу movie_by_production_company и делаем связь с 2 таблицами movie и production_company
Добавляем первую свзять
Добавляем вторую связь
Проверяем
Все вышло, наведя курсор, так же видим названия
Добавляем связи и заполняем таблицу movie_genre
Первая свзять с movie
Вторая связь
Заполняем таблицу
Заполненая талица
Заполняем таблицу person_in_movie так же делаем связи с таблицами person, movie, position (картинки)
Последние делам связь и заполняем таблицу quote
После создания связи заполняем таблицу
При заполнении таблицу, увидила, не большую ошибку, исправляем ее, меняем quote_text с int -> varchar(1000) цитата
Смотрим заполненые свзязи:
Теперь будем создавать процедуры, первая процедура на показания названий фильмов по жанру
SELECT m.title
title
) из таблицы movie
.FROM movie m
movie
получает псевдоним m
.JOIN movie_genre mg ON m.id = mg.movie_id
movie
с таблицей movie_genre
, чтобы найти жанры, связанные с фильмами.JOIN genre g ON mg.genre_id = g.id
movie_genre
с таблицей genre
, чтобы узнать название жанра.WHERE g.genre_name LIKE CONCAT('%', genreName, '%');
Например:
Ввела “F”
Результат, у них содержаться в название жанра буква “F” (Sci-Fi, Fantasy)
Чутка изменим процедуру
Добавла, чтобы красиво отображал так же найденый жанр и изменила первый стобец, для более понятного. Итого мы имеем
Процедура get_quotes_by_character
показывает все цитаты, которые были произнесены определённым персонажем (ролью) в фильме
ELECT quote.quote_text
quote
.movie.title AS movie_title
movie
и называем столбец movie_title
.person_in_movie.role AS role_name
FROM quote
quote
, которая хранит все цитаты.JOIN person_in_movie ON quote.person_in_movie_id = person_in_movie.id
quote
с таблицей person_in_movie
JOIN movie ON person_in_movie.movie_id = movie.id
movie
, чтобы получить название фильма, из которого цитата.WHERE person_in_movie.role LIKE CONCAT('%', characterName, '%')
%
означает: «любой текст до и после».Пробудем ее активировать.
В значение вводим Rose – персонаж
И мы видим саму цитату, с какого фильма и роль (которую ввели Rose)
Показывает названия всех фильмов, которые были сняты любой студией, имя которой вводит пользователь (т.к ike можно одно слово вводить)
movie
, и даём этому столбцу красивое имя movie_title
movie
production_company_id
из промежуточной таблицы, и находим по нему студию в таблице production_company
%
— означает любую последовательность символов, LIKE
— ищет по частичному совпадениюПробуем выполнить процедуру
Получаемый результат
Добавилиа еще одного, чтобы проверить.
phpMyAdmin -> Учетная запись
Добавить пользователя
Вводим данные
Вперед, далее редактируем пользователя и даем ему привелегии
Даю права для базы данных movie
Так же администратору даю права на процедуры все 3
Сделаем второго пользователя, который имеет доступ только к двум таблицам (person, pictures)
Мы дошли до того, что для пользователя user_movie добавляем таблицу person, а так же выбираем то что он может с ней делать
SELECT – > я считаю подходит для kontrollida andmed tabelites
INSERT -> я считаю подходит для lisada andmed tabelites
UPDATE -> я считаю подходит для lisada andmed tabelites
DELETE -> я считаю подходит для kontrollida andmed tabelites т.к удаления записей тоже иногда необходима как контролировать их
После “Вперед”
тоже самое делаем для таблицы picture
Нанем с того, что не обходимо сделать таблицу logi
Начинаем делать тригерры, чтобы записывались действия в logi
person_in_movie
Добавляем тригер на добавления
Что делает:
Добавляет запись в таблицу logi
(журнал действий), когда добавляют нового персонажа в фильм.
Что сохраняется:
table_name
: имя таблицы — 'person_in_movie'
action_type
: тип действия — 'INSERT'
details
: текст, например:Используется NEW.
— это доступ к значениям новой строки, которая только что добавляется.
Проверяем
Так же улутщаем код, добавляем с большой буквы, время когда добавили
Через 5 удачно все же сделала
все красиво, все вспомогательное удалила (person_id=’, NEW.person_id, ‘) в movie_id=’, NEW.movie_id)
Добавляем, чтобы видить связаные таблицы
FROM person_in_movie pim
– даём ей псевдоним pim
JOIN movie m ON NEW.movie_id = m.id
– присоединяем таблицу movie
, даем псевдоним m, NEW.movie_id
— значение из новой вставляемой строки
JOIN position p ON NEW.position_id = p.id
– присоединяем таблицу position
, даем псевдоним p, NEW.position_id
— значение из новой строки
WHERE pim.id = NEW.id
– выбрать именно ту строку из person_in_movie
, которая только что добавляется или обновляется.
Проверяем
movie
Перейди во вкладку “Триггеры” → Создать триггер
Присоздании триггера, взяли лучшее с прошлого триггера
Проверяем
Конечно не влезло, но исправим!
movie_genre
Перейди во вкладку “Триггеры” → Создать триггер
Пробуем, я добавила 2 жанра к фильмам чтобы их удалять
Добавляем пользователя в таблицу logi
Идем сюда
и все по очереди изменяем, чтобы у нас появилась возможность видить инфомацию о пользователи.
Далее проверяем записывает ли пользователя
Проверила все триггеры записывают информацию о пользователе, все 3 триггера