正在制作一个拍卖网站,我的问题是如何设计正确的出价方式?例如: 项目表:
-id
-user_id(fk user)
-title
出价表:
-id
-item_id(fk Items)
-user_id(fk user)
-price
如果要进行中标,则应winner_bid_id在Items表格中添加列,并在出价参考表中添加列。像这样:
项目表:
-id
-user_id(fk user)
-title
-winner_bid_id(fk Bids)
还是应is_winner在出价表中添加一列,如下所示: 出价表:
-id
-item_id(fk Items)
-user_id(fk user)
-price
-is_winner
哪一个更好?我已经引用了这一点:投标网站的数据库结构。但是,如果使用选项1(添加winner_bid_id到Items表和引用Bids表中),我将有两个表互相引用,并且当我要在Items表中删除一行时,我遇到了外键错误,该怎么办?
只能有一个中标-大概是。
items假设每个“项目”确实是一个单独的拍卖,添加这种关系的更好方法是在表格中使用单个列。
但是,您需要确保出价是针对商品的。因此,在其上引入一个(冗余的)索引bids(item_id, user_id)并具有外键关系。这将确保中标是针对正确的项目。
如果您is_winner在bids表格中添加一列,则需要使用触发器来确保最多有一个中标。一些数据库允许过滤的唯一索引可以解决此问题。据我所知,MySQL没有。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。