拍卖风格网站的数据库设计

时间:2011-09-17 14:11:34

标签: php mysql database

我正在创建一个拍卖风格的网站,用户可以在其中竞标商品。关于项目和投标功能,我对数据库设计有点困惑。最初我认为一个名为“项目”的表格可能包含一个名为“出价”的多值列,其中包含bid_id ..但是经过一些研究后看来这种方法是禁止的......但我相信我能记住一个大学讲授或者两次提到数据库设计中的多值列。这个问题的最佳方法是什么?

由于

3 个答案:

答案 0 :(得分:1)

这取决于您对如何设计数据库的要求。如果每个产品ID只有一次拍卖,则BID表可能就足够了。如果每次拍卖都需要单独的配置,您最终也可以使用AUCTION表:

产品表

PRODUCT
 PRODUCT_ID    -- primary key
 ....

竞价表

AUCTION
 AUCTION_ID    -- PK
 PRODUCT_ID    -- foreign key to PRODUCT
 START_TIME
 END_TIME
 MODE          -- e.g. dutch, english...
 ...

出价表

BID
 BID_ID        -- PK
 AUCTION_ID    -- foreign key to AUCTION
 AMOUNT
 TIME
 ...

通常,您应该避免关系数据库模型中的多值列。你应该瞄准normalization。如果稍后进行查询优化,则可能需要引入更多索引,视图和/或过程。

答案 1 :(得分:0)

在我看来,最好的解决方案是让表格bids包含列中的所有必要信息,例如:bid_idproduct_idbid_amountbid_time等等。

答案 2 :(得分:0)

这只是meta-sql,你知道。

用户:id,... 出价:id,auction_id,user_id,金额, 拍卖:id,object,... end-date,...

出价索引:auction_id,金额desc (其中包括id,名字......)