首页 > 解决方案 > 数据库规范化步骤

问题描述

我开始学习数据库和规范化。我目前正在处理的练习有一个未标准化的表格,我必须概述从未标准化到 1FN、2FN、3FN 的步骤。 桌子

这是我到目前为止所做的:

1FN(根据定义 1FN 应该消除重复组 - 所以我添加了行以消除一个字段中的多个值)

StudentAssoc (StudentID(PK), LastName, FirstName, DOB, Assoc-Name(PK), MaxMem, DateJoined)

2FN(根据定义,2FN 应该消除部分依赖关系——所以我创建了两个单独的表——一个用于学生实体,一个用于关联实体)

学生(StudentID-PK、LastName、FirstName、DOB、Assoc-Name-FK)

关联(Assoc-Name-PK、MaxMem、DateJoined、StudentID-FK)

我的疑问是,如果我在两个实体中都有 FK,我是否消除了部分依赖关系?

标签: databasedatabase-normalization

解决方案


你有一个选择:

1:使用称为“功能依赖分析”(FDA)的复杂“方法”

2:使用对象角色建模方法将您的表转换为一组正式的事实类型(+任何约束)。(ORM)

例如:

学生(.id)有姓()

Student(.id) 有 FirstName()

Student(.id) 出生于 Date()

等等....

对象角色模型是一个正式模型,因此您可以使用数学变换“自动”从您的模型生成完全规范化的模式。

有些人似乎认为 FDA 是“做”正常化的唯一途径。他们错了!

参考文献:信息建模和关系数据库,第二版,Halpin & Morgan
2008。Terry Halpin 博士的网站


推荐阅读