■SI ObjectBrowser掲示板

ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!discussion
ユーザーのみなさま同士で教え合ったり、アドバイスしたりする暖かい交流の場にしたいと思っていますので、相互協力をよろしくお願いします。なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

※◆のカラーは投稿の対象となる製品に対応しています。【…OB …OBER …全般 ◇…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。




投稿No.532
ツリー表示
2002/10/08 16:24:18
ハンドルネーム いとう
製品 OBER
タイトル 1つのテーブルに、同じキーを参照する外部キーを2つ作りたい
メッセージ本文 いとうと申します。
OBERのトライアル版を試用させていただいてます。

1つのテーブルに、同じキーを参照する外部キーを2つ作りたいのですが、
方法がわからず困っております。

例えば、以下のような2つの表があるとします。

社員マスタ表
-------------
●社員コード
 氏名

受注情報表
-------------
●受注番号
 受注担当者
 確認担当者

※ ●は主キーを表す

ここで、社員マスタ表の社員コード列を参照する外部キーを、
受注担当者列と確認担当者列、それぞれに作成するとします。
SQL文に直すと・・・

ALTER TABLE 受注情報
ADD(CONSTRAINT FK_受注担当 FOREIGN KEY(受注担当者)
REFERENCES 社員マスタ (社員コード))
/
ALTER TABLE 受注情報
ADD(CONSTRAINT FK_確認担当 FOREIGN KEY(確認担当者)
REFERENCES 社員マスタ (社員コード))
/

のようにしたいのですが、OBERでリレーションを作成し、
フォワードエンジニアリングのプレビューのSQL文を表示すると、

ALTER TABLE 受注情報
ADD(CONSTRAINT FK_受注担当 FOREIGN KEY(受注担当者,確認担当者)
REFERENCES 社員マスタ (社員コード))
/
ALTER TABLE 受注情報
ADD(CONSTRAINT FK_確認担当 FOREIGN KEY(受注担当者,確認担当者)
REFERENCES 社員マスタ (社員コード))
/

のように、受注担当者列と確認担当者列の2列で、社員コード列を
参照するリレーションを、2つ作るようなSQL文が生成され、参照する列の数が、
参照される列の数と一致しないので、エラーになってしまいます。


また、

ALTER TABLE 受注情報
ADD(CONSTRAINT FK_受注担当 FOREIGN KEY(受注担当者)
REFERENCES 社員マスタ (社員コード))
/
ALTER TABLE 受注情報
ADD(CONSTRAINT FK_確認担当 FOREIGN KEY(確認担当者)
REFERENCES 社員マスタ (社員コード))
/

のSQL文で作ったリレーションをリバースエンジニアリングし、
フォワードエンジニアリングし直そうとた場合も、

ALTER TABLE 受注情報
ADD(CONSTRAINT FK_受注担当 FOREIGN KEY(受注担当者,確認担当者)
REFERENCES 社員マスタ (社員コード))
/
ALTER TABLE 受注情報
ADD(CONSTRAINT FK_確認担当 FOREIGN KEY(受注担当者,確認担当者)
REFERENCES 社員マスタ (社員コード))
/

のようなSQL文に修正されてしまいます。
上記のような問題を回避する方法がございましたら、
ご教示ください。
##長文、失礼いたしましたm(_ _)m

環境
サーバーOS:WindowsNT 4.0
クライアントOS:Windows2000 SP2
Oracle:Oracle 8.0.5
OBER:1.2.1.10
元の文章を引用して返信