0

これは私がコースで見つけたコードです

 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)
    /

部門テーブルにスコープを追加するために従業員テーブルを変更する必要がある理由がわかりません。つまり、dept_ref はすでに department_type に参照されており、部門テーブルは department_type オブジェクトで構成されています。add scope ステートメントは何をしますか?

4

1 に答える 1

1

ドキュメントで説明されているように、目的は、dept_refinemployeeが、具体的には a を参照する必要があり、型である可能性のある他のテーブルを参照する必要がないことを示すことdepartmentです。department_type

REF列を参照してください: 例:

dept列には、任意のテーブルに格納されているオブジェクトへの参照を格納dept_tできます。テーブルに格納されているオブジェクトのみを指すように参照を制限したい場合は、次のようdepartmentsに列にスコープ制約を追加することでそれを行うことができdeptます...

(明らかに、人々は従業員や部門のドメインから例を引き出すのが大好きです)

于 2016-09-12T08:37:38.163 に答える