我是一名新手数据库管理员,我正在开发一个项目,该项目将采用硬件清单电子表格并将其迁移到SQL服务器。目前,数据存在为一个大的非规范化视图。我想要达到3NF,但不知怎的,我觉得我没有设计得好。
让我简要介绍一下情况:
设计看起来是否坚固或有缺陷?此外,是否可以在一对多关系之间创建联结表(特定的硬件分配给一个房间,一个房间可以有许多硬件)。
请找到以下链接。
答案 0 :(得分:1)
从每个实体的功能分解开始,并定义它“是什么”与它的使用方式。 3NF是关于避免重复和保持正确的参考水平。
对于此问题,建模一个BUILDING(PK:自动ID,名称等)。 然后使用外键建模主键建模ROOM(PK:自动ID,数字等)。 然后模拟TEACHER(PK:auto-ID,name等),没有外键。
对于教师和房间分配之间的关系,请使用连接表:
TEACHER_ROOM
这将有一个复合主键: TEACHER_ID ROOM_ID
因此,教师可以被分配到一个房间,但是一个房间不需要教师,在这个模型中,教师可以被分配到许多房间(一对多基数)。
与硬件相同 - 用SERIAL_NUMBER等自己定义它。 然后有一个ROOM_HARDWARE表,其硬件在哪个房间,硬件ID上有一个唯一的密钥,因为它一次只能在一个房间里,但ROOM可以有许多硬件。
答案 1 :(得分:0)
唯一能与我联系的是硬件表。类别和制造商应位于不同的表格中。