Структура БД MySQL

Рейтинг: 1Ответов: 1Опубликовано: 28.01.2015

Возник вопрос при создании БД. Структура работы следующая:

Линия 1
    --Участок 1
        -- оборудования 1
        -- оборудования 2
        -- оборудования n
    --Участок 2 
        -- оборудования 3
Линия 2 
    --Участок 3
        -- оборудования 4
Линия 3

Есть товары. Один и тот же товар может быть во всех оборудованиях с разным количеством. У товара есть категория, категория может быть только одна (у товара). Есть проблема: категория товаров может иметь две единицы измерения: штуки и метры. Также товар может хранится на 1 или 2-х складах, в разных количествах. Линии друг с другом не связаны, точно так же участки и оборудования.

Хочу сделать вывод в таком формате:

-----------------------------------------------------------------------
Название|Категория|Оборудывания |К-во|Участок |Линия |Склад 1| Склад 2|
-----------------------------------------------------------------------
товар1  |первая   |оборудывание1| 3шт|Участок1|Линия1|  12   |0   | 
                  |оборудывание2| 1шт|Участок2|Линия2|        | 
-----------------------------------------------------------------------

Посмотрите, пожалуйста, мою структуру создания БД. И что здесь нужно изменить, по вашему мнению. Структура: http://sqlfiddle.com/#!2/2552d4/1

Ответы

▲ 1Принят

Не совсем понятно, какие комментарии вы ждете по структуре. Если она вас устраивает, то по виду нормальная структура.
Если вы хотите поменять структуру как-то для этого отчета, то структура тут ни при чем. Несвязанные друг с другом данные вы хотите вывести в одну табличку. На sql'е это можно сделать с шаманством типа вычисления номера строки через row_num() и "расположением рядом", все то же самое можно сделать двумя запросами и в коде отстраивать отчет как угодно.

Если говорить про структуру вообще, то тут такие общие комментарии:

  1. Цена - может меняться, и нужна будет вся история изменения цен. Кроме того, типов цен может быть несколько.
  2. Единицы измерения не должны быть привязаны к категориям. Единица измерения - это свойство товара. У товара могут быть одновременно несколько единиц измерения как с преобразованием одних в другие по коэффициенту (коробка = 10 шт), так непреобразуемые, как у вас (шт. и метры). Тут нужна подчиненная таблица "единицы измерения товара" (spare_id, property_id, ...). И далее единицу измерения надо тянуть через все документы, остатки и т.д., где есть количество. Т.е. количество в отрыве от единицы измерения смысла не имеет.