Rah*_*sia 4 normalization relational-theory eav
我们以前的 DBA 受够了开发团队频繁请求更改数据库架构以添加和删除列的请求。然后他建议开发人员他将创建具有以下定义的简单表。
+---------------+---------+
| Record Number | VarChar |
+---------------+---------+
| Column Name | VarChar |
+---------------+---------+
| Column Value | VarChar |
+---------------+---------+
Run Code Online (Sandbox Code Playgroud)
因此,如果开发人员想要一个通常如下所示的表格
+-------------+---------------+-----------------+
| Employee ID | Employee Name | Employee Salary |
+-------------+---------------+-----------------+
| 0001 | John Doe | 100000.00 |
+-------------+---------------+-----------------+
| 0002 | Jane Doe | 110000.00 |
+-------------+---------------+-----------------+
| 0003 | Jack Doe | 120000.00 |
+-------------+---------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
他们可以按以下方式添加行
+---------------+-----------------+--------------+
| Record Number | Column Name | Column Value |
+---------------+-----------------+--------------+
| 1 | Employee ID | 0001 |
+---------------+-----------------+--------------+
| 1 | Employee Name | John Doe |
+---------------+-----------------+--------------+
| 1 | Employee Salary | 100000.00 |
+---------------+-----------------+--------------+
| 2 | Employee ID | 0002 |
+---------------+-----------------+--------------+
| 2 | Employee Name | Jane Doe |
+---------------+-----------------+--------------+
| 2 | Employee Salary | 110000.00 |
+---------------+-----------------+--------------+
| 3 | Employee ID | 0003 |
+---------------+-----------------+--------------+
| 3 | Employee Name | Jack Doe |
+---------------+-----------------+--------------+
| 3 | Employee Salary | 120000.00 |
+---------------+-----------------+--------------+
Run Code Online (Sandbox Code Playgroud)
这显然不符合气味测试,并且让我想分析这种设置会破坏什么数据库规范化。
这是一个可怕的模式,但它实际上并没有违反任何规范化规则。原因是它实际上是您正在建模的内容的更改。它不是您的数据库建模,例如员工,而是实体、属性和值建模。