Напомню описание предметной области (сразу выделив сущности):
Предприятие производит
продукциюсогласно установленнымспецификациямиреализуетготовую продукциюзаказчикам. Каждая продукция имеет свою цену, зависящую от стоимости материалов.
Цена продукции (и материалов) не является отдельной сущностью - это свойство продукции (материала)
Что можно вытащить из данных для импорта:
Это данные для уже существующей сущности реализация (можем ее назвать заказы)
заказе фигурируют исполнитель и заказчик, так как аттрибуты у них скорее всего одинаковые, то можно объединить их в одну сущность - организациипродукты_заказаДанные для сущности организации, новых сущностей нет
Данные для сущностей продукция и материалы
Описывается связь между продуктами и материалами - связь многие-ко-многим, которая будет реализована через таблицу связей материалы_продукта
Здесь повторение предыдущего пункта (для запутывания)
Данные для сущностей продукция и материалы (в цену продукции включается не только цена исходных материалов, но и амортизация оборудования и зарплата и прибыль организации)
Итоговый список сущностей (с аттрибутами):
Organization (организация) - производители и заказчики
Аттрибуты описаны в файле Заказчики
id: int - первичный ключname: varchar(256)inn: char(11) - числом хранить нельзя, иначе могут потеряться нули в начале + размер поля фиксированный, поэтому вибираем тип charaddres: varchar(256)phone: varchar(20)saleman: tinyint(1) - признак что организация является продавцомbuyer: tinyint(1) - признак что организация является покупателем (заказчиком)Product (продукция)
id: int - первичный ключname: varchar(256)price: decimal(11, 2) - итоговая цена за единицу продукции, денежный типunit: varchar(20) - единицы измеренияquantity: int - количество на складе (в принципе не обязательно, данных для этого аттрибута нет)organizationId: int - идентификатор производителя продукции (внешний ключ) - структура нашей модели допускает несколько разных производителей, поэтому нужно учитывать кому принадлежит продукцияMaterial (материал)
id: int - первичный ключname: varchar(256)price: decimal(11, 2) - цена материала, денежный типunit: varchar(20) - единицы измеренияquantity: int - количество на складеorganizationId: int - идентификатор производителя продукции (внешний ключ) - структура нашей модели допускает несколько разных производителей, поэтому нужно учитывать кому принадлежит материалProductMaterial (спецификация) - материалы продукта (таблица связи между продукцией и материалами)
productId: int - идентификатор продукции (внешний ключ)materialId: int - идентификатор материала (внешний ключ)quantity: decimal(11, 3) - количество материала для производства продукции (у нас весовые продукты, поэтому количество может быть не целым)Order (реализация) - заказы
id: int - первичный ключorderNumber: int - номер заказа, в принципе можно и без негоorderDate: datetimesalemanId: int - идентификатор продавца (внешний ключ)buyerId: int - идентификатор заказчика (внешний ключ)OrderProduct (продукты_заказа) - таблица связи между заказом и продукцией
orderId: int - идентификатор заказа (внешний ключ)productId: int - идентификатор продукции (внешний ключ)price: decimal(11, 2) - цена продукции НА МОМЕНТ ЗАКАЗА (так то цена есть в продукции, но она может измениться, а суммы старых заказов при этом меняться не должны)quantity: decimal(11, 3) - количество продукции в заказеПо условиям задачи нужна логическая диаграмма, а не физическая (можно не указывать типы данных), то есть ее можно "рисовать" в любом графическом редакторе. Но рисуя сразу физическую модель в MySql Workbench мы сэкономим на следующем шаге - создании базы данных по модели.
Сам процесс я описывать не буду, мы это проходили на лекциях. Напомню только, что внешние ключи и таблицы связи руками создавать не нужно - они автоматически создадутся при добавлении соответствующих связей