たとえば、親と子の2 つのエンティティがあるとします。
親が削除されると、すべての子も削除されます。
偉大な。
これでloverというエンティティができました。
一人一人が他の多くの個人を「愛し」、多くの人に愛されることができます。
個人が削除した場合はどうなりますか?
カスケード削除:
- まったく機能しませんか?
- あなたを愛する最後の人が削除されたら、あなたも削除しますか?
または何?
たとえば、親と子の2 つのエンティティがあるとします。
親が削除されると、すべての子も削除されます。
偉大な。
これでloverというエンティティができました。
一人一人が他の多くの個人を「愛し」、多くの人に愛されることができます。
個人が削除した場合はどうなりますか?
カスケード削除:
または何?
このように to-many でカスケードを使用するべきではないと思います。なぜなら、削除したオブジェクトの恋人をすべて削除するので、さらに進んでデータベース全体を削除する可能性があるからです。
したがって、loverInfoなどの中間 (「結合」) エンティティを用意することをお勧めします。これは、友人関係に基づいて、アップルがあなたにそれを行うように提案する方法です.
それ自体の逆である多対多の関係として最初にモデル化された関係の一般的な例は、「友達」です。あなたがいとこのいとこである場合は、彼らが好むと好まざるとにかかわらず、あなたがあなたの友人の友人であるとは限りません。この種の関係には、中間 (「結合」) エンティティを使用する必要があります。中間エンティティの利点は、関係にさらに情報を追加するためにも使用できることです。たとえば、「FriendInfo」エンティティには、「ランキング」属性を使用して友情の強さの指標を含めることができます。これはここに示されています
この例では、Person は FriendInfo に対して 2 対多の関係を持っています。friends はソースの人物の友人を表し、befriendedBy はソースを友人として数えている人を表します。FriendInfo は、「一方向」の 1 つの友情に関する情報を表します。与えられたインスタンスは、ソースが誰であるか、および彼らが友人であると考える 1 人を記録します。感情が相互である場合、ソースと友人が入れ替わる対応するインスタンスがあります。この種のモデルを扱う際には、他にもいくつかの考慮事項があります。
ある人から別の人への友情を確立するには、FriendInfo のインスタンスを作成する必要があります。両方の人がお互いを気に入っている場合は、FriendInfo の 2 つのインスタンスを作成する必要があります。
友情を壊すには、FriendInfo の適切なインスタンスを削除する必要があります。