■SI Object Browser 掲示板
|
ユーザの皆様、開発者、サポート担当者の交流のための掲示板です! ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。 なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。 |
|
| ※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】 ※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。 ※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。 ※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。 | |
1つのテーブルに、同じキーを参照する外部キーを2つ作りたい
2002/10/08 16:24
OBER
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
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
返信を投稿
OBER
こかこ~ら
>1つのテーブルに、同じキーを参照する外部キーを2つ作りたいのですが、
>方法がわからず困っております。
確かに、こういうテーブルってよく作成しますよね
私も、OBERで、この問題に直面して、結局あきらめてしまいました。
機能的に無理みたいです。
(列と列をつなげられるようにすれば、可能になると思いますが、現在その機能は無いですね)
返信を投稿
OBER
たれ
>(列と列をつなげられるようにすれば、可能になると思いますが、現在その機能は無いですね)
この機能ほしいです・・(強く要望)。
Access にさえあるのに・・
自己参照するようなテーブルもつらいです。
複合キーの自己参照も上手く表現できないです(泣)。
あと、このツリーとは関係ないですが、
モデルエクスプローラのモデルの表示順番をこっちで指定できると
うれしいです(モデルエクスプローラとモデルリストの表示順違うし)。
モデルリストからも、ダイアグラムエディタのほうにドロップしたいです。
しかし、なんといっても、絶対、絶対、必要なのは、
アンドゥー機能。これだけでもほしい・・。
この機能ほしいです・・(強く要望)。
Access にさえあるのに・・
自己参照するようなテーブルもつらいです。
複合キーの自己参照も上手く表現できないです(泣)。
あと、このツリーとは関係ないですが、
モデルエクスプローラのモデルの表示順番をこっちで指定できると
うれしいです(モデルエクスプローラとモデルリストの表示順違うし)。
モデルリストからも、ダイアグラムエディタのほうにドロップしたいです。
しかし、なんといっても、絶対、絶対、必要なのは、
アンドゥー機能。これだけでもほしい・・。
返信を投稿
OBER