多个价格1项

时间:2012-02-28 05:34:42

标签: database

我想知道这是否是为价格超过1的商品构建表格的最佳方式。每个产品都由其model_number标识。我应该在每个卖家的model_number之前使用前缀吗?我不能使用model_number作为主键。例如:

seller_product_id      model_number     seller      price
SELLER_1_MODEL_NUMBER  MODEL_NUMBER     seller_1    9.99
SELLER_2_MODEL_NUMBER  MODEL_NUMBER     seller_2    19.99

3 个答案:

答案 0 :(得分:2)

为了松散耦合,我建议您构建单独的ItemsPrice表,并使用另一个table(称为Junction tableItem_Price根据您的喜好将许多物品映射到许多价格。

这称为Many-to-Many relationship

基本上,它将Item及其itemId链接到带有priceId的Price,并将此链接存储在Item_Price itemPriceId(或任何您称为第3主键)

这是一个示例图编辑:抱歉上一个图表。 enter image description here

这里有一个3个表的SQL DDL示例,以及2个将项目与价格关联,卖方与项目关联的联结表。

CREATE TABLE Item (
    item_id int PRIMARY KEY,
    ..
    ..
)

CREATE TABLE Price (
    price_id int PRIMARY KEY,
    ..
    ..
)

CREATE TABLE Seller (
    seller_id int PRIMARY KEY,
    ..
    ..
)

-- This is the junction table for Item to Price mapping.
CREATE TABLE Item_Price (
    item_id int REFERENCES Item (item_id),
    price_id int REFERENCES Price (price_id),
    PRIMARY KEY (item_id, price_id)
)

-- This is the junction table for Seller to Item mapping.
CREATE TABLE Seller_Item (
    seller_id int REFERENCES Seller (seller_id),
    item_id int REFERENCES Item (item_id),
    PRIMARY KEY (seller_id, item_id)
)

答案 1 :(得分:2)

一个属性有很多属性?听起来像one-to-many关系...去新表有外键可以帮助你。

Products
prod_id (PK) | model_no

Sellers
seller_id(PK)|seller_name

Pricing
price_id (PK)|price|prod_id (FK) | seller_id(FK)

答案 2 :(得分:0)

是您可以在每个卖家的model_number之前添加前缀。

如果你还有东西,请告诉我更清楚你的问题