Создавать реляционные таблицы или хранить сериализованные данные в столбце? - PullRequest
0 голосов
/ 06 мая 2018

У меня есть 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 отношения)

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

ваши таблицы должны быть такими:

1- таблица пользователей:

user_id|user_name|Email|price

2- таблица продуктов:

product_id|product_name|category_id|price

3- продукты_категория

category_id|category_name

4- таблица user_wish_list:

user_id|product_id
0 голосов
/ 06 мая 2018

Используйте таблицы. В общем случае не храните структурированные данные в отдельных значениях SQL. Пусть таблицы и внешние ключи создают необходимую вам структуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...