我目前在系统分析课程中,我想更好地理解规范化的使用。对于3NF,如果我正在处理包含学生ID,姓名,电话号码和专业的表格。我必须只使用学生证和学生证,因为学生姓名和电话号码都可以通过身份证找到。我明白了吗?
答案 0 :(得分:6)
让我们从这开始吧。 。
student_id name phone major
--
1 Darcy Sailer 000-111-2345 Mathematics
2 Lonnie Seman 000-111-3456 Fine Art
3 Mathew Bradburn 000-112-9086 Education
4 Edwina Loflin 000-111-2345 Psychology
5 Clinton Rosebrook 000-111-1000 Chemistry
6 Lonnie Seman 000-113-2975 Chemistry
唯一的候选键是student_id。这意味着名称不是唯一的,手机不是唯一的,而且专业并不是唯一的。
为了使表格在3NF,它必须满足这些要求。
此表格为2NF。 (证明留给读者。)有三个非素数属性;所有都直接依赖于唯一的候选键。这意味着
所以它在3NF。
在识别两列之间的依赖关系时,您试图回答这个问题:“给定第一列的一个值,我是否始终为第二列找到一个且只有一个值?”
例如,要确定“name”和“major”之间是否存在依赖关系,您会问,“给'name'一个值,我是否总能找到'major'的唯一值?”答案是“不”。鉴于“Lonnie Seman”的名字,你会发现两个专业 - 美术和化学。
在现实世界中,一个人可以拥有多个电话号码和一个以上的专业并不重要。选择是每人只记录一个电话号码还是每人只记录一个主要电话号码是数据库设计的一个重要部分,但它与规范化无关。
在现实世界中,您很少从代表性样本数据开始。期望数据库设计者知道诸如
之类的东西