[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проектирование БД
nike90
Здравствуйте, нужна ваша помощь!

Есть таблица Products
- id_product
- category
- name
- price


И таблица Categories
- id_category
- name


Мне нужно записывать продукту в какой он категории находится, категорий может быть несколько, в большинстве случаем так и будет.

Я рассматривал вариант когда в таб. Products поле category varchar и категории (id_categiry) через запятую ("10,20,37"). Но потом если мне придется делать выборку продуктов по категориях то придется использовать REGEXP или LIKE , что с точки производительности не очень хорошо.

Вопрос:
Если ли другое более оптимизированное решение?
Guest
Есть таблица Products
- id_product
- name
- price

Categories
- id_category
- name

И таблица Products_Categories
- id_product
- id_category
Valick
Цитата (nike90 @ 10.03.2015 - 12:55)
Если ли другое более оптимизированное решение?

оно не другое, оно единственно правильное, это называется отношение многие ко многим и в реляционной БД оно материализуется в таблицу связи, о которой уже написал гость.


_____________
Стимулятор ~yoomoney - 41001303250491
nike90
Я рассматривал этот вариант, но меня смутил тот факт, что если в каждом продукте будет по 3 категории в среднем, то в таблице ссылок Products_Categories будет в 3 раза больше записей чем в таб. Products.
stump
Цитата (nike90 @ 10.03.2015 - 17:13)
Я рассматривал этот вариант, но меня смутил тот факт, что если в каждом продукте будет по 3 категории в среднем, то в таблице ссылок Products_Categories будет в 3 раза больше записей чем в таб. Products.

БД не рухнет, не бойся.
Для снятие предостережений почитай про нормальные формы и приведение к нормальным формам. Там увидишь что идея которую ты описал всегда подлежит нормализации и приводится к той форме о которой написал Гость.


_____________
Трус не играет в хокей
nike90
Спасибо всем за хороший совет.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.