Определение сущностей и атрибутов. Построение концептуальной модели
Концептуальная модель предоставляет собой отражение предметной области, для которой разрабатывается база данных.
То есть на данный момент разработки базы данных можно выделить следующие сущности: Магазины, Товары, Поставки, Продажи.
Один и тот же товар может быть поставлен несколько раз, то есть отношение между сущностью «Товар» и сущностью « Поставки» «один-ко-многим» (см. рис.1):
Рис.1. Отношение между сущностью «Товар» и сущностью « Поставки»
Аналогично отношение товаров и продаж (см. рис. 2):
Рис.2. Отношение между сущностью «Товар» и сущностью « Продаж»
Каждый магазин может неоднократно использоваться в Поставках и Продажах (см. рис. 3,4):
Рис.3.Отношение между сущностью «Магазин» и сущностью «Поставки»
Рис.4.Отношение между сущностью «Магазин» и сущностью «Продаж»
Теперь определимся с атрибутами каждой сущности.
Магазины: Название, Адрес, ФИО директора.
Поставки: Дата поставки, Магазин, Курс, Товар, Количество, Закупочная цена, Корректировка стоимости.
Курс валют также можно выделить в отдельную сущность для сохранения истории и исключения случайных ошибок.
Продажи: Дата продажи, Магазин, Товар, Количество, Скидка.
Так как информация для описания товара повторяется (например, цвета, размеры), то имеет смысл выделить некоторые ее части в отдельные сущности.
Это значительно упростит ввод данных о товаре, ведь не придется каждый раз вводить, к примеру, название производителя вручную, можно будет выбрать его со списка производителей.
Кроме того дифференцирование каталога товаров облегчает поиск по нему.
Весь товар можно поделить на типы:
· Аксессуары;
· Женская одежда;
· Мужская одежда;
· Нижнее белье;
· Обувь женская;
· Обувь мужская;
· Сумки;
· Кошельки.
А также на группы товаров, каждая из которых относится к определенному типу: к примеру, мужская одежда может разделяться на группы:
· Костюм;
· Пиджак;
· Рубашка;
· Футболка;
· Шорты;
· Штаны.
Также товар в своем описании содержит производителей, названия которых также можно выделить в отдельную сущность.
То есть сущность Товары имеет атрибуты:
· Тип;
· Группа;
· Производитель;
· Описание.
Каждый товар может иметь несколько цветов и размеров, для того, чтобы не повторять каждый раз ту же самую информацию о товаре (Тип, группу, Производитель, Описание) для каждой единицы товара (цвет, размер), выделим цвета и размеры каждого товара в отдельную сущность: ТоварыЦветаРазмеры (Товар, Цвет, Размер), связанную с сущностью «Товары» связью «один-ко-многим» (см. рис.5):
Рис.5.Отношение между сущностью «Типы товаров» и сущностью «Товары, Цвета, Размер»
И уже единицу этой сущности будем принимать за единицу товара в поставках и продажах.
Так как цвета и размеры, также повторяющиеся данные, то их также стоит выделить в отдельные сущности.
При этом следует учесть, что размеры могут быть различными для различных типов товаров.
Все дополнительные сущности для описания товаров связаны с сущностью Товар или ТоварЦветРазмер связью «один-ко-многим»:
Рис.6. Отношение между сущностью «Типы товаров» и сущностью «Товары»
Рис.7. Отношение между сущностью «Группы товаров» и сущностью «Товары»
Рис.8. Отношение между сущностью «Производители» и сущностью «Товары»
Рис.9. Отношение между сущностью «Цвета» и сущностью «Товар, Цвета, Размер»
Рис.10. Отношение между сущностью «Размеры» и сущностью «Товар, Цвета, Размер
В свою очередь сущности Группы товаров и Размеры зависят от Типа товаров (см. рис. 11,12):
Рис.11. Отношение между сущностью «Типы товаров» и сущностью «Размеры»
Рис.12. Отношения между сущностью «Типы товаров» и сущностью «Группы товаров»
То есть концептуальная модель будет выглядеть следующим образом.
Все связи между сущностями получились типа «один-ко-многим», что говорит о правильности распределения данных (см. рис.13).
Рис.13. Концептуальная модель связи данных