Описание способов реализации запросов

ВВЕДЕНИЕ

 

Данная курсовая работа посвящена проектированию собственной базы данных. Проектирование охватывает три основные области:

· Проектирование конкретных объектов, которые будут реализованы в базе данных. Для MySQL это такие объекты, как таблицы, представления, и т.д.

· Проектирование конкретных экранных элементов управления, отчетов и программ, которые будут сопровождать данные в базе данных, и обеспечивать редактирование этих данных.

· При определенных обстоятельствах в процессе проектирования также необходимо учитывать конкретную среду или технологию – например, топологию сети, конфигурацию аппаратных средств, использование архитектуры клиент/сервер, параллельной обработки или распределенной архитектуры базы данных.

При проектировании каждой из областей есть свои нюансы, которые разработчику следует учитывать. Например, при проектировании таблиц базы и установлений связи между ними следует позаботиться как о целостности данных базы, так и о совместимости типов при подключении к этой базе разнообразных приложений и клиентов.

При разработке интерфейса пользователя следует обратить внимание на критерий удобства работы пользователя с базой. Интерфейс должен быть доброжелателен даже к неопытному пользователю.

 



ЗАДАНИЕ ПО ВЫБРАННОМУ ВАРИАНТУ

 

Предметная область: "Концертный зал".

Возможные виды деятельности:

· проведение выступлений в рамках гастролей различных исполнителей;

· реклама концертов;

· учет продаж билетов с учетом расценок по категориям мест;

· расчет с исполнителями и персоналом, обеспечивающим проведение концерта.



АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

 

Определение объектов и связей между ними

 

Определены следующие объекты в БД:

· Пользователи

· Исполнители

· Жанры

· Концерты

· Реклама

· Тип рекламы

· Билеты

· Тип билета

· Стоимость билета

· Продажа билетов

· Выплаты

· Журнал

Эти объекты имеют следующие информационные характеристики:

· Объект Пользователи – Идентификатор, Имя пользователя, Пароль

· Объект Исполнители – Идентификатор, Название, Стоимость одного выступления

· Объект Жанры – Идентификатор, Наименование

· Объект Концерты – Идентификатор, Дата концерта, Идентификатор исполнителя

· Объект Реклама – Идентификатор, Идентификатор концерта, Дата начала провидения рекламы, Дата конца провидения рекламы

· Объект Тип рекламы – Идентификатор, Наименование

· Объект Билеты – Идентификатор, Тип билета, Количество билетов данного типа, Цена за 1 билет

· Объект Тип билета – Идентификатор, Наименование

· Объект Стоимости билета – Идентификатор концерта, Идентификатор типа билета, Цена за 1 билет

· Объект Продажа билетов – Идентификатор, Идентификатор концерта, Идентификатор билета, Количество купленных билетов

· Объект Выплаты – Идентификатор, Идентификатор рабочего, Дата выплаты, Сумма выплаты

· Объект Журнал – Идентификатор, Идентификатор пользователя, Дата входа в систему, Действия

Между объектами выявлены следующие взаимосвязи:

· Один пользователь может множество раз входить в систему.

Связь 1:М.

· Несколько исполнителей могут выступить в нескольких концертах. Связь М:N.

· Исполнителей одного жанра может быть несколько. Связь М:1.

· Каждый концерт сопровождается несколькими типами рекламы. Связь М:N.

· Каждая реклама может быть нескольких видов. Связь 1:М.

· На каждый концерт продается множество билетов. Связь 1:М.

· Стоимость билетов зависит от концерта. Связь М:1.

· Билетов одного типа несколько. Связь М:1.

· Проданных билетов разного типа может быть несколько. Связь М:1.

· Один артист может получить несколько выплат. Связь 1:М.

 



Нормализация отношений

 

Перечисленные ранее объекты имеют атрибуты, совпадающие с их информационными характеристиками.

· Пользователи – Идентификатор

· Исполнители – Идентификатор

· Жанры – Идентификатор

· Концерты – Идентификатор

· Реклама – Идентификатор

· Тип рекламы – Идентификатор

· Билеты – Идентификатор

· Тип билета – Идентификатор

· Стоимость билета – нет первичных ключей, так как объект является связующим звеном

· Продажа билетов – Идентификатор

· Выплаты – Идентификатор

· Журнал – Идентификатор

 

Построение концептуальной модели данных

 

Концептуальная модель данных для предметной области "Концертный зал" представлена в приложении 1. Концептуальная модель представляет объекты предметной области, их атрибуты и взаимосвязи между объектами. Названия объектов написаны прописными буквами. Ключевые атрибуты подчеркнуты.

 

Построение реляционной модели базы данных

 

Чтобы получить реляционную модель, следует выполнить такие действия:

· для связей 1:N добавить специальное поле в таблицу со стороны "многие" (внешний ключ), которое служит для ссылки на таблицу, находящуюся со стороны "один"

· для связей М:N необходимо создать дополнительную таблицу, которая содержит первичные ключи таблиц из взаимосвязи, а также дополнительные атрибуты, относящиеся к составному объекту, который определяет эту взаимосвязь.

В результате получена структура базы данных, которая будет физически храниться в памяти компьютера. Реляционная модель базы данных представлена в приложении 2.



ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВ

 

Добавление записей в журнал

 

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) Between #4/1/2010# And #5/1/2010#));

 

Список вхождений в систему за заданное число

 

SELECT Users.Name_Users, Journal.Data_journal, Journal.Action_journal FROM Users LEFT JOIN Journal ON Users.Id_Users = Journal.Id_Users WHERE (((Journal.Data_journal)=["Введите дату"]));

 

Список вхождений в систему за неделю

 

SELECT Users.Name_Users, Journal.Data_journal, Journal.Action_journal FROM Users LEFT JOIN Journal ON Users.Id_Users = Journal.Id_Users WHERE (((Journal.Data_journal) Between Date()-7 And Date()));

 

Список выплат произведенных для заданного актера

 

SELECT Artists.Name_Artists, Payment.Prise_Payment FROM Artists LEFT JOIN Payment ON Artists.Id_Artists = Payment.Id_Artists WHERE (((Artists.Id_Artists)=[Введите № артиста])) ORDER BY Payment.Prise_Payment DESC;

 

Список исполнителей чье имя начинается на заданную букву

 


SELECT Artists.Name_Artists FROM Artists WHERE (((Artists.Name_Artists) Like [Введите букву]+"*"));

 

Сумма выплат за апрель месяц

 

SELECT Artists.Name_Artists, Sum(Payment.Prise_Payment) AS Summa FROM Artists LEFT JOIN Payment ON Artists.Id_Artists=Payment.Id_Artists WHERE (((Payment.Data_Payment) Between #4/1/2010# And #5/1/2010#)) GROUP BY Artists.Name_Artists;






РЕАЛИЗАЦИЯ ОТЧЕТОВ

 

На скольких концертах выступает каждый артист

 

Сколько билетов продано на каждый концерт

 


Список билетов купленных за апрель месяц

 


Список вхождений в систему за заданное число

 

Список вхождений в систему за неделю

 

Список выплат произведенных для заданного актера





ОПИСАНИЕ ИНТЕРФЕЙСА

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: