我正在实施一个价格数据库,其中多个卖家以不同的价格销售同一产品。每种产品都是独一无二的,并由model_number
标识。现在我的价格表中有1个卖家。我正在寻找建立一个可以列出多个价格的表格的最佳方法,每个价格都是主键为model_number
的行的字段
表格如下:
model_number | seller | price
abc Store1 99.99
当只有1个卖家时,此结构很有效,因为主键是model_number,我更新价格的查询用于重复键更新,只有在价格发生变化时才会更新产品。此外,主键是model_number,但如果我有多个卖家具有相同的model_number但具有不同的价格,我相信在更新表时,数据库会因为会有重复的model_number而感到困惑。
我应该为每个卖家提供他们产品的唯一钥匙吗?例如,如果卖方_1拥有卖方_1的主键并且保持该值相同,那么数据库知道如果卖方_1的价格字段发生变化则更新。
由于
答案 0 :(得分:3)
您可以制作model_number和卖家主键。这样,只要卖家不同,你就可以拥有几个具有相同model_number的元组。
model_number | seller | price
abc Store1 99.99
abc Store2 9.99
这是你想要的吗?
答案 1 :(得分:1)
三张桌子:
Seller
,Seller_Product
,Product
链接表Seller_Product
的每一行包含两个对应卖方和产品行的外键。 price
是卖方和产品之间链接的属性。所以它成为链接表中的一个字段。
卖家: ID,姓名,......
卖家_产品: Seller_ID,Product_ID,价格,供货情况,......
产品: ID,名称,型号,制造商,......
这是N:M关系的常用表格设计。
答案 2 :(得分:0)
到目前为止,您的表结构看起来不错,您需要做的就是将卖家列添加为表的主键的一部分。你在这里有一个产品和卖家之间的多对多关系。多对多关系有一些额外的数据,这是价格。
我认为你的意思是“为每个卖家提供他们产品的独特钥匙”,实际上他们称之为代理钥匙。您可以为表提供主键列,使其看起来像这样
id | model_number | seller | price
其中id是表的主键,而model_number和sell是辅助键和外键,但这完全取决于你,无论哪种方式都可以正常工作。
答案 3 :(得分:0)
你在这里处理的是很多很多关系。
此解决方案需要三个表:
产品: 包含产品信息的表格,包括唯一的自动递增ID。
卖家: 包含卖家信息的表格,包括唯一的自动递增ID。
Products_To_Sellers: 包含product_id和seller_id的表(单独索引这些列)
使用这种方法,您可以加入表格来查看卖家产品,但最终您拥有可无限扩展的SCHEMA
答案 4 :(得分:0)
[seller] [product_seller] [product]
-id seller.id -id -price
product.id
如果您需要独特的产品,则需要另一个表格:
[seller] [product_seller] [product] [seller_price]
-id seller.id -id product.id
product.id seller.id
-price