了解3NF

Tho*_*mas 1 database analysis system normalization 3nf

我目前在系统分析课程中,我想更好地理解规范化的使用.对于3NF,如果我正在处理包含学生ID,姓名,电话号码和专业的表格.我必须只使用学生证和学生证,因为学生姓名和电话号码都可以通过身份证找到.我明白了吗?

Mik*_*ll' 7

让我们从这开始吧...

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
Run Code Online (Sandbox Code Playgroud)

唯一的候选键是student_id.这意味着名称不是唯一的,手机不是唯一的,而且专业不是唯一的.

为了使表格在3NF,它必须满足这些要求.

  • 它在2NF.
  • 每个非素数属性都直接依赖于每个候选键.(没有传递依赖.)

此表格为2NF.(证明留给读者.)有三个非素数属性; 所有都直接依赖于唯一的候选键.这意味着

  • 名字不确定手机,
  • 名称不确定主要,
  • 手机不确定专业,
  • 手机没有确定姓名,
  • 主要不确定名称,和
  • 主要不确定电话.

所以它在3NF.

在识别两列之间的依赖关系时,您试图回答这个问题:"给定第一列的一个值,我是否总能找到第二列中的一个且只有一个值?"

例如,要确定"name"和"major"之间是否存在依赖关系,您会问,"给'name'一个值,我是否总能找到'major'的唯一值?" 答案是"不".鉴于"Lonnie Seman"的名字,你会发现两个专业 - 美术和化学.

无论如何,在现实世界中,一个人可以拥有多个电话号码和一个以上的专业.选择是每人只记录一个电话号码还是每人只记录一个主要电话号码是数据库设计的一个重要部分,但它与规范化无关.

无论如何,在现实世界中,您很少从代表性样本数据开始.数据库设计者应该知道类似的东西

  • 两个人可以有相同的名字.
  • 两个人可以拥有相同的电话号码.
  • 两个人可以拥有相同的专业.
  • 一个人可以拥有两个或更多电话号码.
  • 一个人可以有两个专业.