![]() |
![]() |
![]() |
|
|||||||||
|
![]() | |||||||||||
|
![]() |
||||||||
|
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Создание системы учета для предметной области "Концертный зал"Создание системы учета для предметной области "Концертный зал"
· проведение выступлений в рамках гастролей различных исполнителей; · реклама концертов; · учет продаж билетов с учетом расценок по категориям мест; · расчет с исполнителями и персоналом, обеспечивающим проведение концерта. 2. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ2.1 Определение объектов и связей между нимиОпределены следующие объекты в БД:· Пользователи · Исполнители · Жанры · Концерты · Реклама · Тип рекламы · Билеты · Тип билета · Стоимость билета · Продажа билетов · Выплаты · Журнал Эти объекты имеют следующие информационные характеристики: · Объект Пользователи - Идентификатор, Имя пользователя, Пароль · Объект Исполнители - Идентификатор, Название, Стоимость одного выступления · Объект Жанры - Идентификатор, Наименование · Объект Концерты - Идентификатор, Дата концерта, Идентификатор исполнителя · Объект Реклама - Идентификатор, Идентификатор концерта, Дата начала провидения рекламы, Дата конца провидения рекламы · Объект Тип рекламы - Идентификатор, Наименование · Объект Билеты - Идентификатор, Тип билета, Количество билетов данного типа, Цена за 1 билет · Объект Тип билета - Идентификатор, Наименование · Объект Стоимости билета - Идентификатор концерта, Идентификатор типа билета, Цена за 1 билет · Объект Продажа билетов - Идентификатор, Идентификатор концерта, Идентификатор билета, Количество купленных билетов · Объект Выплаты - Идентификатор, Идентификатор рабочего, Дата выплаты, Сумма выплаты · Объект Журнал - Идентификатор, Идентификатор пользователя, Дата входа в систему, Действия Между объектами выявлены следующие взаимосвязи: · Один пользователь может множество раз входить в систему. Связь 1:М. · Несколько исполнителей могут выступить в нескольких концертах. Связь М:N. · Исполнителей одного жанра может быть несколько. Связь М:1. · Каждый концерт сопровождается несколькими типами рекламы. Связь М:N. · Каждая реклама может быть нескольких видов. Связь 1:М. · На каждый концерт продается множество билетов. Связь 1:М. · Стоимость билетов зависит от концерта. Связь М:1. · Билетов одного типа несколько. Связь М:1. · Проданных билетов разного типа может быть несколько. Связь М:1. · Один артист может получить несколько выплат. Связь 1:М. 2.2 Нормализация отношенийПеречисленные ранее объекты имеют атрибуты, совпадающие с их информационными характеристиками.· Пользователи - Идентификатор · Исполнители - Идентификатор · Жанры - Идентификатор · Концерты - Идентификатор · Реклама - Идентификатор · Тип рекламы - Идентификатор · Билеты - Идентификатор · Тип билета - Идентификатор · Стоимость билета - нет первичных ключей, так как объект является связующим звеном · Продажа билетов - Идентификатор · Выплаты - Идентификатор · Журнал - Идентификатор 2.3 Построение концептуальной модели данныхКонцептуальная модель данных для предметной области "Концертный зал" представлена в приложении 1. Концептуальная модель представляет объекты предметной области, их атрибуты и взаимосвязи между объектами. Названия объектов написаны прописными буквами. Ключевые атрибуты подчеркнуты.2.4 Построение реляционной модели базы данныхЧтобы получить реляционную модель, следует выполнить такие действия:· для связей 1:N добавить специальное поле в таблицу со стороны "многие" (внешний ключ), которое служит для ссылки на таблицу, находящуюся со стороны "один" · для связей М:N необходимо создать дополнительную таблицу, которая содержит первичные ключи таблиц из взаимосвязи, а также дополнительные атрибуты, относящиеся к составному объекту, который определяет эту взаимосвязь. В результате получена структура базы данных, которая будет физически храниться в памяти компьютера. Реляционная модель базы данных представлена в приложении 2. 3. ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВДобавление записей в журналINSERT INTO Journal ( Id_Users, Data_journal, Action_journal ) VALUES ([идентификатор пользователя], Date(), "В системе");Какие исполнители не получили зарплату в этом месяцеSELECT Artists.Name_Artists FROM Artists LEFT JOIN Payment ON Artists.Id_Artists = Payment.Id_Artists WHERE (((Artists.Id_Artists) Not In (SELECT Id_Artists FROM Payment))) GROUP BY Artists.Name_Artists;На какой концерт не осуществлялась продажа билетов на этой неделиSELECT Concert.Name FROM Concert LEFT JOIN SellTikets ON Concert.Id_Concert = SellTikets.Id_Concert WHERE (((Exists (SELECT Id_Concert FROM SellTikets where SellTikets.Id_Concert=Concert.Id_Concert ))=False)) GROUP BY Concert.Name;На скольки концертах выступает каждый артистSELECT Artists.Name_Artists, Count(Busy_artists.Id_Concert) AS [Count] FROM Artists RIGHT JOIN Busy_artists ON Artists.Id_Artists= Busy_artists.Id_Artists GROUP BY Artists.Name_Artists;Сколько билетов продано за месяцSELECT Count(SellTikets.Id_Sell) AS [Count] FROM SellTikets WHERE (((SellTikets.Date_of_SellTickets) Between Date()-30 And Date()));Сколько билетов продано на каждый концертSELECT Concert.Name, Count(SellTikets.Id_Sell) AS [Count] FROM Concert LEFT JOIN SellTikets ON Concert.Id_Concert=SellTikets.Id_Concert GROUP BY Concert.Name;Сколько выплат произведено за месяцSELECT Count(Payment.Id_Payment) AS [Count] FROM Payment WHERE (((Payment.Data_Payment) Between Date()-30 And Date()));Список артистов участвующих в заданном концертеSELECT Artists.Name_Artists, Concert.Name FROM Concert LEFT JOIN (Artists RIGHT JOIN Busy_artists ON Artists.Id_Artists = Busy_artists.Id_Artists) ON Concert.Id_Concert = Busy_artists.Id_Concert WHERE (((Concert.Id_Concert) = [Введите № концерта])) ORDER BY Artists.Name_Artists;Список билетов в номере места, которых есть заданная цифраSELECT Ticket_type.NameType_tick, Tickets.Reference_number, Tickets.Seat_number FROM Ticket_type LEFT JOIN Tickets ON Ticket_type.Id_Type_tick = Tickets.Id_Type_Tick WHERE (((Tickets.Seat_number) Like [Введите цифту]+"*"));Список билетов купленных за апрель месяцSELECT Concert.Name, Tickets.Reference_number, Tickets.Seat_number, SellTikets.Date_of_SellTickets FROM Tickets RIGHT JOIN (Concert LEFT JOIN SellTikets ON Concert.Id_Concert = SellTikets.Id_Concert) ON Tickets.Id_Tickets = SellTikets.Id_Tickets WHERE (((SellTikets.Date_of_SellTickets) Betw |