Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Непонятная структура (https://javascript.ru/forum/server/71981-neponyatnaya-struktura.html)

DivMan 26.12.2017 16:28

Непонятная структура
 
Вот небольшие задачи, по структуре БД

Товар, который может принадлежать нескольким категориям одновременно. Запросы: (1) достать все товары вместе с их категориями, (2) достать товар 'Огурец' вместе с его категориями, (3) достать все товары из категории 'Овощи', (4) достать все товары, которые принадлежат более чем одной категории

Сама структура

таблица product (продукт), поля: id, name (название), product_id (айди продукта)
таблица order (порядок), поля: id, product_id, category_id (айди категории)
таблица category (категория), поля: id, name (название),


Зачем у продукта, создавать поле айди продукта, если у него и так будет id?

Что означает таблица order? Почему она так названа?
Зачем она вообще?

У задач есть решения.

достать все товары вместе с их категориями:

SELECT * FROM product
LEFT JOIN order ON prdouct.category.id = order.id
LEFT JOIN category ON order.category_id = category.id


Вот эту цепочку

prdouct.category.id


я вообще не понимаю

DivMan 26.12.2017 16:32

а может order это подкатегория?

DivMan 26.12.2017 16:33

или должно быть так? prdouct.category_id

ksa 27.12.2017 08:49

Цитата:

Сообщение от DivMan
Зачем у продукта, создавать поле айди продукта, если у него и так будет id?

Не всегда нужен "машинный" ИД. Специально добавляется "свой" ИД, который может формироваться как составная строка.

Это хорошо проявляется на распределенных БД.

DivMan 27.12.2017 10:55

А пример можно?

ksa 27.12.2017 11:53

Цитата:

Сообщение от DivMan
А пример можно?

Например у тебя сеть магазинов, у каждого свой сервер. И есть центральная контора, на сервере которой собирается вся нужная информация от магазинов.

У записи каждой таблицы может быть свой "субдшный" ИД. Но так же нужен ИД который будет одинаковым по смыслу на всех серверах. Вот его-то и будут формировать "программно".

Для справочников, поставляемых с головного сервера такое не обязательно. Там достаточно полного соответствия с оригиналом.


Часовой пояс GMT +3, время: 18:19.