|
知识路径: > 数据库技术 > 数据库标准语言—SQL > SQL-99所支持的对象关系模型 > 复杂类型 >
|
相关知识点:3个
|
|
|
|
|
|
这个表的定义不同于普通关系数据库中表的定义,因为它允许属性是集合(set),所以E-R图中的多值属性能够直接表示。
|
|
|
集合是集合体类型(collection type)的一个实例,其他的集合体类型包括数组(array)和多重集合(multiset)(即无序的集合体,其中一个元素可以出现多次),下面的属性定义了数组的声明:
|
|
|
|
这里author-array是最多10位作者名的数组,我们可以通过指定数组下标来访问数组中的元素,例如author-array[1],author-array[2],…,author-array[10]。数组是SQL-99中唯一支持的集合体类型,使用语法如前所述。SQL-99不支持无序集合或多重集合,尽管它们可能会在SQL将来的版本中出现。
|
|
|
许多现在的数据库应用需要存储的属性很大(大约几千字节),比如一个人的相片,或者更大的(大约几兆甚至上吉字节),比如高分辨率的医学图像或者录像剪辑。因此SQL-99提供了新字符型数据大对象数据类型(clob)和二进制数据大对象数据类型(blob)。数据类型中的“lob”意为“Large Object”。例如,声明属性:
|
|
|
|
执行一个SQL查询通常把结果中的一条或多条记录放入内存。大对象一般用于外部的应用,把整个大对象(几M甚至上G字节)放入内存中是非常低效和不现实的。即通过SQL对它们进行全体检索是毫无意义的,取而代之,应用程序一般用一个SQL查询来检索大对象的“定位器”,然后用定位器从宿主语言中一点一点地操作该对象。例如,JDBC允许程序员分成小片来存取一个大对象,而不是一次全取出来,很像从操作系统文件中存取数据。
|
|
|