将有许多不同的产品页面。
产品的数据是从数据库中获取的(id, name, description ...)更改为“已添加”。
用户可以选择在他的“愿望 list ”中添加多个产品。他之前选择的产品将显示为“已添加”。
作为初学者,我知道必须有一种方法可以在添加该产品时使 user_id
与 product_id
连续。
至于现在我有 products
表。我想我必须创建另一个表来保存 user_id
和 product_id
?
谢谢你的想法,希望我能理清头绪。
最佳答案
您走在正确的轨道上。您需要一个将用户与他们选择的产品相关联的表格:
CREATE TABLE selected_products
(
choice_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
product_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (user_id),
FOREIGN KEY (product_id) REFERENCES products (product_id)
) ENGINE=InnoDB;
以这种方式检索用户选择:
SELECT products.product_id, products.description
FROM products JOIN selected_products ON products.product_id = selected_products.product_id
WHERE user_id = '$someuserid';
当用户希望从他的选择中删除产品时,您只需要删除一行:
DELETE FROM selected_products WHERE user_id = '$someuserid' AND product_id = '$product_id';
wishlist
表的功能与 selected_products
表的功能完全相同。相同的结构,相同的关系。您还可以考虑添加另一列来指示添加产品时的时间戳:
date_added TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
关于php - 我的问题合适的数据库结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7140506/