第二范式 (2NF)
dbmsdatabasemysql
什么是 2NF?
规范化的第二步是 2NF。
只有当关系符合 1NF 并满足所有规则,并且每个非键属性都完全依赖于主键时,表才符合 2NF。
第二范式消除了对主键的部分依赖。
让我们看一个例子 −
示例(表违反 2NF)
<StudentProject>
StudentID | ProjectID | StudentName | ProjectName |
S89 | P09 | Olivia | Geo Location |
S76 | P07 | Jacob | Cluster Exploration |
S56 | P03 | Ava | IoT Devices |
S92 | P05 | Alexandra | Cloud Deployment |
在上表中,我们有部分依赖关系;让我们看看如何 -
主要关键属性是StudentID和ProjectID。
如上所述,非主要属性,即StudentName和ProjectName应该在功能上依赖于候选键的一部分,即部分依赖。
StudentName可以通过StudentID确定,这使得关系部分依赖。
ProjectName可以通过ProjectID确定,这使得关系部分依赖。
因此,<StudentProject>关系违反了规范化中的 2NF,被认为是糟糕的数据库设计。
示例(转换为 2NF 的表)
要删除部分依赖和对 2NF 的违反,请分解上述表格−
<StudentInfo>
StudentID | ProjectID | StudentName |
S89 | P09 | Olivia |
S76 | P07 | Jacob |
S56 | P03 | Ava |
S92 | P05 | Alexandra |
<ProjectInfo>
ProjectID | ProjectName |
P09 | Geo Location |
P07 | Cluster Exploration |
P03 | IoT Devices |
P05 | Cloud Deployment |
现在关系处于数据库规范化的第二范式