我有4张桌子。它们具有以下属性:不同表格中的冗余数据是否违反3NF标准化?
- 人(ID(主键),姓名,职业,工作地点,SecondJob,PerHour,HoursWorked,电话,办公电话)
- 工作(ID(外键是指人) ,标题,名称,位置,工资)
- SecondJob(也指人的ID(外键),标题名称)
- ******中国(也指人的ID(外键),姓名,电话,办公电话)
我得到每个attri的值弼像姓名,职务,从下面的伪书面方式Person表电话和办公电话:
选择(属性名称)从一个人其中id IN(人ID)
的,这对信息在不同的表(数据冗余)中重复,打破3NF标准化?
或者我应该把这些值分别放入其他表中,并分别说明哪些属性与表的主键相关联?
我通过从Person获得PerHour和HoursWorked来计算工作中的薪水,然后将它们相乘。我听说这也是多余的数据,因为它可以从表中现有的数据中推导出来。
但它是否打破3NF标准化?
这在正常化方面是如此破碎。为什么“名称”到处出现?为什么没有将这些信息合并到人员记录中?如果出于性能方面的考虑而故意去规范化,您是否有方法来保持这些数据同步并理解每个领域的规范来源?为什么PhoneNumber包含*两个*号码?你在这里有很多工作来解决细节问题。 – tadman
记住在正确的数据库设计中,你只有[Zero,One或Infinity](http://en.wikipedia.org/wiki/Zero_one_infinity_rule),没有两个。这就是为什么'SecondJob'作为一张表非常关注的原因。如果他们有第三份工作呢?第四?第十九?人们改变职业,升迁,转移,预计人们会换N次。同样,工资信息应该与工作相关联,而不是与个人相关联。 – tadman
对你的回应的反馈: 1.虽然你的第二篇文章实际上有一些有效的观点 - 指出诸如“因规范化而破碎”之类的内容,但没有明确的原因,基本上没有用的反馈。 2. Secondjob只是一个名称。它是如何形成的,仍然允许几个不同的工作来填充它 - 用ID作外键。 3.规范化仍然依赖于主键和全部识别所述键。有重复的数据。不过,电话部分需要修改。 –