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