Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 数据库设计:表中的两行或更多行如何将它们连接在一起?_Sql_Sql Server_Database Design - Fatal编程技术网

Sql 数据库设计:表中的两行或更多行如何将它们连接在一起?

Sql 数据库设计:表中的两行或更多行如何将它们连接在一起?,sql,sql-server,database-design,Sql,Sql Server,Database Design,我正在制作一个银行系统。当您从一个帐户向另一个帐户进行交易时,我将对我的交易表中的行/记录进行交易。但我需要将它们连接在一起,这样当我查看交易时,我可以看到双方。我的问题是,我应该制作另一个表来记录这一点,还是应该添加一个包含某种TransactionHeadID的列?或者还有第三个更好的选择吗?您可以创建一个表,其中包含交易详细信息、senderId和receiverId。 senderId和ReceiverID将是用户表的外键。一个想法是将字段“from”和“to”添加到事务表中。然后,例如

我正在制作一个银行系统。当您从一个帐户向另一个帐户进行交易时,我将对我的交易表中的行/记录进行交易。但我需要将它们连接在一起,这样当我查看交易时,我可以看到双方。我的问题是,我应该制作另一个表来记录这一点,还是应该添加一个包含某种TransactionHeadID的列?或者还有第三个更好的选择吗?

您可以创建一个表,其中包含交易详细信息、senderId和receiverId。
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行存款。我认为一笔交易是一个独特的整体操作。