php - 我的问题合适的数据库结构是什么?

标签 php mysql sql database

将有许多不同的产品页面。

产品的数据是从数据库中获取的(id, name, description ...)更改为“已添加”。

用户可以选择在他的“愿望 list ”中添加多个产品。他之前选择的产品将显示为“已添加”。

作为初学者,我知道必须有一种方法可以在添加该产品时使 user_idproduct_id 连续。

至于现在我有 products 表。我想我必须创建另一个表来保存 user_idproduct_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/

相关文章:

php - 使用 URL 路由器会导致 header 授权检索问题

php - 什么是学习面向对象php的最好的书/站点/教程?

java - 将数据记录到文件服务器上的文件还是更好地使用 MySQL?

php - 如何用 ; 分割字符串并使用 php 存储在 mysql 中

php - 检查用户名/密码是否与用户名/加密密码匹配。漩涡加密和盐

mysql - 在 MySQL 中为 UTF-8 内容添加一列

php - CakePHP-DateTime 和 php 的 date()

php - 如何在 mysql 语句中使用多个 WHERE 和 OR

sql - 选择一个值而不是另一个

mysql - 用内容填充表格并避免空表格