gpt4 book ai didi

mysql - 数据库设计 - 列值重复多次 我应该把它放在另一个表中并在主表中引用它吗?

转载 作者:太空宇宙 更新时间:2023-11-03 11:48:22 25 4
gpt4 key购买 nike

我正在制作一个计算机硬件数据库,其中将列出硬件规范。

我的问题是,如果一个列值在数据库中重复多次,我是否应该将它放在另一个表中然后使用外键引用它?

ER图示例 enter image description here

例如CPU系列。多个 cpu 可以有 1 个系列的 cpu - Core i7、core i5、core i3。我应该将 Series 保留在 Cpu 表中,还是应该制作系列表然后将其引用到 cpus 表中,就像在 ER 中一样?cpu_grahpicscpu_core 表也是一样,值重复多次。

最佳答案

您无法通过将重复值隐藏在代理键后面来解决重复值问题,因为您只是用一个值表示另一个值。代理键将在原始值的位置重复,现在您必须处理一个间接级别才能获得有意义的值。

引入代理键还有其他原因。名称通常很冗长,可以有多种表示形式,不稳定且需要本地化。

比观察重复值更重要的是观察重复的依赖关系。例如,如果我正确阅读了您的图表,则功能依赖项 cpu_core_id -> cpu_core_name 会同时记录在 Cpucpu_cores 中。这可能允许不同的 cpu_core_name 值与相同的 cpu_core_id 相关联,从而导致您的数据不一致。

这可能发生在单个表中,而不仅仅是多个表之间。由于多个 CPU 可以构建在同一个内核上,因此 Cpu 表中的 cpu_core_id -> cpu_core_name 必须多次记录相同的 id-to-name 映射(这称为传递函数依赖)。如果特定核心的多个实例中的任何一个具有不同的关联名称,您的数据就会不一致。

关于mysql - 数据库设计 - 列值重复多次 我应该把它放在另一个表中并在主表中引用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37088978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com