私はデータベースを研究していて、現在オブジェクトリレーショナルDBプロジェクトに取り組んでいますが、オブジェクトテーブルで発生する可能性のある制約の数に小さな問題が発生しました。私はHectorGarcia-Molina(および他の著者)による「DatabaseSystems:The Complete Book」を参照として使用しており、次のような一般的なSQLの例があります。
CREATE TYPE StarType AS (
name CHAR(30),
address AddressType,
bestMovie REF(MovieType) SCOPE Movies
);
現在、プロジェクトには同様のタイプがあります。これは、タイプ内の別のタイプへの参照も使用するためですが、そこに参照を配置するための句には、OracleにSCOPEが含まれていません(少なくとも私はそれを見つけていません)ドキュメントにあり、エラーを出力します)。だから私はこのようなタイプを持っています:
CREATE OR REPLACE TYPE "ApplicationType" AS OBJECT (
"person" REF "PersonType",
"competition" REF "CompetitionType",
"dateApplied" DATE
);
/
...これは機能します。ただし、REF列を制約する場合は、次のように1つしか制約できません。
CREATE TABLE "Applications" OF "ApplicationType" (
"person" SCOPE IS "People" /* or "competition" SCOPE IS "Competitions" */
)
OBJECT IDENTIFIER IS SYSTEM GENERATED;
両方のREF列に制約を与える方法はありますか?