フォーラムを調べましたが、探しているものを正確に見つけることができないようです。スーパータイプの従業員と、従業員の主キー ID を参照する 3 つのサブタイプがあります。従業員のサブタイプは互いに素でなければなりません。私の問題は、これを実現するための制約をどこに置くべきかわからないという点で発生します。
CREATE TABLE Employee(
ID INT,
PRIMARY KEY(ID));
CREATE TABLE Manager(
ID INT,
Salary INT NOT NULL,
PRIMARY KEY(ID),
FOREIGN KEY(ID) REFERENCES Employee(ID));
CREATE TABLE Server(
ID INT,
Tips INT NOT NULL,
PRIMARY KEY(ID),
FOREIGN KEY(ID) REFERENCES Employee(ID));
CREATE TABLE Hostess(
ID INT,
hourly_sal INT NOT NULL,
PRIMARY KEY(ID),
FOREIGN KEY(ID) REFERENCES Employee(ID));
以下に示すように、交差する値のビューを介して制約を作成し、ビューのエントリを null のみに制限する制約を作成することを考えました。
CREATE VIEW EMPLOYEE_DISJOINT AS
((SELECT ID FROM Server)INTERSECT (SELECT ID FROM Hostess))
UNION
((SELECT ID FROM Hostess) INTERSECT (SELECT ID FROM Manager))
UNION
((SELECT ID FROM Server) INTERSECT (SELECT ID FROM Manager));
ALTER VIEW EMPLOYEE_DISJOINT
ADD CONSTRAINT disjoint CHECK(ID = NULL);
従業員のすべての主キーが従業員の唯一のサブタイプに固有であることを要求するビューに制約を作成しようとしています。これを行うより良い方法はありますか?この方法は機能するはずですが、次のエラーが発生します。
ADD CONSTRAINT disjoint CHECK(ID = NULL)
*
ERROR at line 2:
ORA-00922: missing or invalid option
助けてください、または私が見つけたかもしれないどこかの方向に私を向けてください! ありがとうございます!