Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR3.Tyutterin_Yakov_Z1411

.pdf
Скачиваний:
0
Добавлен:
29.04.2024
Размер:
1.2 Mб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА ПРИКЛАДНОЙ ИНФОРМАТИКИ

ОЦЕНКА

ПРЕПОДАВАТЕЛЬ

канд. техн. наук, доц.

 

Е. Л. Турнецкая

должность, уч. степень, звание

подпись, дата

инициалы, фамилия

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ №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)

 

Даталогическая модель выглядит таким образом:

Вывод

В результате проделанной работы из постановки были выделены основные сущности, описаны в нотациях П.Чена. Также предоставлены в виде табличкой формы и с указанием связей. В результате была получена даталогическая модель.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]