如何为数据库中的可用选项建模

时间:2015-11-08 18:30:48

标签: sql database database-design database-schema

我一直想弄清楚这一点,我越来越感到沮丧,因为我越想它就会越混乱。

问题是如何在数据库中映射特定行的可用选项的关系。我想出了这个计算机示例,我认为它很好地解释了我正在尝试做什么

假设我们要设计一个数据库来存储有关计算机的信息:特定计算机体系结构可用的硬件设备,以及用户选择硬件选项的那些计算机的“实例”或产品

选项1

enter image description here

使用这种方法,没有什么能阻止用户选择不适用于该特定架构的计算机的硬件

作为一个例子

computer_arch 1,x86 2,x64

硬件 1,64位声卡 2,32位声音车

computer_arch_hardware (computer_arch_id,hardware_id) 1,2 2,1

计算机实例 SERIAL_NUMBER,类型,操作系统 1,1, “窗口”

Computer_hardware 1,2 - > 32位计算机分配了64位兼容的硬件

选项2

另一种选择是将computer_instance_hardware关系映射到computer_arch_hardware

enter image description here

但是使用这种方法我们有冗余,因为计算机的“类型”被重复,据我所知这打破了规范化规则

此外,即使arch和硬件设备之间没有错误的链接,您也可以轻松地将x64设备(arch_64,设备64)添加到32位计算机实例。

选项3

最后,为了确保将正确数量的选项与正确的体系结构相关联,我们可以复制type_id FK以指向computer_arch_hardware,因此所有硬件都使用其指定的体系结构进行选择,同时使用computer_instance进行选择我们确保architecture_hardware选项与计算机的类型匹配。但我认为这是完全错误的,并打破了数据库的任何单一规范化规则

enter image description here

任何帮助都将不胜感激。

0 个答案:

没有答案