1

まず、私が使用している用語が明確であることを確認するためのいくつかの定義:

  1. 強いエンティティと弱いエンティティ、および強い/識別関係と弱い/非識別関係: ERD では、弱い/非識別関係は 2 つの強いエンティティを接続する関係であり、破線で示されます。強い/識別関係は、強いエンティティを弱いエンティティ (つまり、関連するエンティティの主キー [PK] を独自のコンポーネント主キーのコンポーネントとして含むエンティティ) に接続する関係であり、実線。

    たとえば、次の図を考えてみましょう (別の投稿から借用):

サンプルERD

コース (強いエンティティ) とクラス (弱いエンティティ) の間の関係は強い関係 (実線) です。これは、クラスが独自の PK (*CID,*Date) の一部としてコースの PK (*CID) を含むためです。対照的に、Room の PK (*RID) は Class の PK の一部ではないため、Room (強いエンティティ) と Class (弱いエンティティであっても) の関係は弱いです。

  1. 単項/再帰関係:ほとんどの関係は、2 つの別個のエンティティを接続するという点で、バイナリです。たとえば、Course と Class の間の関係、および Room と Class の間の関係は、2 項関係です。まれに、エンティティがそれ自体と関係を持っている場合に、単項 (再帰とも呼ばれます) の関係があります。この図では、唯一の単項関係は Employee エンティティとの関係です。1 人の従業員が 0 人から多数の従業員を管理する可能性があるという事実を表すため、「管理する」というラベルを付ける必要があります。すべての従業員は、1 人の従業員のみによって管理されます。Employee の PK は *EmpID であり、関係をリンクする外部キー (FK) は Manager です。

それで、ここに私の質問があります:単項関係は強い/識別的ですか、それとも弱い/非識別的ですか? 一方の側 (従業員、*EmpID) の PK は、多側 (再び、従業員、*EmpID) の PK の一部であるだけでなく、完全な構成要素です。したがって、これは、サンプル ダイアグラムに示されているものとは対照的に、実線で強い関係であることを示しています。誰か私のためにこれを明確にしてもらえますか?

4

3 に答える 3

0

あなたの「強い」対「弱い」の定義がどこから来ているのか完全にはわかりませんが (これは言語の問題かもしれません)、私が見る限り、次のように考えることができます:他の人が存在しなくなった場合、または関係が失われた場合に存在します。あなたの例では、が廃棄されたClassときに存在することはできません。Courseこれは、他のテーブルを含む 1 つのテーブルの PK によって表現できますが、必ずしもそうとは限りません。(まったく異なる理由で) PK としてClass独自のものを持ち、FK としてのみを使用することができます。それによって、これら 2 つのエンティティの事実上の関係が変わることはありません。idCID

一方、 と のようなものがある場合CarsDriversそれらには弱いリンクがあります。削除された (死んだ) ドライバーが突然車を消滅させることはありません。同様に、車が盗まれても、通常、ドライバーがすぐに心臓発作を起こすことはありません。これは「弱い」リンクです。もう一方がなくなっても、この2つは存在し続けることができます。

従業員の場合、関係が失われたり、他のエンティティがなくなったりしても、2 人は存在し続けます。したがって、それは弱いリンクです。また、PK とは何かに基づく定義に固執することは、PKManagerの FKEmployeeであり、通常はPK とは異なり、PK の一部ではありません。企業の階層内で自分のマネージャーになっている人を見つけることはめったにないためです。

于 2015-10-02T02:33:17.630 に答える
0

弱い/強い関係:強い関係とは、依存エンティティが関係から離れて存在できないことを意味します。たとえば、クラス、コース、部屋を考えてみましょう。次の会話を想像してください。

"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図を見ただけでは、事前に判断することはできません。

于 2015-10-07T00:06:56.047 に答える
0

特に@TommCattの回答からの質問の再考に基づいて、私の混乱は、強い/識別関係の私の不完全な定義に起因する可能性があるようです:「強い/識別関係は、強いエンティティを弱いエンティティに接続するものです(関連エンティティの主キー [PK] を自身の主キーの構成要素として含むエンティティ) であり、実線で示されます。

定義の欠陥部分は、「関連エンティティの主キー [PK] を自身のコンポーネントのコンポーネントとして含むエンティティ」です。より正確には、「関連エンティティからの外部キー [FK] を自身の主キー [PK] のコンポーネントとして含むエンティティ」と言うべきでした。

その観点から、単項関係が強くない理由は明らかです。単項関係の FK は PK の一部ではありません。したがって、関係は弱く、破線で表されます。

于 2015-10-27T02:29:16.323 に答える