2011-06-03 6 views
1

Je construis un système de panier sur mon localserver pour la pratique.Database Design Suggestion

Maintenant, je me sers des sessions pour insérer le produit à la base de données MySQL, mais je suis en train de créer une table pour chacune des sessions. Je sais que ce n'est pas une façon idéale de faire les choses.

Ma question:

Dois-je définir un certain nombre de lignes dans la table des sessions, de sorte qu'il y aura un nombre maximum d'articles ajoutés au panier?

Donc, si je re concevoir la table, il serait

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

Je sais que la création d'une table pour chacune des commandes ne fera que causer des problèmes à l'avenir

Répondre

4

Non, cette conception sera incroyablement difficile à maintenir. Au lieu de cela, avoir une table qui contiendra toutes les données du panier; quelque chose comme:

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

où la colonne « utilisateur » est une clé étrangère sur la table d'utilisateur (ou table de chariot, selon), et la colonne « produit » est une clé étrangère sur la table des produits. De cette façon, il n'y a aucune restriction sur le nombre de produits uniques dans le panier en même temps.

2

Il serait sans doute préférable de vérifier nombre d'articles dans le panier avant d'ajouter un nouvel élément à la base de données. Si le nombre d'articles du panier est égal au maximum, n'autorisez pas l'ajout d'un autre élément ou l'ajout d'une ligne à la base de données. Je ne pense pas qu'il soit possible de définir un nombre maximum de lignes dans une table SQL et si cela est possible, ce n'est probablement pas une bonne pratique.

Pourquoi ne pas avoir une seule table qui contient tous les éléments de panier (pour tous les utilisateurs) et stocker un numéro de client unique dans la variable de session qui référence à une ligne dans la table de panier SQL.

Quelque chose comme ça ...

Colonnes: CustomerID | ProductID | QTÉ

Ligne 1: 1293993933 | 393939399 | 3
Ligne 2: 1293993933 | 339933992 | 4

Mémorisez le code client dans une variable de session ($ _SESSION [ 'CustomerID'] si vous utilisez PHP)

Faites une requête SQL SELECT COUNT chaque fois qu'un produit est ajouté au panier. Si elle est égale aux éléments de panier autorisés maximum, n'autorisez pas l'utilisateur à exécuter l'insertion dans la commande SQL.

Hope this helps