gpt4 book ai didi

SQL 数据库关系 : correct implementation of Junction Model in manyToMany relationship?

转载 作者:行者123 更新时间:2023-12-03 22:43:54 26 4
gpt4 key购买 nike

我有两个数据库表“用户”和“交易”,它们之间存在多对多关系。我创建了一个 Junction 模型,它将有两个外键列(UserId、TransactionId)并将跟踪关联。 Transaction 表有两列,我在其中跟踪发件人和收件人是谁(senderAccount、recipientAccount)。
问题 1:由于每个交易属于两个用户,即发送方和接收方,我是否还需要在联结模型中同时指定 senderId 和 receiverId 而不仅仅是 userId?
注意:我的困惑来自联结模型中的两个外键列(UserId 和 TransactionId)。我知道只有一个事务,您可以在联结模型中通过其 id 引用该事务,但是每个事务也由两个用户(发送者和接收者)拥有,我们不应该引用联结模型中的两个用户吗?
问题 2:如果我在这里的类比是正确的,您将如何在联结模型中同时引用 senderId 和 receiverId?
问题 3:如果我在这里的类比不正确,请帮助我理解您将如何在连接模型中引用两个用户。
用户表

id | username | 
—--+----------+
1 | ijiej33 |
交易表
id | transactionId | senderAccount | recipientAccount | Amount |
—--+---------------+---------------+------------------+--------+
1 | ijiej33 | A | B | 100 |
userTransaction 表(连接模型)
userId | TransactionId |
-------+---------------+
| |

最佳答案

正如我在 your question from yesterday 中作为评论所解释的那样,事务和用户之间没有多对多关系。从交易到用户,您有两种多对一的关系。因此,您不需要连接表。
这样建模:

create table users (
user_id serial primary key,
user_name text not null unique
);

create table transaction (
transaction_id serial primary key,
sender_account int not null references users(user_id),
recipient_account int not null references users(user_id),
amount numeric
);

关于SQL 数据库关系 : correct implementation of Junction Model in manyToMany relationship?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65883976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com