Dha*_*ana 4 sql-server normalization
规范化表应该具有较少数量的列,并且可以尽可能具有引用字段.这是正确的方法吗?列数和良好的规范化过程之间是否存在任何关系?
Rus*_*Cam 11
列数和良好的规范化过程之间是否存在任何关系?
简而言之,没有.如果需要,3NF规范化表将具有所需的列数
表中的数据取决于密钥,整个密钥,只有密钥(所以请帮助我Codd).
在某些情况下,(某些)非规范化可能实际上可以提高性能,并且应该在何时进行测试的唯一真正的衡量标准.
如果您觉得表的字段太多,可以使用以下方法。例子:-
CREATE TABLE Person
Person_ID int not null primary key,
Forename nvarchar(50) not null,
Surname nvarchar(50) not null,
Username varchar(20) null,
PasswordHash varchar(50) null
Run Code Online (Sandbox Code Playgroud)
该表代表人,但显然并非所有人都需要成为用户,因此 Username 和 PasswordHash 字段可以为空。然而,人数可能比用户多 1 或 2 个数量级。
在这种情况下,我们可以创建一个 User 表来保存 Username 和 PasswordHash 字段,并与 Person 表建立一对一的关系。
您可以通过查找可空字段集来概括此方法,这些字段要么一起为空,要么一起具有值并且很可能为空。这表明您还可以提取另一个表。
编辑
感谢斯蒂芬妮(见评论),这种技术显然被称为“垂直分区”
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |