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

时间:2018-05-18 09:46:46

标签: sql sql-server database-design

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

2 个答案:

答案 0 :(得分:0)

您可以创建一个包含交易详细信息的表,senderId和receiverId。 senderId和receieverId将是User表的外键。

答案 1 :(得分:0)

一个想法是添加字段"来自"和"到"到你的交易表。然后,例如,如果您将A中的100 $移至B中的40 $和C中的60 $,则表格将如下所示:

 Account | Value | From | To
---------+-------+------+------
 A       | -40   | NULL | B
 A       | -60   | NULL | C
 B       |  40   | A    | NULL
 C       |  60   | A    | NULL

但是,我认为如果你使用两个表会更好:一个事务表包含真正的来自和来自帐户的交易信息,如商店,日期等和一些TransactionID,另一个表调用例如TransactionBalanceEvent有一个TransactionID外键,账号,余额。然后你会:

交易表

TranID | Date
-------+----------
1      | some_date

TransactionBalanceEvent表

TranID|Account|Balance
------+-------+-------
1     |      A|   -100
1     |      B|     40
1     |      C|     60