У меня есть users
таблица с такой структурой:
user_id | name | email | mobile
И еще одна таблица с именем products
с такой структурой:
product_id | name | price
теперь я хочу добавить список пожеланий в мой проект, чтобы user
мог добавить немного products
в свой список пожеланий (со своими любимыми категориями. Пример: добавить категорию списка пожеланий под названием my favorite clothes
и добавьте product_id = 55 к этой категории)!
Теперь у меня есть 2 варианта :
1. Добавьте еще один столбец в таблицу пользователей с именем user_wish_list
, а затем сохраните сериализованные данные в этом столбце, как показано ниже:
$user_wish_list = [
'user_category_1' => ['product_id_1', 'product_id_2', ....] ;
];
и сохраните serialize($user_wish_list)
в столбце user_wish_list
.
2. создать 2 таблицы, как показано ниже:
tabe: wish_list_categories
user_id | category_id (PK) | category_title
и
tabe: wish_list_items
category_id (FK) | item_id | product_id (FK)
и, наконец, создайте связь между этими таблицами ( SQL join )
какой вариант лучше? Я лично думаю, что второй один!
одна из причин моего выбора заключается в том, что я могу получить доступ к данным с помощью чисто SQL-запроса
как показано ниже (мне не нужно обрабатывать данные после извлечения из базы данных с помощью unserialize()
):
SELECT users.user_id, users.name, wish_list_categories.category_id,
FROM Orders
INNER JOIN Customers ON users.user_id = wish_list_categories.category_id
А как насчет других преимуществ?
Или позвольте мне задать более общий вопрос: когда мы в точности используем реляционные таблицы вместо использования столбца? (рассмотрим one-to-one
отношения)