Дайте совет дельный, пожалуйста. Занялся, первый раз в жизни, нормализацией небольшой БД, и столкнулся с проблемкой, которую ни как не могу придумать, как решить.
Итак, по порядку. Нужно спроектировать небольшую БД некоего оборудования, причем база рассчитана на всю Россию с разделением по регионам. Т.е. смысл такой -
есть некая модель оборудования, например, назовем "Wifi роутер модель №1", причем эта модель может присутствовать в некоторых регионах, а может и не присутствовать.
Возьмем, к примеру 3 региона: Удмуртия, Башкирия и Адыгея (ни какого скрытого смысла, просто чтобы односложные названия были, для упрощения написания).
И вот в Удмуртии и Башкирии наш роутер есть, а в Адыгеи нету...
А роутер модели №2 присутствует в Башкирии и Адыгеи, а в Удмуртии его нет.
Соответственно есть у нас две таблицы - Таблица "Оборудование" и таблица "Регионы"
в таблице оборудования, есть следующие поля:
id Наименование Регион
в таблице Регионы поля такие:
id Регион
Соответственно таблица регионов будет выглядеть так:
Таблица - Регионы
id Регион
18 Удмуртия
2 Башкирия
1 Адыгея
Таблица оборудования
id Наименование Регион
1 Wifi Роутер м.1 18, 2
2 Wifi Роутер м.2 1, 2
Соответственно смущает то, что в поле Регион, таблицы Оборудования, указываются множественные значения, и ни как не могу найти способ нормализовать это поле, получается либо так как сейчас, либо дублировать для каждого региона модель оборудования, что еще хуже...
Как быть в данной ситуации? решения в Гугле и Яндексе не нашел, потому решил написать сюда.
PS. Прошу не обращать внимания на то, что например поле Наименование можно также нормализовать разобрав на Тип
оборудования и модель, это само собой будет сделано. Вопрос только в поле с Регионом, какие есть варианты по его нормализации?
Изначально думал об этом варианте но почему то он мне показался грамоздким, и я его даже не рассматривал, а когда сейчас прикинул, то оказалось единственно правильным решением)) Спасибо огромное!
У меня есть таблица на 180 000 запчастей, запчасть может принадлежать сразу нескольким компонентам, компонентов 150 000.
Итого около 4 500 000 связей в достаточно компактной таблице (по полям и объему данных).
Или было бы иначе 4 500 000 запчастей-дублей с привязкой к компоненту, чудовищный размер таблицы, индексов, извращенная логика распознавания дублей при выборке данных.
Стандартная задача, коллега:
Есть 2 варианта решения (Русский и Американский - как нам их называл препод)
Структура таблиц
Таблица - Регионы
id Регион
18 Удмуртия
2 Башкирия
1 Адыгея
Таблица оборудования
id Наименование
1 Wifi Роутер м.1
2 Wifi Роутер м.2
Таблица Оборудование в регионах (id, region_id, oborydovanie_id - id автоинкремент ключ первичный)
1 18 1
2 2 1
3 1 2
4 2 2
И второй подход состоит в том чтобы в таблице Оборудование в регионах убрать поле id, а первичным ключем делать связку region_id, oborydovanie_id
тогда таблица будет:
18 1
2 1
1 2
2 2