0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

再帰リレーションシップをObject Browser ERで表現するやり方のメモ

Last updated at Posted at 2021-05-30

この記事では、Object Brower ER 8.0(以下、OBER)を使っています。
過去にER Studioを使っていたけれども現在Object Browser ERを使い始めたため、慣れるまでに気づいたことをメモしています。

はじめに

今回、再帰リレーションシップをうまく描くためにググってみたけれど見つからず、やり方を見つけるのに少し迷ったのでメモします。
なお、データモデルの記述方法はIDEF1xです。

再帰リレーションシップとは

image.png

例えば、新型コロナのような感染症の患者を管理するエンティティ上で感染元の患者番号を持たせるときに、
・ある1人の患者(元患者)が、複数の患者に感染を広げている
・元患者がいないこともある(NULLになる)
場合の表現が上記のようになります。

OBERでうまくいかなかったこと

OBERで再帰リレーションシップを表現しようと、以下の依存型リレーションシップ
image.png
を指定して当該エンティティをクリックすると、「依存型リレーションシップの参照が循環しています」というエラーが表示されてしまいます。
image.png

ER Studioの場合は(記憶が確かなら)当該エンティティを2回クリックすることで実現できた(リレーションを引くときの親と子に同じエンティティを指定する)のですが、OBERでは手順がリレーションの引き方も違うのでやり方を見つけるのに少し時間がかかってしまいました。

OBERで実現する方法

以下、実現することができた手順です。
(私の場合見た目で実現することが目的なのですが、見た目以外の機能に影響が出る場合はご指摘いただければ幸いです)

(1)「多対多型リレーションシップ」を選ぶ。

image.png

(2)再帰させたいエンティティをクリックすると、多対多のリレーションが追加される。

image.png

(3)追加されたリレーションをダブルクリックで選択し、「リレーションタイプ」を「非依存」に変更し、「親の存在は必須」のチェックボックスを外す。
image.png

これで、欲しい形のリレーションが追加されたので、レイアウトを整えれば完了です。
image.png

ちなみに・・・OBERでのリレーション位置の初期化対策をご存知の方いらしたら・・・

ちなみに本文とは関係ありませんが、OBERで何らかの変更(エンティティを移動したり、オブジェクトサイズ最適化をしたり etc.)を加えた瞬間、リレーションの位置がデフォルトの位置に戻るのですが(以下)、これを発生させない方法をご存知の方いらっしゃったらぜひ教えてください:bow_tone1:
(レイアウトが命のデータモデルで、この修正作業が大変で大変で・・・TT)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?