我开始学习数据库和规范化。我目前正在解决的这个练习有一个非标准化的表格,我必须概述从非标准化到1FN,2FN,3FN的步骤。
这是我到目前为止所做的:
1FN(根据定义1FN应该消除重复组 - 所以我添加了行以消除一个字段内的多个值)
StudentAssoc(StudentID(PK),LastName,FirstName,DOB,Assoc-Name(PK),MaxMem,DateJoined)
2FN(根据定义2FN应该消除部分依赖 - 所以我创建了两个单独的表 - 一个用于Student实体,一个用于Association实体)
学生(StudentID-PK,姓氏,名字,DOB,副名称-FK)
关联(Assoc-Name-PK,MaxMem,DateJoined,StudentID-FK)
我怀疑的是,如果我在两个实体中都有FK,我是否消除了部分依赖关系?
你有一个选择:
1:使用称为功能依赖性分析的复杂“方法”(FDA)
2:使用对象角色建模方法将表转换为一组正式的事实类型(+任何约束)。 (ORM)
例如:
学生(.id)有LastName()
学生(.id)有FirstName()
学生(.id)出生于日期()
等等....
对象角色模型是一种形式模型,因此您可以使用数学变换从模型中“自动”生成完全规范化的模式。
有些人似乎认为FDA是“做”正常化的唯一方法。他们错了!
参考文献:信息建模和关系数据库,第二版,Halpin&Morgan 2008。 Dr Terry Halpin's website。