LR3.Tyutterin_Yakov_Z1411
.pdfМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
канд. техн. наук, доц. |
|
Е. Л. Турнецкая |
должность, уч. степень, звание |
подпись, дата |
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №3
Проектирование реляционной базы данных
по дисциплине: Базы данных
РАБОТУ ВЫПОЛНИЛ |
|
|
|
|
|
СТУДЕНТ гр. № |
Z1411 |
|
|
Я. Н. Тюттерин |
|
|
|
|
|
|
|
|
номер группы |
подпись, дата |
|
инициалы, фамилия |
|
Студенческий билет № |
2022/4886 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Санкт-Петербург 2024
Лабораторная работа № 3 РЕАЛИЗАЦИЯ БД НА СЕРВЕРЕ MYSQL
Цели работы: разработка инфологической и даталогической моделей реляционной БД.
Вариант 18. Занятость актеров театра. Работников театра можно подразделить на актеров, музыкантов, постановщиков и служащих. Каждая из перечисленных категорий имеет уникальные атрибуты-характеристики и может подразделяться (например, постановщики) на более мелкие категории. Театр возглавляет директор, в функции которого входят контроль за постановками спектаклей, утверждение pепеpтуаpа, принятие на работу новых служащих, приглашение актеров и постановщиков. Актеры, музыканты и постановщики, работающие в театре, могут уезжать на гастроли. Актеры театра могут иметь звания заслуженных и народных артистов, могут быть лауреатами конкурсов. Также актерами театра могут быть и студенты театральных училищ. Каждый актер имеет свои вокальные и внешние данные (пол, возраст, голос, pост и т.п.), которые могут подходить для каких-то pолей, а для каких-то нет (не всегда женщина может сыграть мужчину и наоборот). Для постановки любого спектакля необходимо подобрать актеров на роли и дублеров на каждую главную pоль. Естественно, что один и тот же актер не может играть более одной pоли в спектакле, но может играть несколько pолей в различных спектаклях. У спектакля также имеется pежисеp-постановщик, художник-постановщик, диpижеp- постановщик, автор. Спектакли можно подразделить по жанрам: музыкальная комедия, трагедия, оперетта и пр. С другой стороны, спектакли можно подразделить на детские, молодежные и пр. В pепеpтуаpе театра указывается какие спектакли, в какие дни и в какое время будут проходить, а также даты пpемьеp. В кассах театра можно заранее приобрести билеты или абонемент на любые спектакли. Абонемент обычно включает в себя билеты на спектакли либо конкретного автора, либо конкретного жанра. Цена билетов зависит от места, и спектакля. На премьеры билеты дороже. Администрацией театра фиксируется количество проданных билетов на каждый спектакль.
На основе варианта задания была построена модель БД в нотациях П.Чена
На ней отражены основные отношения и некоторые атрибуты сущностей.
Первым делом можно сразу же выделить категории(categories) для спектаклей(например, детские, молодежные), на основе них можно будет формировать возрастные ограничения для посещения спектакля.
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Name |
Varchar |
15 |
NN, UNIQUE |
Также можно выделить жанры(genres) спектаклей. Хоть и поля таблицы дублируются с таблицей категории, их объединение будет не совсем верным, так как это является отдельной сущностью. Можно рассмотреть вариант их объединения и ввода дополнительного поля, которое будет указывать на тип, но это кажется излишним.
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Name |
Varchar |
15 |
NN, UNIQUE |
Каждый работник может занимать одну или несколько позиций, а также к одной позиции может относиться несколько работников. Поэтому вводится отдельная таблица(positions)
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Name |
Varchar |
15 |
NN, UNIQUE |
Также у каждого работник может иметь помимо занимаемой должности, какие-то достижения(achievements). В случае актера, это лауреат какой-нибудь премии и тд. Для этого введена отдельная таблица:
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Name |
Varchar |
30 |
NN, UNIQUE |
Актеры, директор по своей сути - также являются работниками и на деле могут быть не только актерами, но и режиссерами, поэтому всех их мы можем объединить в одну таблицу, включив в нее необязательные поля, которые заполняются лишь при необходимости(workers):
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
first_name |
Varchar |
30 |
NN |
last_name |
Varchar |
30 |
NN |
Patronymic |
Varchar |
30 |
|
Gender |
Char |
1 |
NN, in(‘M','F','T') |
salary |
DECIMAL |
12 |
NN |
date_of_birth |
Date |
24 |
NN |
Voice |
Integer |
32 |
|
Height |
Integer |
32 |
|
Театр представляем сразу в виде отдельной сущности(theaters), чтобы в случае, если в систему потребуется добавить еще один, это не ввело путаницу, а также для разделения работников между разными театрами. Каждый работник может относится к одному или нескольким театрам. Таким образом мы сможем отделять спектакли от друг друга. Также в каждому спектаклю может относиться лишь один директор, дополнительно внешнюю описываем связь.
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Title |
Varchar |
30 |
NN, UNIQUE |
director_id |
Integer |
32 |
NN, FK workers(id) |
Для спектакля введена отдельная таблица(shows), содержащая:
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Title |
Varchar |
30 |
NN, UNIQUE |
Date |
timestamp |
24 |
NN |
Duration |
Integer |
32 |
NN |
theatre_id |
Integer |
32 |
NN, FK theaters(id) |
Каждый работник может иметь одну роль в конкретном спектакле. То есть может быть актером или, например, постановщиком. Для этой цели была введена таблица roles
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Name |
Varchar |
15 |
NN, UNIQUE |
Для хранении информации о билетах на спектакль введена таблица tickets со связью с конкретным спектаклем. А также опциональная связь с таблицей абонементов, так как не все билеты покупаются вместе с абонементом
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Available |
Bool |
32 |
NN, default true |
show_id |
Integer |
32 |
NN, FK shows(id) |
subscription_id |
Integer |
32 |
FK subscriptions (id) |
Также, для хранения абонементов - создана отдельная таблица subscriptions. Ее можно будет заполнять с помощью встроенных функций, которые будут разобраны через лабораторную. В функциях можно будет прописать определенные правила для вычисления скидок при покупке билетов на несколько спектаклей сразу.
Name |
Type |
Size |
Comment |
Id |
Integer |
32 |
PK, AI, NN |
Price |
DECIMAL |
12 |
NN |
Для связи жанров и спектаклей введена отдельная таблица genre_show, так как к одному и другому могут относиться по несколько записей. Первичный ключ является составным, что дополнительно гарантирует, что к одному жанру не может относиться один и тот же спектакль несколько раз. Аналогичное правило будет и для других таблиц соединения, чтобы избежать дублирующихся записей:
Name |
Type |
Size |
Comment |
|
show_id |
Integer |
32 |
NN, FK shows(id) |
PK |
genre_id |
Integer |
32 |
NN, FK genres(id) |
|
Также для связи с достижениями работников введена отдельная таблица - achievement_worker. Так как одно достижение может относиться к нескольким работникам, так и наоборот. Первичный ключ является составным.
Name |
Type |
Size |
Comment |
|
achievement_id |
Integer |
32 |
NN, FK achievements(id) |
PK |
worker_id |
Integer |
32 |
NN, FK workers(id) |
|
Для связи занимаемой должности введена отдельная связующая таблица - position_worker, так как один работник может занимать сразу же несколько должностей в театре. Также введен отдельный столбец для указания того, в каком театре какую должность занимает работник.
Name |
Type |
Size |
Comment |
|
position_id |
Integer |
32 |
NN, FK positions(id) |
PK |
worker_id |
Integer |
32 |
NN, FK workers(id) |
|
theater_id |
Integer |
32 |
NN, FK theaters(id) |
|
Для связи категорий со спектаклями введена соединительная таблица - category_show
Name |
Type |
Size |
Comment |
|
category_id |
Integer |
32 |
NN, FK categories(id) |
PK |
show_id |
Integer |
32 |
NN, FK shows(id) |
|
Так как актер может относиться сразу к нескольким спектаклям, но не может относиться к одному и занимать несколько ролей, то введена таблица - role_show_worker(за роль мы принимаем не только конкретную роль, которая относится лишь к актерам, но и роль по
т и п у |
«п о с т а н о в щ и к» , |
«р е ж и с с е р» и т.д. ) : |
|
|||
Name |
|
Type |
Size |
|
Comment |
|
show_id |
|
Integer |
32 |
|
NN, FK shows(id) |
PK |
worker_id |
|
Integer |
32 |
|
NN, FK workers(id) |
|
role_id |
|
Integer |
32 |
|
NN, FK roles(id) |
|
Даталогическая модель выглядит таким образом:
Вывод
В результате проделанной работы из постановки были выделены основные сущности, описаны в нотациях П.Чена. Также предоставлены в виде табличкой формы и с указанием связей. В результате была получена даталогическая модель.