【发布时间】:2010-03-04 01:39:50
【问题描述】:
我有一个看起来像这样的模型:
一个账户有多个分行,每个报表都是为一个账户生成的。该模型是多余的,因为可以从事务上的 BranchID 推断出 Account(标题上的 AccountID)(语句将始终具有一个或多个事务)。
是否应该从 StatementHeader 中删除 AccountID,或者这种冗余级别可以吗?还是有更好的解决方案?
【问题讨论】:
-
我会避免在每个表中使用“ID”作为主键的名称;您最终会在模型中加载大量它们,并且永远无法确定您指的是哪个。如果您使用代理键,那么我建议您在整个模型中使用相同的名称。您已经将 AccountID 作为外键,因此请使用相同的名称作为主键。
-
不幸的是,命名约定是由其他人设置的,所以我无法真正更改它。我很欣赏你的理由,因为我有同样的担忧。
-
StatementHeader的实体是什么?具有相同 StatementHeaderID 的语句在现实世界中是否相互连接,或者它们共享的只是 AccountID 和 StatementDate?后者会使 StatementHeader 类似于日历,将 SatementHeaderID 伪装成日期......
-
Account和Branch是什么关系? Branch 是否应该有一个外键 AccountID,如图所示?
-
“声明”用词不当。它应该被称为“StatementDetail”,但我不负责实体的命名。帐户就像客户。一个客户有多个支行。这些分支出现在报表详细信息行上。
标签: data-modeling