首页 > 解决方案 > 如何在 SQL 中添加更新列以添加外键

问题描述

我正在创建一个 Ebay 克隆项目,用户可以在其中竞标多种产品。当一个项目的拍卖时间结束时,出价最高的用户将赢得该产品。这是我计划使用的当前 SQL 表:

在此处输入图像描述

如何创建 SQL 更新命令以将产品 ID 添加到用户 products_won 列?这是我现在的方式,但我怀疑它会起作用:

在此处输入图像描述

我理解多对多和一对多的关系,但这似乎是一对多的关系。既然用户可以赢得多个产品,那么产品只能有一个最高出价者吗?因为它看起来像是一对多的关系,所以我不相信我需要创建一个连接表。感谢任何帮助

标签: sqlpostgresql

解决方案


你想要一个“桥接”表,user_products

create table user_products (
    email text foreign key references users(email),
    product_id int foreign key references products(id)
);

然后要将产品分配给用户,您只需将其插入此表中。

话虽如此,您也确实希望表中也有一个自动递增的整数 id users。字符串对于外键引用的效率略低。另外,您不希望 PII 用于标识任何引用用户的表中的记录。


推荐阅读