ВВЕДЕНИЕ
1.ЗАДАНИЕ ПО ВЫБРАННОМУ ВАРИАНТУ
2.АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
2.1 Определение объектов и связей между ними
2.2 Нормализация отношений
2.3 Построение концептуальной модели данных
2.4 Построение реляционной модели базы данных
3.ОПИСАНИЕ СПОСОБОВ РЕАЛИЗАЦИИ ЗАПРОСОВ
4.РЕАЛИЗАЦИЯ ОТЧЕТОВ
5.ОПИСАНИЕ ИНТЕРФЕЙСА
5.1. Описание групп пользователей
5.2. Описание интерфейса
6.КОНТРОЛЬНЫЙ ПРИМЕР
ВЫВОДЫ
СПИСОК лИТЕРАТУРЫ
Данная курсовая работа посвящена проектированию собственной базы данных. Проектирование охватывает три основные области:
· Проектирование конкретных объектов, которые будут реализованы в базе данных. Для 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;
На скольких концертах выступает каждый артист
Сколько билетов продано на каждый концерт
Список билетов купленных за апрель месяц
Список вхождений в систему за заданное число
Список вхождений в систему за неделю
Список выплат произведенных для заданного актера
В системе определены три группы пользователей – Администратор, Директор, Менеджер, Кассир.
Для каждой группы предусмотрены следующие возможности работы с программой:
Администратор – разрешено изменять или добавлять пользователей.