現在、基本的に「アイテム」間のグラフを作成するアプリケーションに取り組んでいます。これらのアイテム間にはさまざまな種類のリンクがあると思いますが、特に双方向リンクをモデル化する方法を決定するのに苦労しています。
1. 例:
ItemB --isChildOf---> ItemA
ItemA --isMasterOf--> ItemB
同じものを次のようにモデル化できると思います。
例 2
ItemA <---> ItemB
私のデータベースモデルでは、現在、次のようにリンクをモデル化しています。
* sourceID
* targetID
* relationType (e.g. isMasterOf, isChildOf, maybe more...)
テーブルのフィールドとして方向も必要ですか? IMO の方向は sourceID と targetID によって暗黙的に定義されるため、これまでのところ別のフィールドとしては使用していません。
どのような状況で例 1 が必要になり、どのような場合に例 2 で十分かわかりません。例 1 は Twitter のようなもので、UserA は userB をフォローできますが、その逆はできないと思います。一方、私の意見では、Facebook は常に Example2 です。
私の質問が理にかなっていることを願っています。