Предложение по дизайну базы данных - PullRequest
1 голос
/ 04 июня 2011

Я строю систему корзины покупок на своем локальном сервере для практики.

Теперь я использую сеансы для вставки продукта в базу данных MySQL, но я создаю таблицу для каждого из сеансов.Я знаю, что это не идеальный способ сделать что-то.

Мой вопрос:

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

Так что, если я переделаю таблицу, это будет

User INT NULL,
product_1 INT NULL,
product_2 INT NULL,
...
....

Я знаю, что создание таблицы для каждого из заказов в будущем вызовет только проблемы

Ответы [ 2 ]

4 голосов
/ 04 июня 2011

Нет, этот дизайн будет невероятно сложно поддерживать.Вместо этого имейте одну таблицу, которая будет содержать все данные корзины;что-то вроде:

User    Product    Quantity
2       5          1
2       3          3
2       7          1
3       5          2
3       6          2

, где столбец «пользователь» является внешним ключом таблицы пользователя (или таблицы корзины, в зависимости от того), а столбец «продукт» является внешним ключом таблицы продуктов.Таким образом, не существует ограничений на количество уникальных товаров в корзине за один раз.

2 голосов
/ 04 июня 2011

Вероятно, было бы лучше проверить количество товаров в корзине, прежде чем добавлять новый товар в базу данных. Если количество товаров в корзине равно максимальному, не допускайте добавления другого товара или добавления строки в базу данных. Я не думаю, что можно установить максимальное количество строк в таблице SQL, и если это возможно, это, вероятно, не является хорошей практикой.

Почему бы не иметь одну таблицу, в которой хранятся все элементы корзины (для всех пользователей), и хранить уникальный идентификатор клиента в переменной Session, которая ссылается на строку в таблице корзины SQL.

Как то так ...

Столбцы: CustomerID | ProductID | КОЛ-ВО

Строка 1: 1293993933 | 393939399 | 3
Ряд 2: 1293993933 | 339933992 | 4

Сохранить идентификатор клиента в переменной сеанса ($ _SESSION ['CustomerID'], если вы используете PHP)

Выполнять SQL-запрос на выборку при каждом добавлении товара в корзину. Если оно равно максимально допустимым элементам корзины, не разрешайте пользователю запускать вставку в команду SQL.

Надеюсь, это поможет

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