【发布时间】:2012-12-16 21:34:26
【问题描述】:
我被“SQL 和关系理论”一书的某一点所困扰,该书与关系属性可以采用的类型有关。问题是这样的:
关系属性可以是任何类型的规则有例外,其中一个是如果关系 R 是类型 T,那么 R 的属性本身不能是 T 类型。
为什么?是不是因为关系 R 将属于“关系 [名称]”类型,所以属性不能属于这种类型?
【问题讨论】:
-
和C语言一样:结构不能包含自身的实例。
我被“SQL 和关系理论”一书的某一点所困扰,该书与关系属性可以采用的类型有关。问题是这样的:
关系属性可以是任何类型的规则有例外,其中一个是如果关系 R 是类型 T,那么 R 的属性本身不能是 T 类型。
为什么?是不是因为关系 R 将属于“关系 [名称]”类型,所以属性不能属于这种类型?
【问题讨论】:
考虑这样的事情:
create table address {
id int,
name varchar(20),
details address -- the address relation has an attribute that is another of itself
}
定义会无限递归。
【讨论】:
这是因为定义这样的关系会立即创建无限递归,甚至在您尝试将任何数据放入其中之前。关系的标题必须是有限的。
【讨论】: