我有点困惑的某一条数据库规范化的,我想我会问StackOverflow的:
想象一下,你有相关的产品颜色如下关系。 注意,产品1和产品2都使用相同的一组颜色(蓝色和绿色)。
Product_Color Color
+-------------+-------------+ +-------------+-------------+
| Product* | Color* | | ColorId* | Name |
+-------------+-------------+ +-------------+-------------+
| 1 | 1 | | 1 | Blue |
| 1 | 2 | | 2 | Green |
| 2 | 1 | +-------------+-------------+
| 2 | 2 |
+-------------+-------------+
如果我创建了两个新的关系,ColorSet和ColorSet_Color,我可以通过加入4个一起关系显示相同的信息。
Product_ColorSet: ColorSet_Color:
+-------------+-------------+ +-------------+-------------+
| Product* | ColorSetId* | | ColorSetId* | ColorId* |
+---------------------------+ +-------------+-------------+
| 1 | 1 | | 1 | 1 |
| 2 | 1 | | 1 | 2 |
+-------------+-------------+ +---------- --+-------------+
ColorSet: Color:
+-------------+ +-------------+-------------+
| ColorSetId* | | ColorId* | Name |
+-------------+ +-------------+-------------+
| 1 | | 1 | Blue |
| 2 | | 2 | Green |
+-------------+ +----------[--+-------------+
在这一点上,如果我有一个大Product_Color表,用颜色共享组的一个合理的程度,我会站在从空间的角度大大获益。
什么是数据库规范化的背景下,这个操作的技术名称? 我清楚地消除,即使我已经创建了实际上不存在的实体,这是相当多只是随机的机会,有很多重叠的冗余信息。 特别是我在改变由这样做呢?
此外,好像我可以随意这样做是为了大多数实体。 令我百思不解的是,Product_Color和颜色已经是第六届正常形态,当我们开始练习(右?)。