gpt4 book ai didi

database - Boyce-Codd 范式的 KISS 描述是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:39:38 25 4
gpt4 key购买 nike

什么是 KISS(Keep it Simple, Stupid)方法来记住 Boyce-Codd 范式是什么以及如何采用非规范化表和 BCNF?

Wikipedia的信息:对我帮助不大。

最佳答案

Chris Date的定义其实很好,只要你理解他的意思即可:

每个属性

您的数据必须分解为单独的、不同的属性/列/值,这些属性/列/值不依赖于任何其他属性。你的全名是一个属性。你的生日是一个属性。您的年龄不是属性,它取决于当前日期,该日期不属于您的生日。

必须代表一个事实

每个属性都是一个事实,而不是事实的集合。更改属性中的一位会更改整个含义。你的生日是事实。你的全名是事实吗?好吧,在某些情况下是这样,因为如果您更改姓氏,您的全名就会不同,对吗?但是对于系谱学家来说,你有一个姓氏和一个姓氏,如果你改变了你的姓氏,你的姓氏就不会改变,所以它们是不同的事实。

关于 key ,

有一个属性是特殊的,它是一个键。键是一个属性,它对于数据中的所有信息都必须是唯一的,并且绝不能更改。您的全名不是 key ,因为它可以更改。您的社会保险号码不是关键,因为它们会被重复使用。您的 SSN 加生日不是键,即使该组合永远不能重复使用,因为属性不能是两个事实的组合。 GUID 是一个键。您递增但永远不会重复使用的数字是 key 。

整个 key ,

仅凭 key 就足以[并且是必要的!] 来识别您的值;您不能用不同的键表示相同的数据,键列的子集也不足以识别事实。假设您有一个包含 GUID 键、名称和地址值的地址簿。如果相同的名称代表不同的人并且不是“相同的数据”,则可以使用不同的键出现两次相同的名称。如果会计部门的 Mary Jones 将她的名字更改为 Mary Smith,则销售部门的 Mary Jones 也不会更改她的名字。另一方面,如果 Mary Smith 和 John Smith 有相同的街道地址并且确实是同一个地方,则不允许这样做。您必须使用街道地址和新 key 创建新的键/值对。

您也不允许将这个新的单一街道地址的键用作地址簿中的值,因为现在同一个街道地址键将被表示两次。相反,您必须使用地址簿键和街道地址键的值创建第三个键/值对;您可以通过在这组值中匹配他们的书本键和地址键来找到一个人的街道地址。

只有 key

除了标识您的值的键之外,必须没有其他内容。例如,如果允许您使用“泰姬陵”地址(假设只有一个),则不允许在同一记录中使用城市值,因为如果您知道地址,您也会知道这座城市。这也将开启在不同城市拥有多个泰姬陵的可能性。相反,您必须再次创建一个具有唯一值的辅助位置键,例如泰姬陵、华盛顿特区的白宫等,以及它们所在的城市。或者禁止城市独有的“地址”。

帮帮我,Codd。

关于database - Boyce-Codd 范式的 KISS 描述是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/539324/

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