
- •Содержание
- •Аннотация
- •Введение
- •1 Описание предметной области и выявление требований, предъявляемых к информационной системе
- •Описание предметной области
- •1.2 Выявление требований, предъявляемых к информационной системе
- •2 Разработка и описание функциональной модели
- •2.1 Построение контекстной диаграммы
- •2.2 Декомпозиция моделируемой системы
- •3 Создание локальных концептуальных моделей
- •3.1 Выявление и определение сущностей
- •3.2 Определение связей между сущностями
- •3.3 Определение атрибутов сущностей и первичных ключей
- •3.4 Определение доменов
- •3.5 Создание диаграммы «сущность-связь»
- •4 Построение и проверка локальных логических моделей данных
- •4.1 Преобразование локальных концептуальных моделей данных в локальные логические модели
- •4.2 Проверка модели с помощью правил нормализации
- •4.3 Создание диаграмм «сущность – связь»
- •4.4 Определение требований поддержки целостности данных.
- •5. Создание и проверка глобальной логической модели данных
- •Слияние сущностей с одинаковыми именами и одинаковыми первичными ключами.
- •Включение связей, уникальных для каждого локального представления.
- •6 Разработка физической модели данных. Прямое проектирование
- •6.1. Построение физической модели данных
- •6.2. Описание процесса прямого проектирования
- •7 Проектирование приложения
- •7.1 Описание таблиц базы данных
- •7.2. Разработка приложения
- •8 Результаты тестирования
- •9. Управление проектом
- •Заключение
- •Список литературы
- •Лист регистрации изменений
- •Приложения
3.3 Определение атрибутов сущностей и первичных ключей
После того, как все сущности и отношение между ними были определены, можно начать подробно описывать каждую сущность.
Атрибуты – это характеристики объектов (сущностей). Основное назначение атрибута – это описание свойств сущностей, а также идентификация экземпляров сущностей.
Для каждого атрибута нужно определить следующие сведения:
имя атрибута и его описание;
тип данных и размерность значения;
значение, принимаемое для атрибута по умолчанию (если таковое имеется);
является ли атрибут обязательным (т.е. может ли он отсутствовать или иметь значение NULL);
является ли атрибут составным и, если это так, из каких простых атрибутов он состоит;
является ли данный атрибут производным и, если это так, какой метод следует использовать для вычисления его значения.
Возможный ключ – это один или несколько атрибутов, однозначно определяющих экземпляр сущности.
Первичный ключ это один из возможных ключей, остальные называются альтернативными.
Кроме первичных ключей сущности могут иметь внешние ключи, приобретённые ими в результате отношений с другими сущностями. В случае идентифицирующего отношения внешний ключ станет частью ключа сущности (составной ключ). Если отношение неидентифицирующее, то внешний ключ станет атрибутом.
Опишем более подробно все сущности со своими атрибутами.
Сущность «Клиенты». Предназначена для хранения справочной информации о клиентах. В ней указываются основные данные о клиенте, которые требуются знать клубу. Первичный ключ для данной сущности - код клиента, так как он однозначно идентифицирует каждую запись в сущности. Описание атрибутов приведено в таблице 2.
Таблица 2 – «Клиенты»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код клиента |
Числовой |
PK |
|
Код клиента |
ФИО |
Строковый |
AK |
|
ФИО клиента |
Улица |
Строковый |
|
|
Улица клиента |
Дом |
Числовой |
|
|
Дом клиента |
Номер квартиры |
Числовой |
|
|
Номер квартиры клиента |
Телефон |
Строковый |
|
|
Телефон клиента |
День рождение |
Дата |
|
|
Дата рождения клиента |
Скидка |
Числовое |
|
|
Скидка на занятия |
Сущность «Сотрудники». Предназначена для хранения справочной информации о сотрудниках. В ней указываются основные данные о сотрудниках, которые требуются знать клубу. Первичный ключ для данной сущности - код сотрудника, так как он однозначно идентифицирует каждую запись в сущности. Описание атрибутов приведено в таблице 2.
Таблица 3 – «Сотрудники»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код сотрудника |
Числовой |
PK |
|
Код сотрудника |
ФИО |
Строковый |
AK |
|
ФИО сотрудника |
Улица |
Строковый |
|
|
Адрес сотрудника |
Дом |
Числовой |
|
|
Дом сотрудника |
Номер квартиры |
Числовой |
|
|
Номер квартиры сотрудника |
Телефон |
Строковый |
|
|
Телефон сотрудника |
Паспортные данные |
Строковый |
|
|
Паспортные данные сотрудника |
Должность |
Строковый |
|
|
Должность сотрудника |
Сущность «Услуги». Предназначена для хранения информации о предоставляемых услугах фитнес клуба. Первичный ключ для данной сущности - код услуги, так как он однозначно идентифицирует каждую запись в сущности. Описание атрибутов приведено в таблице 4.
Таблица 4 – «Услуги»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код услуги |
Числовой |
PK |
|
Код услуги |
Наименование услуги |
Строковый |
AK |
|
Наименование услуги |
Сущность «Прейскурант». Предназначена для хранения данных о цене на услуги фитнес клуба в зависимости от числа выкупленных занятий. В фитнес клубе есть 4 вида абонементов: разовый, на 4 занятия (1 раз в неделю), на 8 занятий (2 раза в неделю) и 12 занятий (3 раза в неделю). В зависимости от услуги и числа занятий, выставляется цена. В сущности «Прейскурант» вместо атрибута «Наименование услуги» пока не записываем атрибут «Код услуги» из сущности «Услуги», так как эти сущности находятся в разных функциональных блоках. При слиянии локальных моделей вместо атрибута «Наименование услуги»появится атрибут «Код услуги». Первичный ключ для данной сущности - код цены, так как он однозначно идентифицирует каждую запись в сущности. Описание атрибутов приведено в таблице 5.
Таблица 5 – «Прейскурант»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код цены |
Числовой |
PK |
|
Код цены |
Наименование услуги |
Строковый |
AK |
|
Наименование услуги |
Количество занятий |
Числовой |
|
|
Количество занятий |
Цена |
Числовой |
|
|
Цена за услугу |
Сущность «Услуги клиентов». Предназначена для хранения данных о выбранных клиентами услуг. В дальнейшем эта таблица войдет в состав таблицы «Абонементы». Вместо ФИО клиента не записываем код клиента, так как клиент еще пока не зарегистрировался в базе. Первичный ключ для данной сущности является совокупность атрибутов «ФИО клиента» и «Код услуги» (взят из сущности «Услуги»), так как он однозначно идентифицирует каждую запись в сущности. Описание атрибутов приведено в таблице 6.
Таблица 6 – «Услуги клиентов»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
ФИО клиента |
Строковый |
PK |
|
ФИО клиента, приобретающие услуги |
Код услуги |
Строковый |
PK |
|
Код услуги |
Количество занятий |
Числовой |
|
|
Количество занятий |
Сущность «Абонементы». Предназначена для хранения данных о покупке абонемента на выбранные клиентом услуги. Один клиент может иметь несколько абонементов. Абонемент покупается только на определенную услугу. Абонемент выдается на определенный срок, поэтому фиксируется дата начала и дата окончания действия абонемента. Атрибут «Сумма оплаты» абонемента является вычисляемым полем. Для его вычисления из сущности «Прейскурант» по коду цены выбирается цена. Учитывая величину скидки, которая указана в таблице «Клиенты», получается значение атрибута «Сумма оплаты». Атрибут «Флаг активности» отвечает за проверку активности абонемента. Если данный атрибут равен 1, то абонементом можно пользоваться. Если срок действия абонемента истек или клиент исходил все занятия, то флаг активности выставляется равным 0. В атрибуте «Код сотрудника» указывается код администратора, оформляющего абонемент. Это предусмотрено для того, чтобы впоследствии можно было вести учет абонентов и начислять заработную плату сотруднику.
Первичный ключ для данной сущности – код абонемента, так как он однозначно идентифицирует каждую запись в сущности.
Описание атрибутов приведено в таблице 7.
Таблица 7– «Абонементы»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код абонемента |
Числовой |
PK |
|
Код абонемента |
Код клиента |
Числовой |
|
|
Код клиента из таблицы «Клиенты» |
Код цены |
Числовое |
|
|
Код цены |
Дата начала |
Дата |
|
|
Дата начала действия абонемента |
Дата окончания |
Дата |
|
|
Дата конца действия абонемента |
Сумма оплаты |
Числовой |
|
|
Сумма за абонемент |
Флаг активности |
Числовой |
|
|
Флаг действительности абонемента |
Код сотрудника |
Строковый |
|
|
Код сотрудника-администратора |
Сущность «Расписание занятий». Предназначена для хранения данных о расписании занятий, проводимых в фитнес клубе. В нем указаны наименование услуги, ФИО сотрудника, проводящего данное занятие, помещение, в котором проходит занятие, день недели и время начала занятия. Стандартно каждое занятие длится 1 час. Расписание занятий не расписано по дням, потому что клиентам удобней ориентироваться по дням недели. Первичный ключ для данной сущности – код расписания занятий, так как он однозначно идентифицирует каждую запись в сущности.
Описание атрибутов приведено в таблице 8.
Таблица 8– «Расписание занятий»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код расписания занятий |
Числовой |
PK |
|
Код расписания занятия |
Код сотрудника |
Числовой |
|
|
Код сотрудника, проводящего занятия |
Код услуги |
Числовой |
|
|
Код услуги |
Наименование помещения |
Строковый |
|
|
Наименование помещения, в котором проводятся занятия |
День недели |
Строковый |
|
|
День недели |
Время |
Время |
|
|
Время начала занятия |
Сущность «Журнал посещений». Предназначена для хранения данных о посещении занятий клиентами. В журнале посещений отмечаются клиенты, которые пришли на занятия. Первичный ключ для данной сущности – код журнала посещений, так как он однозначно идентифицирует каждую запись в сущности.
Описание атрибутов приведено в таблице 9.
Таблица 9 – «Журнал посещений»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код журнала посещений |
Числовой |
PK |
|
Код журнала посещений |
Дата занятия |
Дата |
|
|
Дата регистрации проводимого занятия |
Код расписания занятий |
Числовой |
|
|
Код расписания занятий |
Код абонемента |
Числовой |
|
|
Код абонемента |
Сущность «Зарплата инструкторов». Предназначена для хранения данных о зарплате инструкторов, которые получают ее за проведение каждого занятия. Из сущности «Расписание занятий» по коду занятия извлекаются сведения об инструкторе, который проводил данное занятие. Из сущности «Журнал посещений» извлекается информация о числе клиентов, пришедших на занятие. Цена на услугу, проводимую инструктором, берется из сущности «Прейскурант на услуги». Берется цена за 1 занятие. Атрибут «Оплата» вычисляется как произведение количества человек на цену за услугу и берется 20% от этого произведения (процент сотрудника-инструктора от общей суммы). Оплата начисляется по проведенному занятию.
Первичный ключ для данной сущности – код зарплаты, так как он однозначно идентифицирует каждую запись в сущности.
Описание атрибутов приведено в таблице 10.
Таблица 10 – «Зарплата инструкторов»
Наименование атрибута |
Тип данных |
Тип ключа |
Not Null |
Описание атрибута |
Код зарплаты |
Числовой |
PK |
|
Код зарплаты |
Дата |
Дата |
|
|
Дата проведения занятий |
Код расписания |
Строковый |
|
|
Код расписания , которое проводил сотрудник-инструктор |
Количество человек |
Числовой |
|
|
Количество человек, посетивших занятия |
Код цены |
Числовой |
|
|
Код цены на услугу, которую провел инструктор |
Оплата |
Числовой |
|
|
Зарплата инструкторов, полученная за проведенное занятие |