【发布时间】:2009-09-11 20:20:54
【问题描述】:
我有 3 个不同的事务表,它们看起来非常相似,但略有不同。这是因为有 3 种不同的交易类型;根据事务类型,列会发生变化,因此要将它们放入 3NF 我需要将它们放在单独的表中(对吗?)。
举个例子:
t1:
日期、用户、金额
t2: 日期,用户,谁,金额
t3: 日期、用户、内容、金额
现在我需要一个查询,该查询将为同一用户获取每个表中的所有事务,例如
select * from t1,t2,t3 where user='me';
(这当然行不通)。
我正在研究 JOIN 语句,但还没有找到正确的方法来做到这一点。谢谢。
编辑:实际上我需要每个表中的所有列,而不仅仅是相同的列。
编辑#2:是的,当然,拥有 transaction_type 并不会破坏 3NF - 所以也许我的设计完全错误。这是真正发生的事情(这是一种替代货币系统):
- 交易是在用户之间进行的,就像相互信用一样。所以单位在用户之间交换。
- 清单是带入系统的实物;用户为此获得单位。
- 消耗品是消耗的物质;用户必须为此付费。
(请注意,“金额”的单位不同;这些是对这些金额进行的输入和计算。超出了解释原因的范围,但这些是字段)。
因此问题变为“可以/这应该在一张桌子上还是多张桌子上(就像我现在拥有的那样)?”
我需要前面描述的 SQL 语句来显示运行余额。
(现在应该完全成为一个新问题还是可以编辑?)。
编辑#3:由于编辑#2 实际上将其转换为一个新问题,因此我还决定发布a new question。 (我希望这没问题?)。
【问题讨论】: