alter table for scope

时间:2016-09-12 08:29:33

标签: sql database oracle database-design object-relational-model

这是我在课程中找到的代码

 create type employee_type AS OBJECT
    ( empno number(4),
    ename varchar2(40),
    dept_ref REF department_type)
    /
    create table employee of employee_type
    ( empno PRIMARY KEY )
    /
    create type department_type AS OBJECT
    ( deptno number(2),
    dname varchar2(20),
    loc varchar(20))
    /
    create table employee of employee_type
    ( empno PRIMARY KEY )
    /
    create table department of department_type
    ( deptno PRIMARY KEY )
    /
    alter table employee
    add (scope for (dept_ref) is department)
    /

我不明白为什么我们需要改变employee表来为department表添加范围,我的意思是dept_ref已经被引用到department_type而department表是由department_type对象组成的,添加范围的参数是什么做的?

1 个答案:

答案 0 :(得分:1)

正如documentation中所述,目的是说dept_ref中的employee必须特别提及department,而不是任何其他表可能是department_type类型。

参见 REF列:示例

  

dept列可以存储对任何表中存储的dept_t对象的引用。如果您希望将引用限制为仅指向存储在departments表中的对象,则可以通过在dept列上添加范围约束来执行此操作,如下所示...

(显然,人们喜欢从员工和部门领域抽取例子)