Разработка ER-диаграммы «Ателье»

Рассмотрим ER-модель для СУБД Ателье, которое должно вести учет заказов.

Из постановки задачи явно видно, что должны присутствовать 3 сущности «Сотрудник», «Клиент», «Заказ», «Материал».

При этом атрибуты сущности «Клиент» стандартны, которые позволят в дальнейшем связаться с клиентом. Также предусмотрен атрибут «Примечание» типа мемо для хранения любой неструктурированной информации.

По условию задачи четко выделены две роли – Мастер (швея) и Менеджер. При разработке модели решено не выделять эти роли в две сущности, а поместить все в одну с разделением при помощи атрибута «Должность». Также отметим, что пароль будет храниться в зашифрованном виде.

Как правило, ателье позволяют шить из своего материала, однако в постановке задачи об этом ничего не сказано, поэтому предусмотрена только одна сущность, содержащая информацию о материале ателье.

Сущность материалы содержит следующие атрибуты:

  • Артикул – цифровое или буквенное обозначение для кодирования товара.
  • Наименование.
  • Ед_измерения – единица измерения (кг, шт и т.д.). Одно из условий задачи гласит, что «…форма для ввода данных о заказе должна быть как можно более простой и максимально исключающей ошибки ввода данных», поэтому значения для единиц измерения не должны вводиться вручную.
  • Тек_цена_ед – текущая цена за единицу товара. Для простоты будем считать, что в случае изменения стоимости поставки или повышения изменяется стоимость всего товара.
  • Количество – остатки товара на складе.

Сущность «Заказ» связывает все сущности между собой. Отметим атрибуты этой сущности:

  • Номер_заказа – ключевой атрибут, предназначен для связи с другими сущностями.
  • Дата_заказа.
  • Заказчик – атрибут для связи с сущностью «Клиент».
  • Исполнитель – атрибут для связи с сущностью «Сотрудник».
  • Вид_работ – атрибут для связи с сущностью «Работа», в которой собраны возможные виды работ, например, пошив рубашки, штор и т.д. Сущность работа содержит стоимость на время заказа.
  • Цена_работы – стоимость работы, которая установлена на время заказа. Может не совпадать со стоимостью сущности «Работа». Данный атрибут в данной работе будет заполняться автоматически при помощи триггеров. Также возможно заполнение данного атрибута на уровне интерфейсов.

С сущностью заказа связана сущность «Примерка», которая содержит данные о результате примерки. Если требуется дополнительная примерка, то на уровне интерфейса задается новая дата. Если это была последняя примерка, то товар выдается, а в атрибут «Результат» вносится «Выдано». Атрибут имеет тип мемо для того, чтобы в него можно было вносить дополнительные заметки.

Сущность «Замеры» содержит необходимые замеры клиента для конкретного заказа.

Сущности «Заказ» и «Материалы» связаны между собой соотношением многие-ко-многим. Для практической реализации разбиваем эту связь на две с введением сущности «Материал_заказа», которая содержит записи о необходимых материалов для конкретного заказа. Отметим, сто при внесении данных в эту сущность:

  • стоимость материала должна автоматически вноситься в атрибут «Цена_заказа_ед»;
  • в сущности «Материал» должно уменьшаться соответствующее значении атрибута «Количество».

Данные автоматические изменения также предлагается реализовать при помощи механизма триггеров.

Стоимость заказа будет вычисляться при обращение как сумма работы и сумма произведений текущей цены материала на количество.

Окончательный вариант приведен на рисунке ниже.

Поделиться:
  • Добавить ВКонтакте заметку об этой странице
  • Мой Мир
  • Facebook
  • Twitter
  • LiveJournal
  • FriendFeed
  • В закладки Google
  • Google Buzz
  • Яндекс.Закладки
  • StumbleUpon
  • Technorati
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.