просто интересно, правильна ли следующая вещь.
У меня есть таблица User
, в которой пользователь может быть покупателем или продавцом.У меня есть таблица Sale
для записи товара, проданного / приобретенного пользователем.
В настоящее время я планирую предоставить User
исходную схему, которая выглядит следующим образом:
id
user_name
display_name
... (other attrs)
ASale
будет иметь начальную схему, подобную этой:
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
.Но какой подход вы бы порекомендовали?И почему?