【发布时间】:2016-05-01 22:25:29
【问题描述】:
假设有仓库,每个仓库都存放特定类型的物品。
所以有带字段的表
- 仓库 - ID、名称、类型
- 项目 - ID、名称、类型
- WarehouseItem - 仓库,物品
- 类型 - ID、名称
问题是 - 鉴于仓库只保存具有特定类型的项目,这违反了哪些数据库规范化规则?
这个数据库是否规范化了?
(问题的例子是编造的,但我在现实生活中基本有这个问题。)
【问题讨论】:
-
在这种情况下,不仅仅是违反规范化规则之一,我想说您的架构正在实现与您的要求不同的数据库。 (如果仓库只包含相同类型的物品,则类型与仓库相关)。
-
不完全是,我想。仓库不包含给定类型的所有项目。您可能是正确的,应该有一个 Type 表和一个 Warehouse.Type 字段。但是仓库仍然只包含其中的一些项目。尚未标记为已解决。我将进行编辑以澄清。
-
我没有说要让warehouse.type字段唯一,只是如果关系存在,它必须被物化。多个仓库仍然可以拥有相同的物品类型(但每个只有一种类型)。
-
我会添加关系,但我想问题仍然存在。是否标准化?我会再次编辑。如果您有答案,请添加答案。 (你为什么要评论呢?)
标签: mysql sql database-normalization