数据库模式规范化

时间:2015-12-02 10:36:18

标签: database database-design schema database-schema

我试图建模数据库以保存(主要是)英国人口普查记录信息。那些比我更了解的人会快速查看下面的数据库模式草案,并告诉我是否我的标准化正确或者我是否有任何明显的错误?

Census Draft Database Schema

我认为它相对自我解释,但由于我多年没有接近数据库设计,忽略了tbPerson& amp; tbLocation,我认为我需要两个链接表,因为首先一个人可以出现在许多人口普查中......其次是一次人口普查,可以有很多地址。这个草案设计有效吗?这些天链接表仍然是最好的做事方式吗?

1 个答案:

答案 0 :(得分:0)

一般评论:

  • 多重关系是错误的:大多数1:1都是1:n; 1:n那些你看起来错误的方式 - 肯定是1个人 有n个PersonCensus,你有1个PersonCensus到n个人。
  • 地址和位置对我来说非常混乱。您无法按照您拥有的方式将人员链接到地址。
  • 在PersonCensus中你有一个关系,大概是另一个人。无法将PersonCensus或其所拥有的人员链接到另一个PersonCensus或Person。

那就是说,Link Tables仍然是做n:n关系的正确方法,而PersonCensus是完全合理的。

编辑 - 添加位置内容。

位置问题是PersonCensus链接到一个位置(可能有许多PersonCensus链接到它)。此外,地址链接到一个位置(可以有许多地址链接到它)。所以你可以从PersonCensus到他们的位置,但是你有很多地址链接到位置。哪一个是PersonCensus的地址?没有办法说出来。

如果地址是出于某种其他原因而不是显示人口普查的生活/工作地点/人口普查时的其他原因,那么我不知道该目的是什么,因此无法做出任何理由。进一步评论。

但是,如果地址应该与PersonCensus链接,那么按照设计,它是无用的。要将PersonCensus链接到地址,请从PersonCensus中删除LocationId并替换为AddressId。现在,PersonCensus首先链接到Address,然后链接到Location。

现在我要停止更新此内容,因为如果您有更多问题,我真的需要打开另一个问题,更好地描述您正在做的事情。干杯 -