开发者社区> 问答> 正文

如何在拍卖网站中正确设计带有Bisd表的ItemsTable

正在制作一个拍卖网站,我的问题是如何设计正确的出价方式?例如: 项目表:

-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表中删除一行时,我遇到了外键错误,该怎么办?

展开
收起
几许相思几点泪 2019-12-29 20:26:53 924 0
1 条回答
写回答
取消 提交回答
  • 只能有一个中标-大概是。

    items假设每个“项目”确实是一个单独的拍卖,添加这种关系的更好方法是在表格中使用单个列。

    但是,您需要确保出价是针对商品的。因此,在其上引入一个(冗余的)索引bids(item_id, user_id)并具有外键关系。这将确保中标是针对正确的项目。

    如果您is_winner在bids表格中添加一列,则需要使用触发器来确保最多有一个中标。一些数据库允许过滤的唯一索引可以解决此问题。据我所知,MySQL没有。

    2019-12-29 20:27:02
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
QQ 空间百亿级流量的社交广告系统海量实践 立即下载
电商平台优化纪实 立即下载
从云上开发角度思考个人信息保护 立即下载