数据库设计:有没有办法改进这种设计?

时间:2010-07-03 04:01:37

标签: database database-design relational-database database-schema

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

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

有没有办法改进此设计?

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

2 个答案:

答案 0 :(得分:4)

乍一看它看起来还不错。

transaction_model_02

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

尽管技术上可以在外键列中使用NULL,但它可能不是优先实践。你可以只有一个自引用外键,它不会有NULL,就像在这个模型中一样。

transaction_model_03

答案 1 :(得分:0)

设计很好。很好,规范化。但是,可以有充分的理由去标准化。通常这些涉及某种报告方便或优化。如果没有关于该项目的更多细节,我实际上无法提出任何改变建议。