【发布时间】:2013-05-23 19:38:41
【问题描述】:
我是一名新手数据库管理员,我正在开展一个项目,该项目将采用硬件清单电子表格并将其迁移到 SQL Server。目前,数据作为一个大型非规范化视图存在。我正在努力实现3NF,但不知怎的,我觉得我设计得不好。
让我简要介绍一下情况:
- 学区有几栋建筑,而这些建筑又有几个房间。学校正处于扩张期,所以不断“建”新房间,所以“房间号”不能用作主键,因此导致我使用代理键。
- 老师被分配到房间,但房间不一定要有老师(即实验室)。教师还可以更换房间。
- 购买硬件时,会获得一个条形码编号(将其视为采购订单上的行项目编号)。实际硬件通过其序列号进行识别。
- 硬件被分配到一个房间,并被分配一个工作站编号和一个 IP 地址。
设计看起来是扎实的还是有缺陷的?另外,是否可以在一对多关系之间创建一个连接表(一个特定的硬件分配给一个房间,一个房间可以有很多个硬件)。
请在下面找到链接。
【问题讨论】:
-
对我来说看起来很可靠,请尝试考虑可能会导致问题的场景,或者您可能被要求考虑的事情并未明确在您的项目范围内(即:当硬件正在修理它是否被分配到“修理”室,还是应该有一个单独的表格来跟踪修理?)我同意硬件可以细分,是否值得全 3NF 取决于您的数据。
-
感谢 Goat_CO。有一种情况是硬件被回收,或者被认为是过时的。此时,硬件从教室中取出并送到指定的回收区。为了让它工作,我需要在我的 hardware_room 连接表中添加一个 EndDate 字段。
标签: sql sql-server database-design normalization