■SI Object Browser 掲示板


ユーザの皆様、開発者、サポート担当者の交流のための掲示板です!

ユーザーの皆様同士で教え合ったりもできる交流の場にしたいと思っていますので、相互協力をよろしくお願いします。
なお、過去に同じようなQ&Aがあるケースも多いので、投稿前にキーワード検索してみてください。

discussion
※各投稿のカラーは対象となる製品に対応しています。【■…OB ■…OBER ■…全般 ■…その他】
※ライセンスに関するお問合せにつきましては、お問い合わせページよりご連絡いただきますようお願いいたします。
※誹謗中傷や公序良俗に反する書き込みはご遠慮ください。運営側の判断によりメッセージを削除する場合があります。
※環境依存や技術的調査が必要な問題については掲示板上ではお答えしかねます。ご了承ください。
リレーションシップタイプ 2004/07/26 17:08 その他 4
リレーションのオブジェクト編集における「リレーションシップタイプ」で、ラジオボタンの「非依存」を選択すると、「親の存在は必須」チェックボックスが利用できるようになります。
ここで疑問に感じるのは、非依存(・・・ヘルプの説明では、「親エンティティのインスタンスがなくても存在できます。」と説明されている)なのに、親の存在が必須となるケースはどういう場合か、そもそもありうるのかという点です。
親の存在が必須のリレーションなのに、非依存型となるケース(あるいは、そのように設計書に記述する必要があるケース)の具体例をあげていただけるとありがたいです。
ご解説のほど、よろしくお願いいたします。
こんにちは
後迫@SIです。

お問い合わせいただきました件ですが、
ヘルプの説明不足です。
大変申し訳ございません。

厳密には、非依存であっても
親エンティティのインスタンスがなくてもよい場合と、必須の設定が可能です。

例えば、以下のような場合、

社員          出張申請 
-------------  -----------------
PK 社員コード    PK 申請No.
                申請社員コード(FK)

申請Noは社員ごとの連番ではないため社員に従属しませんが(非依存)、
申請の際は社員番号は必須という場合になります。

通常は上記のケースがほとんどですが、
以下のような場合、

得意先          出張申請     
--------------  -----------------
PK 得意先コード    PK 申請No.
                出向得意先コード(FK)

同様に非依存ですが、
客先以外の出張も申請できるようにするため、得意先コードは任意でよい
という場合は「親の存在は必須」のチェックははずします。

(ただし、「親の存在は必須」のチェックの可否は、
フォワード時に発行するSQLにはなんの影響も与えません。
ER図上のみの情報となります。)

ヘルプにつきましては、
次回のバージョンアップで修正いたします。

どうぞよろしくお願いいたします。



OBERおよびそのマニュアルでの「依存」「非依存」の定義ですが、
●依存・・・いわゆる「親子」の関係。第一正規化および第二正規化によって分かれたテーブル同士のリレーションである。親の主キーは子の主キー(の一部)となる。
●非依存・・・いわゆる「参照」の関係。第三正規化によって分かれたテーブル同士のリレーションである。参照先の主キーは参照元の非キー属性となる。
という理解でよろしいでしょうか。

その場合、ご説明いただいた内容について、
非依存のリレーションのうち、
●参照キーの属性がNOT NULL・・・親の存在は必須にチェックする。
●参照キーの属性がNULLを許容・・・親の存在は必須のチェックをはずす。
という理解でよろしいでしょうか。
こんにちは
後迫@SIです。

そうですね。
まとめるとそのようになります。
(わかりにくい説明で申し訳ございませんでした。)

どうぞよろしくお願いいたします。
ありがとうございました。
最後にもう1点だけ質問させてください。

ヘルプには、
「依存型リレーションシップを指定すると、親エンティティにある主キー属性の情報が、子エンティティの主キー属性に移行されます。」
「非依存型リレーションシップを指定すると、親エンティティにある主キー属性の情報が、子エンティティの非キー属性に移行されます。」
とありますが、
OBER3.0.0.2の試用版では、そのような動きはしないように見受けられます。いかがでしょうか。
よろしくお願いします。