我正在建立一个库存数据库,用于存储IT硬件,例如台式计算机,笔记本电脑,交换机,路由器,移动电话等。被放入子类型表中。我的困境是在以下两种设计之间进行选择:
在顶视图中,所有设备共享相同的子类型。例如,台式计算机和便携式计算机将在下表中记录:设备,网络设备。交换机将在以下位置记录:设备,网络设备。路由器将在以下位置记录:设备,网络设备,WANDevice。我们跟踪位置的任何设备都会在“位置”中有一条记录。我在此设置中想到的一些利弊:
- 优点:基于公共字段(例如主机名或LocationID)选择记录更加容易。
- 优点:没有空字段。
- 缺点:特定设备的CRUD操作中应包含的表并不明显,并且可能会使以后的DBA感到困惑。
在底图中,所有设备都有其自己的子类型(此处未显示更多类的设备)。在这种情况下,很明显哪些表记录被插入或选择。台式计算机和便携式计算机可以在“计算机”等中使用。对于此设置,我想到了一些利弊:
- 优点:很明显,哪些表用于子类型的CRUD操作。
- 优点:CRUD操作只需使用一张表。
- 缺点:基于公共子类型字段选择记录需要合并所有表,例如,按主机名或LocationID进行搜索。
在这两种情况下,ClassDiscriminator字段都放在子类型表中,以与CHECK约束一起使用,以控制可以插入哪些类型。
是否有任何建议的设计更好,还是完全出于见解并取决于数据库的预期目的?
编辑:我有一个特定的问题有关表“ NetworkDevice”的重叠性质。该表用于保存具有主机名和/或IP地址的任何设备的网络信息,无论它是计算机,交换机还是路由器。该表的重叠性质是否会引起问题,还是可以通过这种方式实现?
预先感谢您提供任何输入。请询问是否需要其他信息。