Sql 数据库设计:表中的两行或更多行如何将它们连接在一起?
我正在制作一个银行系统。当您从一个帐户向另一个帐户进行交易时,我将对我的交易表中的行/记录进行交易。但我需要将它们连接在一起,这样当我查看交易时,我可以看到双方。我的问题是,我应该制作另一个表来记录这一点,还是应该添加一个包含某种TransactionHeadID的列?或者还有第三个更好的选择吗?您可以创建一个表,其中包含交易详细信息、senderId和receiverId。Sql 数据库设计:表中的两行或更多行如何将它们连接在一起?,sql,sql-server,database-design,Sql,Sql Server,Database Design,我正在制作一个银行系统。当您从一个帐户向另一个帐户进行交易时,我将对我的交易表中的行/记录进行交易。但我需要将它们连接在一起,这样当我查看交易时,我可以看到双方。我的问题是,我应该制作另一个表来记录这一点,还是应该添加一个包含某种TransactionHeadID的列?或者还有第三个更好的选择吗?您可以创建一个表,其中包含交易详细信息、senderId和receiverId。 senderId和ReceiverID将是用户表的外键。一个想法是将字段“from”和“to”添加到事务表中。然后,例如
senderId和ReceiverID将是用户表的外键。一个想法是将字段“from”和“to”添加到事务表中。然后,例如,如果您将100美元从A移动到B中的40美元和C中的60美元,您的表将如下所示:
Account | Value | From | To
---------+-------+------+------
A | -40 | NULL | B
A | -60 | NULL | C
B | 40 | A | NULL
C | 60 | A | NULL
但是,我认为最好使用两个表:一个包含真正独立于往来账户的交易信息的交易表,如store、date等和一些TransactionID,另一个名为TransactionBalanceEvent的表,其中包含TransactionID外键、账号和余额。那么你会:
事务表
TranID | Date
-------+----------
1 | some_date
TransactionBalanceEvent表
TranID|Account|Balance
------+-------+-------
1 | A| -100
1 | B| 40
1 | C| 60
现在还可以。但我计划让它有可能提取100美元,然后插入5个帐户,每个帐户20美元。那么这就不行了。那么你就有一行取款,5行存款。我认为一笔交易是一个独特的整体操作。