database - 单属性主键和第二范式(2NF)
问题描述
我不确定这句话是对还是错:“具有单个属性主键的表至少自动处于第二范式 (2NF)。”
我认为这是真的,但我无法证明为什么。
解决方案
表格要符合第一范式,表格的一个属性不能有多个值
例如 ,
id mobile_number age
------------------------------
1 9xxx5xxxxx 25
9xxx6xxxxx
2 8xxxx5xxxx 26
7xxxx5xxxx
这可以归一化为 1NF,如下所示,
id mobile_number age
------------------------------------
1 9xxx5xxxxx 25
1 9xxx6xxxxx 25
2 8xxxx5xxxx 26
2 7xxxx5xxxx 26
如果表处于第一范式并且没有非主属性依赖于任何候选键的适当子集,则称该表处于第二范式
这里候选键是 {id,mobile_number}
非主要属性是年龄
该表不在 2NF 中,因为非主要属性(年龄)仅取决于候选键(id)的适当子集。
为了将其标准化为 2NF,我们将表格拆分如下
id mobile_number
------------------------------
1 9xxx5xxxxx
1 9xxx6xxxxx
2 8xxxx5xxxx
2 7xxxx5xxxx
id age
------
1 25
2 26
推荐阅读
- python - DeprecationWarning:移动应用程序时的功能(删除标题栏)-PySide6
- gitlab-ci - jfrog 命令 GitLabCi 中忽略的镜像存储库
- java - 错误:javax.mail.MessagingException: 530 5.7.0 必须先发出 STARTTLS 命令。l11sm980012ejd.103 - gsmtp
- python - 在使用 `socks5h` 作为代理 url 方案时请求`ConnectionError`
- python - OSError:[Errno 99] 无法分配请求的地址:flask、python 和 docker
- visual-c++ - MSVC VS 2019,如何将动态链接改为静态链接
- java - 我如何在 Anylogic 中释放等待块
- google-colaboratory - Google Colab 没有保存今天早上完成的任何工作
- python - model.fit() 上的列表索引超出范围(Kaggle)
- delphi - 在delphi IdHTTPServer中捕获post json body