弱い/強い関係:強い関係とは、依存エンティティが関係から離れて存在できないことを意味します。たとえば、クラス、コース、部屋を考えてみましょう。次の会話を想像してください。
"I think I'll teach a class this September."
"Good. What course will you teach?"
"I haven't decided yet."
まあ、この講師がコースを決めるまでは、授業なんてあり得ない。クラスを作成する前にコースを指定する必要があるため、関係は強力です。また、どちらの授業を受けるかというと、「ビーズレンダリング」の授業と「サイバークラフト」の授業は、同じ時間に同じ部屋で同じ時間に(別の日に)開催されても、まったく別のものです。各クラスのアイデンティティはコースに容赦なく結びついています。したがって、この関係は識別でもあります。
"I think I'll reach Discretionary Logic this September."
"Good. What room will it be in?"
"I haven't decided yet."
ルームが割り当てられていなくても、クラスは引き続き存在できます。はい、学期が始まる前に部屋を割り当てる必要がありますが、現時点ではまだクラスを作成し、カタログに「TBD」を入力して、学生が登録できるようにすることができます。クラスは部屋がなくても (しばらくの間) 存在できるため、関係は弱いです。また、"Discretionary Logic" の 2 つのクラスは、別の部屋で教えられていますが、機能的には同等です。部屋との関係はクラスの種類とは関係ありません。関係は非識別です。
ですから、17号室でビーズレンダリングを申し込んでいた生徒が、12号室に変わったと知らされても、「これはまったく別の授業だ!」とは思わないでしょう。いいえ、場所が違うだけでクラスは同じです。しかし、今のクラスは「中古のカーニバルスタッフィング」であると言われれば、彼らは正しいでしょう. これで、完全に別のクラスになりました。これが、識別関係と非識別関係の違いです。
単項/再帰関係:すべての関係が少なくとも 2 つのエンティティで構成されていることを理解することが重要です。このように、データベースの関係は人間の関係に似ています。Tango には 2 つ必要です。「単項」とは、関係の両側が同じ論理エンティティで満たされていることを意味します。
Class エンティティと Room エンティティの間の "meets in" 関係は、たとえば 2 つの Class エンティティまたは 2 つの Room エンティティ間では満たすことができないことが簡単にわかります。ただし、「によって管理されている」関係には、両側に Employee エンティティが必要です。また、従業員が存在するためにこの関係を必要としないことも明らかです。おそらく、その従業員は新入社員であり、まだマネージャーを割り当てられていません。従業員がこの特定の組織のリード ドッグである可能性があり、他の従業員はその法案に適合するに値しません。
または、キャロルに管理されていたピートがサラに管理されたとしても、ピートの性質は変わっていません。彼に聞いてみてください。
したがって、この単項関係は弱い/非識別的です。また、Pete が Carol によって管理され、Sam によって管理されるという点でも再帰的です。
単項リレーションシップも再帰的になる傾向がありますが、これはリレーションシップの要件ではなく設計の効果です。たとえば、「結婚している」という関係は単項になりますが、再帰的ではありません。再帰が可能な方法で実装された場合、それを防ぐために注意を払う必要があります。
「主キー」または「外部キー」についてどこにも言及していないことに注意してください。これらは実装の詳細であり、関係のタイプの特性ではありません。これらの用語を使用したり、考えたりしなくても、関係の概念を完全に理解できます。
そうは言っても、完全に主観的な用語ではないにしても、識別と非識別は文脈に敏感であることを指摘しておく必要があります。たとえば、大学が同じ学期中に同じコースの複数のクラスをスケジュールすることは完全に合理的です。したがって、部屋 3 に「代数 2」のクラスがあり、部屋 7 に別の「代数 2」のクラスがあり、さらに部屋 12 に別のクラスがある可能性があります。これにより、クラスと部屋の関係が大幅に強化されます。現在、「私は代数 2 を受講しています」という記述は、3 つのクラスのどれに登録されているかを特定するには不十分な情報です。
これに加えて、4 番目の「代数 2」のクラスも、他のクラスと同じ部屋で、別の時間または日に開催することができます。
したがって、弱い関係を使用した初期設計は、一部のコンテキスト (学期中に任意のコースのクラスを 1 つだけ開催する小規模な学校) では問題なく機能する可能性がありますが、別のコンテキストでは強い関係にする必要があります (または同じ学期に同じコースの複数のクラスを提供する場合があります)。したがって、これはエンティティのタイプに固有のものではありません。ER図を見ただけでは、事前に判断することはできません。