Wol*_*'08 6 erd database-design
我一直试图弄清楚这一点。例如,假设您有一个人。一个人的一个属性就是他或她的社会安全号码,对吗?但一个人还有has
一个社会安全号码。因此,在 ER 图中,您可以为person
和绘制一个方框ssid
,并且可以用菱形将它们连接起来,has
。或者,您可以画一个圆,ssid
,然后将其连接到一个方形person
框。
然而,这不仅仅适用于ssid
。可以用具体的东西(例如汽车、宠物或电话号码)或概念性的东西(例如电话号码、友谊或心情)来画或画。那么,我在哪里画线?设计的目的只是为了将所有东西都写在纸上并看起来不错,还是我应该使用指南?
有两种方法可以看待这个问题:非正式的方法和正式的理论方法。
非正式的方式:
如果您的系统对某些东西非常感兴趣,以至于您想要记录它的属性,那么它可能属于自己的表中。
如果您唯一关心的社会安全号码是它包含哪些数字(即号码是什么),那么最好将该号码建模为其他事物(例如人)的属性。
另一方面,如果您的系统关心与 SSID 相关的其他事实,例如它的发布时间、哪个办公室发布了它以及您可能知道并关心 SSID 的其他任何信息,那么您可能想要拆分您所知道的所有内容将 SSID 放入其自己的表中,然后将该表与 PERSON 相关联。
正式方式:
如果规范化规则要求您将有关 SSID 的多个事实(属性)拆分为一个单独的关系(表),其中社会安全号码是主键,那么 SSID 是一个方框而不是一个圆圈。
具体来说,如果您有仅依赖于 SSID 的属性,那么您可能希望从 PERSON 表中删除这些属性,因为它们仅对PERSON ID具有传递依赖性,因此 3NF 要求将这些属性删除到单独的表中。
归档时间: |
|
查看次数: |
838 次 |
最近记录: |