只是想知道下面的事情是否合适。
我有一个 User
表,其中用户可以是买方或卖方。我有一个 Sale
用于记录用户销售/购买的项目的表。
我现在正打算 User
如下所示的起始架构:
id
user_name
display_name
... (other attrs)
一 Sale
会有这样一个起始模式:
id
product_id
price
... (other relevant attrs)
我想问的是联想。在我看来有两种方法。我们可以分别为买方和卖方建立2个多对多规则,或者 sale
属于 User
买方和卖方各一次。最终状态是一样的,但我不确定哪种方式更好/推荐,为什么。
选项1(使用sequelize.js格式):
User.belongsToMany(User, {
through: Sale,
as: 'buyer',
foreignKey: 'buyer_id',
}
User.belongsToMany(User, {
through: Sale,
as: 'seller',
foreignKey: 'seller_id',
}
方案2:
Sale.belongsTo(User, {
foreignKey: 'seller_id',
}
Sale.belongsTo(User, {
foreignKey: 'buyer_id',
}
最后,这两个选项都会生成外键列 buyer_id
以及 seller_id
添加到 Sale
模型。但是你会推荐哪种方法呢?为什么?
1条答案
按热度按时间p4tfgftt1#
Sale
是实现买卖双方之间多对多关系的关联表。请注意
Sale
表通常用于olap,因此它稍微被反规范化了。在oltp中,通常有文档或事件表,其中在头中包含卖方和买方id。即