技术文章和资源

技术文章(时间排序)

热门类别

Python PHP MySQL JDBC Linux

第二范式 (2NF)

dbmsdatabasemysql

什么是 2NF?

规范化的第二步是 2NF。

只有当关系符合 1NF 并满足所有规则,并且每个非键属性都完全依赖于主键时,表才符合 2NF。

第二范式消除了对主键的部分依赖。

让我们看一个例子 −

示例(表违反 2NF)

<StudentProject>

StudentIDProjectIDStudentNameProjectName
S89P09OliviaGeo Location
S76P07JacobCluster Exploration
S56P03AvaIoT Devices
S92P05AlexandraCloud Deployment

在上表中,我们有部分依赖关系;让我们看看如何 -

主要关键属性是StudentIDProjectID

如上所述,非主要属性,即StudentNameProjectName应该在功能上依赖于候选键的一部分,即部分依赖。

StudentName可以通过StudentID确定,这使得关系部分依赖。

ProjectName可以通过ProjectID确定,这使得关系部分依赖。

因此,<StudentProject>关系违反了规范化中的 2NF,被认为是糟糕的数据库设计。

示例(转换为 2NF 的表)

要删除部分依赖和对 2NF 的违反,请分解上述表格−

<StudentInfo>

StudentIDProjectIDStudentName
S89P09Olivia
S76P07Jacob
S56P03Ava
S92P05Alexandra

<ProjectInfo>

ProjectIDProjectName
P09Geo Location
P07Cluster Exploration
P03IoT Devices
P05Cloud Deployment

现在关系处于数据库规范化的第二范式


相关文章