我正在创建一个拍卖风格的网站,用户可以在其中竞标商品。关于项目和投标功能,我对数据库设计有点困惑。最初我认为一个名为“项目”的表格可能包含一个名为“出价”的多值列,其中包含bid_id ..但是经过一些研究后看来这种方法是禁止的......但我相信我能记住一个大学讲授或者两次提到数据库设计中的多值列。这个问题的最佳方法是什么?
由于
丹
答案 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_id
,product_id
,bid_amount
, bid_time
等等。
答案 2 :(得分:0)
这只是meta-sql,你知道。
用户:id,... 出价:id,auction_id,user_id,金额, 拍卖:id,object,... end-date,...
出价索引:auction_id,金额desc (其中包括id,名字......)