知识卡片
标量类型与非标量类型的区分
内容
一个类型如果没有用户可见的分量,就是标量的;否则就是非标量的——整数是标量类型 (没有可见的组成部分),元组和关系是非标量类型(它们的可见分量就是各自的属性)。 书中坦承这个区分本身并不严格,本质上和[[数据值原子性没有绝对含义]]是同一个概念 的另一种说法,关系模型在任何正式意义上并不真正依赖这条界限,但作者认为它在直观 上很有用,所以非正式地沿用:不是元组也不是关系的类型称为标量,元组或关系类型称为 非标量。与标量类型一样,元组和关系类型同样需要赋值和相等比较运算符,也需要各自 的选择器运算符(字面值是选择器的特例);但元组和关系类型不需要THE_运算符,取而 代之的是用于存取各个属性的专门运算符,扮演着THE_运算符在标量类型中的等价角色。 另外,元组和关系虽然有用户可见的分量(属性),但这不代表这些分量必须按同样的 方式物理存储——元组和关系的物理表示同样应该对用户隐藏,这一点上和标量值遵循 完全相同的[[物理数据独立性]]原则。
参考来源
- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第2章"类型和域"2.5节
"标量类型vs.非标量类型"(源文件:OEBPS/text00023.html)
- 结论依据:原文明确"如果一个类型没有用户可见的分量,那么它就是标量的;否则它就是
非标量的……元组和关系类型是非标量的(相关的用户可见分量是对应的属性)……在任何
正式意义上,关系模型都不会依赖于标量与非标量的区别""它们并不需要THE_运算符;
替代的,它们有对相应属性进行存取的运算符"。
- 原始内容:如果一个类型没有用户可见的分量,那么它就是标量的;否则它就是非标量
的……元组和关系类型是非标量的……在任何正式意义上,关系模型都不会依赖于标量
与非标量的区别。