4.1 SQLプロパティ・グラフの作成
CREATE PROPERTY GRAPH
DDL文を使用すると、Oracle Databaseでプロパティ・グラフ・オブジェクトを直接作成できます。
例4-1 CREATE PROPERTY GRAPH
DDL文を使用したSQLプロパティ・グラフの作成
この例では、グラフの基礎となるデータベース表としてpersons
、university
、friends
およびstudent_of
を使用して、SQLプロパティ・グラフstudents_graph
を作成します。
この例を実行するには、次のことを確認してください:
- 「データベースでのサンプル・データの設定」の説明に従って、データベースにサンプル表を設定します。
- SQLプロパティ・グラフの作成に必要な権限があることを確認するには、「SQLプロパティ・グラフに対するシステム権限およびオブジェクト権限の付与」を参照してください。
次の図は、students_graph
を示しています。
対応するSQLプロパティ・グラフDDL文を次に示します。
CREATE PROPERTY GRAPH students_graph
VERTEX TABLES (
persons KEY (person_id)
LABEL person
PROPERTIES (person_id, name, birthdate AS dob)
LABEL person_ht
PROPERTIES (height),
university KEY (id)
)
EDGE TABLES (
friends
KEY (friendship_id)
SOURCE KEY (person_a) REFERENCES persons(person_id)
DESTINATION KEY (person_b) REFERENCES persons(person_id)
PROPERTIES (friendship_id, meeting_date),
student_of
SOURCE KEY (s_person_id) REFERENCES persons(person_id)
DESTINATION KEY (s_univ_id) REFERENCES university(id)
PROPERTIES (subject)
);
実行時に、前述の例では、スキーマの表を使用してグラフ要素表を定義するSQLプロパティ・グラフ・オブジェクトを作成します。新しいSQLプロパティ・グラフ・オブジェクトを作成すると、プロパティ・グラフ・メタデータのみが格納され、基礎となるデータベース・オブジェクトからグラフ要素表にデータがコピーされることはありません。これは、SQLプロパティ・グラフを問い合せると、データベース内の現在のグラフ・データに対してすべてのグラフ問合せが実行されることを意味します。十分な権限がある場合は、SQLプロパティ・グラフを含む別のスキーマを指定することもできます。
- 2つの頂点グラフ要素表:
persons
: 表には明示的に定義された一意キーperson_id
があり、次の2つのラベルに関連付けられています:person
: このラベルは、person_id
、name
およびbirthdate
をプロパティとして公開します。person_ht
: このラベルは、height
プロパティのみを公開します。
university
: 表のラベルは暗黙的に推測され、デフォルトでは、基礎となるデータベース表の表示列はすべてプロパティとして公開されます。
- 2つのエッジ・グラフ要素表:
friends
: エッジ表は、ソースと宛先の両方の頂点表の基礎となるデータベース表としてpersons
を参照します。エッジ表のソース・キーと宛先キー(person_a
およびperson_b
)は、それぞれソースと宛先の頂点表の一意キーに対応します。エッジ表のラベルは、グラフ要素表の名前(この場合はfriends
)から自動的に推測され、friendship_id
およびmeeting_date
がプロパティとして公開されます。student_of
: エッジ表は、ソースおよび宛先の頂点表の基礎となるデータベース表としてそれぞれpersons
およびuniversity
を参照します。エッジ表のソース・キーと宛先キー(s_person_id
およびs_univ_id
)は、それぞれソースと宛先の頂点表の一意キーに対応します。エッジ表のラベルは、グラフ要素表の名前(この場合はstudent_of
)から自動的に推測され、subject
がプロパティとして公開されます。
CREATE PROPERTY GRAPH
DDL文のOR REPLACE
句を使用して、SQLプロパティ・グラフを再定義できます。この句を使用すると、以前に付与されたオブジェクト権限を削除、再作成および再付与することなく、既存のSQLプロパティ・グラフの定義を変更できます。
関連項目:
『Oracle Database SQL言語リファレンス』のCREATE PROPERTY GRAPH次の各項では、グラフ要素表、キー、ラベルおよびプロパティの概念について説明します:
- 頂点およびエッジ・グラフ要素表について
基礎となるデータベース・オブジェクトから定義されたSQLプロパティ・グラフの頂点およびエッジは、グラフ要素表に格納されます。 - 頂点およびエッジ表キーについて
SQLプロパティ・グラフ定義で使用される各頂点およびエッジ表には、SQLプロパティ・グラフで一意の頂点またはエッジを識別するためのキーが必要です。 - ラベルとプロパティについて
ラベルを1つ以上のグラフ要素表に関連付け、グラフ定義を拡張できます。ラベルは、プロパティの有無に関係なく定義できます。 - グラフ・オプションを使用したSQLプロパティ・グラフの作成
グラフ・オプションを使用して、SQLプロパティ・グラフの作成時の動作を制御できます。 - SQLプロパティ・グラフに対するシステム権限およびオブジェクト権限の付与
SQLプロパティ・グラフに対する操作を実行するための新しいシステム権限およびオブジェクト権限について学習します。 - SQLプロパティ・グラフのメタデータの取得
SQLプロパティ・グラフのメタデータには、一連のデータ・ディクショナリ・ビューを介してアクセスできます。 - DBMS_METADATAパッケージを使用したSQL作成DDLの取得
- SQLプロパティ・グラフの作成の制限事項
この項では、SQLプロパティ・グラフの作成時に適用されるいくつかの制限を示します。
親トピック: プロパティ・グラフのSQL DDL文
4.1.1 頂点およびエッジ・グラフ要素表について
基礎となるデータベース・オブジェクトから定義されたSQLプロパティ・グラフの頂点およびエッジは、グラフ要素表に格納されます。
グラフ要素表は、頂点表またはエッジ表のいずれかです。
次の項を簡単に理解するには、例4-1のグラフ定義を参照してください:
頂点グラフ要素表
- 頂点表は、
VERTEX TABLES
句を使用して定義されます。 - 頂点表の各行は、グラフの頂点に対応します。
- 頂点グラフ要素表には、基礎となるデータベース・オブジェクトの名前と無関係の名前があります。
- デフォルトでは、頂点グラフ要素表の名前は基礎となるデータベース・オブジェクトの名前と同じです。
- 頂点表名はグラフに対して一意である必要があります。同じデータベース・オブジェクトの複数のグラフ要素表を含むSQLプロパティ・グラフを定義する場合は、
AS
句を使用して代替グラフ要素の表名を指定する必要があります。
エッジ・グラフ要素表
- エッジ表は、
EDGE TABLES
句を使用して定義されます。 - それぞれの頂点表を
REFERENCES
するSOURCE
およびDESTINATION
キーワードを使用して、ソース頂点表と宛先頂点表の間の直接的な関係を指定します。 - エッジ表の各行は、グラフのエッジに対応します。
- エッジ・グラフ要素表には、基礎となるデータベース・オブジェクトの名前と無関係の名前があります。
- デフォルトでは、エッジ・グラフ要素表の名前は、基礎となるデータベース・オブジェクトの名前と同じです。
- エッジ表名はグラフに対して一意である必要があります。エッジ表名は、頂点表または別のエッジ表と共有できません。
親トピック: SQLプロパティ・グラフの作成
4.1.2 頂点およびエッジ表キーについて
SQLプロパティ・グラフ定義で使用される各頂点およびエッジ表には、SQLプロパティ・グラフで一意の頂点またはエッジを識別するためのキーが必要です。
キーは、基礎となる表の1つ以上の列から定義されます。キーは、既存の主キー、または基礎となる表に定義された一意制約に基づいて暗黙的に推測することも、明示的に定義することもできます。キーは一意である必要があります。
ただし、ENFORCED MODE
でグラフを作成する場合は、キー列の一意性制約が必要です。それ以外の場合は、一意性制約がないキー列を使用して、TRUSTED MODE
でグラフを作成できます。グラフの作成時に適用できる様々なモードの詳細は、「グラフ・オプションを使用したSQLプロパティ・グラフの作成」を参照してください。
頂点またはエッジ表キーは、次の組込みデータ型列のいずれかに対して定義できます:
VARCHAR2
NVARCHAR2
NUMBER
BINARY_FLOAT
BINARY_DOUBLE
CHAR
NCHAR
DATE
INTERVAL
(YEAR TO MONTH
とDAY TO SECOND
の両方)TIMESTAMP
TIMESTAMP WITH TIME ZONE
データ型はサポートされていません。
次の項を簡単に理解するには、例4-1のSQLプロパティ・グラフ定義を参照してください:
頂点表キー
- デフォルトでは、頂点表のキーは、基礎となるデータベース・オブジェクトの単一の
PRIMARY KEY
またはUNIQUE
キー制約から自動的に識別されます。両方が存在する場合、PRIMARY KEY
制約はUNIQUE
キー制約よりも優先されます。 - 頂点表キーが単一の
UNIQUE
キーに基づいて自動的に推測される場合、そのUNIQUE
キーの一連の列もNOT NULL
である必要があります。 - 基礎となるデータベース・オブジェクトに一意性を強制するための一意制約が含まれていない場合は、頂点表の一意キーを定義する列を識別するために、
VERTEX TABLES
句にKEY
副句を明示的に定義する必要があります。列名は基礎となるデータベース・オブジェクトの列名と一致する必要があります。 - コンポジット頂点表キーもサポートされています。
エッジ表キー
- デフォルトでは、エッジ表のキーは、基礎となるデータベース・オブジェクトの単一の
PRIMARY KEY
またはUNIQUE
キー制約から自動的に識別されます。両方が存在する場合、PRIMARY KEY
制約はUNIQUE
キー制約よりも優先されます。 - エッジ表キーが単一の
UNIQUE
キーに基づいて自動的に推測される場合、そのUNIQUE
キーの一連の列もNOT NULL
である必要があります。 - 基礎となるデータベース・オブジェクトに一意性を強制するための一意制約が含まれていない場合は、エッジ表の一意キーを定義する列を識別するために、
EDGE TABLES
句にKEY
副句を明示的に定義する必要があります。列名は基礎となるデータベース・オブジェクトの列名と一致する必要があります。 - デフォルトでは、
SOURCE
およびDESTINATION
表キーは、それぞれ、エッジ表と基礎となるソース表と宛先表の間にある単一のFOREIGN KEY
制約から自動的に取得されます。 - ただし、次のいずれかに該当する場合は、
SOURCE
およびDESTINATION
頂点表に対してKEY
副句を明示的に指定する必要があります:- エッジと参照されている頂点表の間に
FOREIGN KEY
制約はありません。 - エッジと参照される頂点表の間に複数の
FOREIGN KEY
制約があります。 - エッジ表とそのソースおよび宛先の頂点表の基礎となるデータベース・オブジェクトは、マテリアライズド・ビューまたは外部表です。
- エッジと参照されている頂点表の間に
ノート:
データベース・オブジェクトの主キー制約に適用されるすべての制限は、頂点およびエッジ表のキーにも適用されます。親トピック: SQLプロパティ・グラフの作成
4.1.3 ラベルとプロパティについて
ラベルを1つ以上のグラフ要素表に関連付け、グラフ定義を拡張できます。ラベルは、プロパティの有無に関係なく定義できます。
オプションで、グラフの頂点およびエッジ表に対してLABELS
およびPROPERTIES
を定義できます。指定しない場合、グラフ要素表にグラフ要素表の名前を持つラベルが自動的に割り当てられ、列名をプロパティ名として使用して、すべての表示列がプロパティとして公開されます。
次の項を簡単に理解するには、例4-1のSQLプロパティ・グラフ定義を参照してください:
ラベル
- デフォルトでは、頂点およびエッジ表には、それぞれのグラフ要素表の名前を持つラベルが自動的に割り当てられます。
DEFAULT LABEL
副句を使用して、前述のルールを明示的に適用することもできます。LABEL
副句を使用して、新しいラベル名を頂点またはエッジ・グラフ要素表に明示的に割り当てることができます。- 同じグラフ要素表に複数のラベルを関連付けることができます。
- 同じラベルを複数のグラフ要素表で共有できます。
次の条件が当てはまる場合、ラベルを複数のグラフ要素表(共有ラベル)に関連付けることができます:
- このラベルを共有するすべてのグラフ要素表は、同じプロパティ名のセットを宣言します。ラベル定義では、プロパティの順序は重要ではありません。
- 同じプロパティ名で公開される異なる列または値式には、論理和互換の型があります。
- また、詳細は、「プロパティ・タイプを決定するためのタイプ互換性ルール」を参照してください。
プロパティ
- デフォルトでは、ラベル宣言がない場合、またはプロパティ・グラフ定義で
DEFAULT LABEL
副句が使用されている場合、頂点またはエッジ表のすべての表示列がプロパティとして自動的に公開されます。プロパティ名は、基礎となるデータベース・オブジェクトの列名と同じです。 - Oracle組込みデータ型の列は、SQLプロパティ・グラフでラベルのプロパティとして公開できます。これには、仮想列、JSONデータ型列、
CLOB
およびBLOB
データ型が含まれています。ただし、次はサポートされていません:
XMLType
およびSDO_GEOMETRY
型の列はサポートされていません。- バイナリXMLとして格納された
XMLType
列に対するSQL/XML値式、およびSDO_GEOMETRY
オブジェクト・データ型列に対するSDO_GEOMETRY
組込み関数は、プロパティでサポートされている型の値を返すかぎり許可されます。一般オブジェクト・データ型とユーザー定義データ型、およびそれらに対する対応するSQL演算子値式はサポートされません。 ANYTYPE
型の列は、プロパティとして公開できません。
- SQLプロパティ・グラフの作成時に、頂点またはエッジ・プロパティのデータ型は次のように決定されます:
- 個別のラベルに関連付けられた個別プロパティのデータ型は、基礎となるデータベース列と同じになります。
- 異なるラベルからの同じ名前のプロパティは、基礎となるデータベース列と同じデータ型を持ちます。ただし、SQLプロパティ・グラフを作成する場合は、
ALLOW MIXED PROPERTY TYPES
オプションを使用する必要があります。共有プロパティ名を使用する例については、「グラフ・オプションを使用したSQLプロパティ・グラフの作成」を参照してください。
- 同じラベルから同じ名前のプロパティは、基礎となるデータベース列のUNION ALL互換型を持ちます。また、SQLプロパティ・グラフを作成する場合は、
ALLOW MIXED PROPERTY TYPES
オプションを使用する必要があります:- 共有ラベルで共有プロパティ名を使用する例については、「グラフ・オプションを使用したSQLプロパティ・グラフの作成」を参照してください。
- プロパティ・タイプを決定するタイプ・ルールの詳細は、「プロパティ・タイプを決定するためのタイプ互換性ルール」を参照してください。
- ラベルの頂点またはエッジ・プロパティを明示的に定義する場合、次のプロパティ宣言がサポートされています:
PROPERTIES [ARE] ALL COLUMNS
: グラフ要素表のすべての表示列をラベル・プロパティとして公開します。ただし、ソース・データベース・オブジェクトで列が追加または削除された場合、SQLプロパティ・グラフの作成後にこれらの列はグラフに反映されません。PROPERTIES [ARE] ALL COLUMNS EXCEPT(<column_names_list>)
: グラフ要素表のすべての表示列を、明示的にリストされている列を除き、ラベル・プロパティとして公開します。PROPERTIES(<list_of_column_names>)
: ラベル・プロパティとして明示的にリストされているグラフ要素表の列のみを公開します。プロパティ名はデフォルトで列名になります。PROPERTIES(<column_name AS property_name,...>)
: 前述のオプションと同じです。ただし、AS property_name
をcolumn_name
に追加すると、property_name
がプロパティ名として使用されます。PROPERTIES(<column_expressions AS property_name,...>)
: 列に対する式であるプロパティを宣言します。この場合、AS
句は必須です。値式は、スカラー・データ型の列に対して定義されたSQL演算子式またはJSON式のいずれかです。JSON式の使用例については、「SQLプロパティ・グラフでのJSONのサポート」を参照してください。NO PROPERTIES
: ラベルの列は公開されません。
- 疑似列は、ラベル・プロパティとして公開できません。
親トピック: SQLプロパティ・グラフの作成
4.1.4 グラフ・オプションを使用したSQLプロパティ・グラフの作成
グラフ・オプションを使用して、SQLプロパティ・グラフの作成時の動作を制御できます。
CREATE PROPERTY GRAPH
DDL文の最後にOPTIONS
句を使用して指定できます。必要に応じて、MODE
オプションまたはMIXED PROPERTY TYPES
オプション、あるいはその両方を使用できます。
オプションを使用したグラフのモードの指定
SQLプロパティ・グラフの作成時に次のいずれかのオプション値を使用して、グラフのMODE
を指定できます:
ENFORCED MODE
: これにより、基礎となるデータベース表に一意キー制約への依存関係が確保されます。SQLプロパティ・グラフの作成時にCREATE PROPERTY GRAPH
文を使用すると、次のいずれかの条件が当てはまる場合にエラーがスローされます:- グラフ要素表の指定された頂点またはエッジ表
KEY
が、NOT NULL
列で定義されたPRIMARY KEY
キーでもUNIQUE
キーでもありません。 - グラフ要素表に明示的な頂点またはエッジ表
KEY
が定義されておらず、基礎となるデータベース表のNOT NULL
列に単一のPRIMARY KEY
または単一のUNIQUE
キー制約がないため、デフォルトの頂点またはエッジ・キーを自動的に識別できません。 - 指定されたエッジ・ソース・キーおよび対応するソース頂点キー、または指定されたエッジ宛先キーおよび対応する宛先頂点キーに対して、基礎となる表の間に対応する
FOREIGN KEY
が存在しません。 - エッジ表にはソースまたは宛先に対する明示的なキーがなく、エッジ表と参照されるソース(または宛先)頂点表の間に単一の
FOREIGN KEY
制約がないため、システムがキーを暗黙的に推測できません。
たとえば、主キー、一意キーまたは
NOT NULL
制約がないデータベース内の次のt1
表について考えてみます。SQL> CREATE TABLE t1 (id NUMBER, name VARCHAR2(10)); INSERT INTO t1 (id, name) VALUES (1,'John'); INSERT INTO t1 (id, name) VALUES (2, 'Mary');
次のように、
OPTIONS(ENFORCED MODE)
を使用してSQLプロパティ・グラフを作成します:CREATE PROPERTY GRAPH g VERTEX TABLES ( t1 KEY (id) LABEL t PROPERTIES ARE ALL COLUMNS ) OPTIONS(ENFORCED MODE);
一意性を強制するキー制約がないため、グラフの作成は次のエラーで失敗します:
ORA-42434: グラフ要素の表キーを定義するために使用される列は、強制モードではNULL以外である必要があります
前のグラフ定義の
KEY
句を省略すると、次のエラーがスローされます:ORA-42402: グラフ要素表T1のキーを推測できません
- グラフ要素表の指定された頂点またはエッジ表
TRUSTED MODE
(デフォルト):TRUSTED
モードを使用する場合、基礎となるデータベース表に対する一意キー制約への依存関係はありません。したがって、前述の例をTRUSTED
モードで実行しても、エラーはスローされません。これは、このオプションを使用することを選択した場合、各グラフ要素表の主キーの一意性、およびエッジ表とそのソース表と宛先表の間の有効な外部キー参照を保証する必要があることを意味します。そうしないと、予想される保証が満たされないため、グラフ問合せの結果が正しくなくなる可能性があります。
共有プロパティ名に対して異なるプロパティ・タイプを許可または禁止するオプションの使用
MIXED PROPERTY TYPES
オプションは、次のいずれかの値を使用して指定できます:
ALLOW MIXED PROPERTY TYPES
: これにより、次のことが保証されます:- 同じ名前の2つのプロパティが異なるラベルに属している場合は、完全に異なるタイプを持つことができます。
たとえば、サンプル表
persons
およびstudents
に加えて(「データベースでのサンプル・データの設定」を参照)、次の追加表を作成します:CREATE TABLE t2 (id NUMBER, height VARCHAR2(4), CONSTRAINT t2_pk PRIMARY KEY (id)); INSERT INTO t2 (id, height) VALUES (1, '1.80'); INSERT INTO t2 (id, height) VALUES (2, '1.65'); CREATE TABLE t3 (id NUMBER, height BINARY_DOUBLE, CONSTRAINT t3_pk PRIMARY KEY (id)); INSERT INTO t3 (id, height) VALUES (1, 1.80); INSERT INTO t3 (id, height) VALUES (2, 1.65);
同じプロパティ名
height
に3つの異なるラベルを使用する次のCREATE PROPERTY GRAPH
DDL文を実行します。CREATE PROPERTY GRAPH g1 VERTEX TABLES ( persons LABEL person PROPERTIES (name, height), t2 LABEL t2 PROPERTIES (height), t3 LABEL t3 PROPERTIES (height) )OPTIONS(ALLOW MIXED PROPERTY TYPES);
グラフが作成されると、関連付けられた頂点表のheight
のプロパティ・タイプは、次のようになります:LABEL person
はFLOAT
ですLABEL t2
はVARCHAR
ですLABEL t3
はBINARY_DOUBLE
です
ただし、このグラフを問い合せる場合、
height
のプロパティ・タイプは、SQLグラフ問合せで使用されるラベル制約に依存します。詳細は、「ラベル・プロパティへのアクセス」を参照してください。 - 共有ラベル内でプロパティ名を共有している場合は、すべての論理和互換型である必要があります。
たとえば、共有ラベル
t
内でプロパティ名height
が使用されている次のCREATE PROPERTY GRAPH
DDL文を実行します:CREATE PROPERTY GRAPH g2 VERTEX TABLES ( persons LABEL t PROPERTIES (height), t2 LABEL t PROPERTIES (height) )OPTIONS(ALLOW MIXED PROPERTY TYPES);
表
persons
およびt2
の列height
のデータ型がそれぞれFLOAT
およびVARCHAR
で、論理和の互換性がないため、グラフの作成が失敗します。したがって、次のエラーがスローされます:ORA-42414: プロパティHEIGHT (ラベルT)に複合型を使用することはできません
ただし、
FLOAT
およびBINARY_DOUBLE
が数値グループに属し、論理和互換であるため、次のグラフは正常に作成されます。CREATE PROPERTY GRAPH g3 VERTEX TABLES ( persons LABEL t PROPERTIES (height), t3 LABEL t PROPERTIES (height) )OPTIONS(ALLOW MIXED PROPERTY TYPES);
詳細は、「プロパティ・タイプを決定するためのタイプ互換性ルール」を参照してください。
- 同じ名前の2つのプロパティが異なるラベルに属している場合は、完全に異なるタイプを持つことができます。
DISALLOW MIXED PROPERTY TYPES
(デフォルト): これにより、同じ名前のプロパティは厳密に同じデータ型である必要があります。これは、単一または複数のグラフ要素表に関連付けられているかどうかに関係なく、すべてのラベルに適用されます。たとえば、基礎となるデータベース表として
persons
およびt2
を使用して、次のDDL文を実行します:CREATE PROPERTY GRAPH g4 VERTEX TABLES ( persons LABEL person PROPERTIES (name, height), t2 LABEL t2 PROPERTIES (height) );
前述のコードでは、デフォルトの
DISALLOW MIXED PROPERTY TYPES
グラフ・オプションが使用されるため、複合プロパティ・タイプがグラフ定義で使用されていると、エラーがスローされます:ORA-42414: プロパティHEIGHT (ラベルT2)に複合型を使用することはできません
次の表に、MIXED PROPERTY TYPES
オプションに関する互換性ルールをまとめています
脚注1 同じ名前のラベルを複数のグラフ要素表に関連付けることができます。
脚注2 同じ名前のプロパティは、異なるラベルで公開できます。
親トピック: SQLプロパティ・グラフの作成
4.1.5 SQLプロパティ・グラフに対するシステム権限およびオブジェクト権限の付与
SQLプロパティ・グラフに対する操作を実行するための新しいシステム権限およびオブジェクト権限について学習します。
表4-1 SQLプロパティ・グラフ・オブジェクトのシステム権限
システム権限 | 説明 |
---|---|
CREATE PROPERTY GRAPH |
権限受領者のスキーマにSQLプロパティ・グラフを作成します |
CREATE ANY PROPERTY GRAPH |
SYS およびAUDSYS 以外の任意のスキーマにSQLプロパティ・グラフを作成します |
ALTER PROPERTY GRAPH |
権限受領者のスキーマのSQLプロパティ・グラフを変更します |
ALTER ANY PROPERTY GRAPH |
SYS およびAUDSYS 以外の任意のスキーマのSQLプロパティ・グラフを変更します |
READ PROPERTY GRAPH |
権限受領者のスキーマのSQLプロパティ・グラフを問い合せます |
READ ANY PROPERTY GRAPH |
SYS およびAUDSY 以外の任意のスキーマのSQLプロパティ・グラフを問い合せます |
SELECT PROPERTY GRAPH |
権限受領者のスキーマのSQLプロパティ・グラフを問い合せます |
DROP ANY PROPERTY GRAPH |
SYS およびAUDSYS 以外の任意のスキーマのSQLプロパティ・グラフを削除します |
表4-2 SQLプロパティ・グラフのオブジェクト権限
オブジェクト権限 | 説明 |
---|---|
ALTER |
SQLプロパティ・グラフを変更します |
READ |
SQLグラフ問合せを使用してSQLプロパティ・グラフを問い合せます |
脚注3SELECT |
SQLグラフ問合せを使用してSQLプロパティ・グラフを問い合せます |
脚注3
SELECT
権限は、SQLプロパティ・グラフ・オブジェクトのREAD
権限とまったく同様に動作することに注意してください。これは主に、プロパティ・グラフ・オブジェクトのSQL標準との互換性のために存在します。
次に、SQLプロパティ・グラフに関連する権限の付与および取消しの例を示します。次の権限を付与および取り消すSYSDBAアクセス権があることを確認してください:
GRANT CREATE PROPERTY GRAPH, CREATE ANY PROPERTY GRAPH,
ALTER ANY PROPERTY GRAPH, DROP ANY PROPERTY GRAPH,
READ ANY PROPERTY GRAPH TO <graphuser>;
REVOKE CREATE PROPERTY GRAPH, CREATE ANY PROPERTY GRAPH,
ALTER ANY PROPERTY GRAPH, DROP ANY PROPERTY GRAPH,
READ ANY PROPERTY GRAPH FROM <graphuser>;
次のように、データベース内のSQLプロパティ・グラフを別のユーザーと共有できます。
GRANT SELECT ON PROPERTY GRAPH <graph_name> TO <schema_user>;
親トピック: SQLプロパティ・グラフの作成
4.1.6 SQLプロパティ・グラフのメタデータの取得
SQLプロパティ・グラフのメタデータには、一連のデータ・ディクショナリ・ビューを介してアクセスできます。
次の表に、SQLプロパティ・グラフのメタデータを取得するためにアクセスできるデータ・ディクショナリ・ビューの完全なリストを示します。表内の各カテゴリのメタデータは、ALL_
、USER_
およびDBA_
ビュー・セット全体に存在することに注意してください。権限のレベルに応じて、対応するビューにアクセスできます。
表4-3 SQLプロパティ・グラフのメタデータを取得するデータ・ディクショナリ・ビューのリスト
ビュー名脚注4 | 説明 |
---|---|
データベース内のすべてのプロパティ・グラフを記述します。 | |
データベース内のプロパティ・グラフのすべてのグラフ要素表を記述します。 | |
エッジ関係の定義に使用されるすべての列を記述します。 | |
グラフ要素表のキーとして使用されるすべての列を記述します。 | |
データベース内のプロパティ・グラフのラベルを記述します。 | |
データベース内のプロパティ・グラフのすべてのラベルのプロパティを記述します。 | |
ラベルのプロパティの定義に使用されるすべての列式を記述します。 | |
データベース内のプロパティ・グラフのすべてのグラフ要素表のすべてのラベルを記述します。 |
脚注4 ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。
次の例では、「SQLプロパティ・グラフの作成」で作成したSQLプロパティ・グラフ(students_graph
)に定義されたグラフ要素表を取得します。
SQL> SELECT * FROM USER_PG_ELEMENTS;
GRAPH_NAME ELEMENT_NAME ELEMENT_KIND OBJECT_OWNER OBJECT_NAME
-------------------- --------------- --------------- --------------- ---------------
STUDENTS_GRAPH PERSONS VERTEX GRAPHUSER PERSONS
STUDENTS_GRAPH UNIVERSITY VERTEX GRAPHUSER UNIVERSITY
STUDENTS_GRAPH FRIENDS EDGE GRAPHUSER FRIENDS
STUDENTS_GRAPH STUDENT_OF EDGE GRAPHUSER STUDENT_OF
親トピック: SQLプロパティ・グラフの作成
4.1.7 DBMS_METADATAパッケージを使用したSQL作成DDLの取得
DBMS_METADATA
パッケージを使用して、SQLプロパティ・グラフの作成DDLを取得できます。
次の例では、DBMS_METADATA
パッケージを使用して「SQLプロパティ・グラフの作成」で作成したグラフのDDLを表示します。
SQL> SELECT DBMS_METADATA.GET_DDL('PROPERTY_GRAPH', 'STUDENTS_GRAPH') FROM DUAL;
CREATE PROPERTY GRAPH "GRAPHUSER"."STUDENTS_GRAPH"
VERTEX TABLES (
"GRAPHUSER"."PERSONS" AS "PERSONS" KEY ("PERSON_ID")
LABEL PERSON PROPERTIES ("PERSON_ID", "NAME", "BIRTHDATE" AS "DOB")
LABEL PERSON_HT PROPERTIES ("HEIGHT"),
"GRAPHUSER"."UNIVERSITY" AS "UNIVERSITY" KEY ("ID")
PROPERTIES ("ID", "NAME") )
EDGE TABLES (
"GRAPHUSER"."FRIENDS" AS "FRIENDS" KEY ("FRIENDSHIP_ID")
SOURCE KEY("PERSON_A") REFERENCES PERSONS ("PERSON_ID")
DESTINATION KEY("PERSON_B") REFERENCES PERSONS ("PERSON_ID")
PROPERTIES ("FRIENDSHIP_ID", "MEETING_DATE"),
"GRAPHUSER"."STUDENT_OF" AS "STUDENT_OF" KEY ("S_ID")
SOURCE KEY("S_PERSON_ID") REFERENCES PERSONS ("PERSON_ID")
DESTINATION KEY("S_UNIV_ID") REFERENCES PERSONS ("ID")
PROPERTIES ("SUBJECT") )
OPTIONS (TRUSTED MODE, DISALLOW MIXED PROPERTY TYPES)
親トピック: SQLプロパティ・グラフの作成
4.1.8 SQLプロパティ・グラフの作成の制限事項
この項では、SQLプロパティ・グラフの作成時に適用されるいくつかの制限を示します。
- ビューは、SQLプロパティ・グラフのグラフ要素表として使用できません。
- ハイブリッド・パーティション表およびこれらの表から導出されたビューは、SQLプロパティ・グラフのグラフ要素表として使用できません。
- データベース・リンク、およびこれらのリンクを使用して定義されたビューは、SQLプロパティ・グラフのグラフ要素表として使用できません。
- オブジェクト表(
CREATE TABLE x OF myObjectType
で作成された表)およびオブジェクト・ビューは、SQLプロパティ・グラフのグラフ要素表として使用できません。 - XMLType表(
CREATE TABLE x OF XMLTYPE ...
で作成された表)は、SQLプロパティ・グラフのグラフ要素表として使用できません。ただし、SQL/XML演算子(SQL値式としてプロパティを定義するためにバイナリXMLとして格納される、XMLType
列に対するXMLExists()
、XMLCast(XMLQuery())
)は、サポートされています。 ANYTYPE
型の列は、プロパティまたはグラフ要素表のキーとして公開できません。- 疑似列は、プロパティまたはグラフ要素表のキーとして公開できません。
- PL/SQL関数への呼出しを構成する列式は、プロパティとして公開できません。同様に、PL/SQL関数への呼出しを構成する列式に対して定義された仮想列は、プロパティとして公開できません。
- SQLプロパティ・グラフはエディション化できません。
- SQLプロパティのグラフ定義は、グラフの作成後は変更できません。ただし、
CREATE PROPERTY GRAPH
DDL文のOR REPLACE
句を使用して、SQLプロパティ・グラフを再定義できます。 - シャード・カタログでは、SQLプロパティ・グラフの作成はサポートされていません。ただし、ローカル・シャード内のシャード表に対してプロパティ・グラフを作成できます。
親トピック: SQLプロパティ・グラフの作成