数据库中的对象标识符和记录标识有什么区别?

时间:2013-09-25 05:35:01

标签: database oracle11g

对象关系模型中的对象标识符(OID)与关系模型中的记录ID(RID)之间有什么区别?

1 个答案:

答案 0 :(得分:1)

两者都有相同的目的,但在不同的范围内。 记录在pl / sql块中声明,但对象在数据库中声明。这意味着记录是pl / sql块类型,而object是schema对象。

declare
type c is record(a number, b number);
begin
---
---
---
end;

create type subtype1 is object(a number, b number);

当Oracle构造REF到行对象时,构造的REF由对象标识符,对象表的一些元数据以及可选的 ROWID

REF类型列中REF的大小取决于与列关联的存储属性。例如,如果列声明为REF WITH ROWID,则Oracle会将ROWID存储在REF列中。对于受约束的REF列中的对象引用,将忽略 ROWID 提示。

如果将列声明为带有 SCOPE 子句的REF,则通过省略对象表元数据和 ROWID 使列更小。范围内的REF长度为16个字节。