gpt4 book ai didi

relational-database - RMDB 表中的 "columns"是否有顺序?

转载 作者:行者123 更新时间:2023-12-04 08:12:16 25 4
gpt4 key购买 nike

我了解到表中的元组(例如行)没有顺序概念,但根据 wikipedia “元组是元素的有序列表”。这是否意味着属性确实有顺序?如果是,为什么它们会被区别对待,不能向表中添加另一列(这就是元组没有顺序的原因)?

“在这种表示法中,属性-值对可以以任何顺序出现。”这是否意味着属性没有顺序?

最佳答案

可以这么说,有两种元组。有“纯数学”,确实元组通常被定义为“值的有序列表”。因此,在数学理论中,说“元组中的第一个值”等是有道理的。这可能是您的维基百科文章所指的意义或上下文。

Haskell 语言支持这种元组,例如,它还有一个 fst() 运算符来从这种元组中提取“第一个”值。

然而,Codd 意识到,将元组作为有序列表的这种数学概念应用于数据管理领域时,这将是非常不切实际的。在数据管理中,他希望通过属性名称而不是顺序位置对值进行寻址。确实,想象一下如果从表中删除“五个中的第二个属性”的破坏性后果,现在所有解决同一个表的“第三个”和“第四个”属性的程序现在都必须发明和调整。

因此,在关系模型中,元组是命名值的集合,因此,在数据关系模型中起作用的元组类型中,确实没有任何值排序的概念。

然后正如其他回复中所指出的那样,存在 SQL 及其与关系理论的亵渎性偏差。在 SQL 中,元组和标题中属性的排序非常有意义,其后果无处不在。在 FK 声明中,相应的引用和引用属性的对应关系是按顺序位置,而不是按名称。其他情况是使用 UNION 和 EXCEPT。以表 T 为例,X 列和 Y 列的类型相同。

从 T 中选择 X,Y 联合 从 T 中选择 Y,X

本身并非无效,但标准规定结果中的列名称是系统定义的 (!)。 “做明智的事情”并偏离这一点的实现,分别生成一个包含名为 X 和 Y 的列的表,然后面对他们的用户,结果是前一个表达式与

从 T 中选择 Y,X 联合从 T 中选择 X,Y

(因为 X,Y 的列排序是 Y,X 之外的另一个排序,因此标题不相等,因此表格也不相等。)

从 T 中选择 X,Y 除了从 T 中选择 Y,X

给出的结果会让许多 SQL 新手用户摸不着头脑。

关于relational-database - RMDB 表中的 "columns"是否有顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12362422/

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