0

简单的问题-以下是保存以下记录的数据库设计

account     TransactionType     TransactionName                 Amount      FeeTransactionId    TransactionId   RefTransactionId

Alex        [Deposit from]      [Credit Card x-1234]            [-100.00]               b           a   
Alex        [Deposit from]      [Credit Card Fee]               [-3.00]                             b           a
Alex        [Added funds from]  [Credit Card x-1234]            [100.00]                            c           a
Sys_        [Revenue from]      [Credit Card Deposit]           [3.00]                              d           a

该设计

[Transaction]
Id
AccountId 
TransactionTypeId
TransactionName
Amount
FeeTransactionId
RefTransactionId

[Account]
Id
Name

[TransactionType]
Id
Name

有没有办法改进这个设计?

注意:缺少货币和日期。:)

4

2 回答 2

4

乍一看,它看起来不错。

交易模型_02

经过一番考虑,似乎每个交易都链接到一个(并且只有一个)其他交易,并且该链接的含义取决于交易类型。因此,两个自引用外键FeeTransactionIdRefTransactionID. 根据事务的类型,这些键之一始终为 NULL。

尽管在技术上可以在外键列中包含 NULL,但它可能不是首选的做法。你可以只有一个自引用外键,它不会有 NULL,就像在这个模型中一样。

交易模型_03

于 2010-07-03T17:09:16.827 回答
0

设计很好。尼斯和规范化。不过,去规范化可能有充分的理由。通常这些涉及某种报告便利或优化。如果没有有关该项目的更多详细信息,我真的无法对更改提出任何建议。

于 2010-07-03T05:01:38.703 回答