0

我是一名新手数据库管理员,我正在开展一个项目,该项目将采用硬件清单电子表格并将其迁移到 SQL Server。目前,数据作为一个大型非规范化视图存在。我正在努力实现 3NF,但不知怎的,我觉得我没有很好地设计它。

让我简要介绍一下情况:

  • 学区有几栋建筑,而这些建筑又有几个房间。学校正处于扩张期,所以新房间不断“建造”,所以“房间号”不能用作主键,因此导致我使用代理键。
  • 老师被分配到房间,但房间不一定要有老师(即实验室)。老师也可以换房间。
  • 购买硬件时,会获得一个条形码编号(将其视为采购订单上的行项目编号)。实际的硬件通过其序列号进行识别。
  • 硬件被分配到一个房间,并被赋予一个工作站编号和一个 IP 地址。

设计看起来很坚固还是有缺陷?此外,是否可以在一对多关系之间创建连接表(将特定硬件分配给一个房间,一个房间可以有很多硬件)。

请在下面找到链接。

逻辑数据库设计

4

2 回答 2

1

从每个实体的功能分解开始,定义它“是”什么以及如何使用它。3NF 是关于避免重复并保持正确的参考水平。

对于这个问题,建模一个建筑(PK:自动 ID、名称等)。然后使用外键对 ROOM(PK:自动 ID、数字等)建模以构建主键。然后对没有外键的 TEACHER 建模(PK:自动 ID、姓名等)。

对于教师和房间分配之间的关系,使用连接表:

TEACHER_ROOM

这将有一个复合主键:TEACHER_ID ROOM_ID

因此,可以将老师分配到一个房间,但一个房间不需要老师,在此模型中,可以将老师分配到许多房间(一对多基数)。

与硬件相同 - 使用 SERIAL_NUMBER 等自行定义。然后有一个 ROOM_HARDWARE 表,其中包含哪个硬件在哪个房间中,并在 HARDWARE ID 上具有唯一键,因为它一次只能在一个房间中,但 ROOM 可以有很多硬件。

于 2013-05-28T18:23:29.023 回答
0

唯一让我印象深刻的是硬件表。类别和制造商应在单独的表中。

于 2013-05-28T18:19:15.960 回答