web-dev-qa-db-ja.com

オプション性(必須、オプション)と参加性(合計、部分的)は同じですか?

私が知っているように、オプション性とは、オプションからオプション、必須からオプション、必須から必須として示される関係の最小カーディナリティを意味します。

太字と通常の線で示される参加。

インターネットでは、参加をエンティティの依存関係と呼ぶ人もいます。これは、関係の識別と非識別のようにも見えます。

そしてそれを最小カーディナリティと呼ぶ人もいます

これらの関係の正しい定義とは何か、違いは何ですか。

10
upeksha1996

各概念の定義と例から始めましょう。

合計および部分的な参加:

合計参加(二重または太い関連付け線で示される)は、エンティティセット内のすべてのエンティティが関係に参加する必要があることを意味します。部分的な参加(単一の細い線で示される)は、関係に参加しないエンティティがエンティティセットに存在する可能性があることを意味します。

Total and partial relationship

Medicineは、Produce関係に完全に参加しています。つまり、MedicineProducedによってLaboratoryでない限り、存在することはできません。対照的に、Laboratoryは、ProducingMedicineなしで存在できます。Laboratoryは、Produceリレーションシップに部分的に参加します。

必須およびオプションの役割:

関係では、役割はオプションでも必須でもかまいません。これは、関係インスタンスが特定の役割のエンティティなしで存在できるかどうかに影響します。必須の役割は実線の関連線で示され、オプションの役割は点線で示されています。

Mandatory and optional entities

ロールはデータベースチュートリアルで頻繁に取り上げられることはありませんが、重要な概念です。結婚について考えてみましょう-同じエンティティセットによって満たされた2つの必須の役割との関係。ほとんどの関係では、エンティティセットも役割を定義しますが、エンティティセットが単一の関係で複数回出現する場合、それらを異なる役割で区別します。

上記の例では、PatientPurchaseの有無にかかわらずMedicinePrescriptionにすることができます。 Purchaseは、PatientMedicineなしでは存在できませんが、Prescriptionはオプションです(特定のケースで必要になる場合もありますが)。

識別関係/弱いエンティティ:

弱いエンティティとは、それ自体の属性で識別できないエンティティであり、そのエンティティの一部として別のエンティティのキ​​ーを持っています。識別関係は、弱いエンティティとその親エンティティの間の関係です。識別関係と弱いエンティティーの両方が二重の境界線で示されています。弱いエンティティセットは、識別関係に完全に参加する必要があります。

Identifying relationship / weak entities

この例では、PrescriptionにはLineItemsのキーと行番号で識別されるPrescriptionが含まれています。つまり、LineItemsテーブルには複合キー(Prescription_ID, Line_Number)

非識別関係の例については、前の例を参照してください。 Medicineは完全にProduce関係に参加しますが、独自のIDを持っています(たとえば、サロゲートキーですが、指定しませんでした)。代理キーは常に通常のエンティティを意味することに注意してください。

必須/オプションvs合計/部分参加

必須またはオプションの役割は、関係が存在するために特定の役割(および関連するエンティティセット)が必要かどうかを示します。全体的または部分的な参加は、エンティティが存在するために特定の関係が必要かどうかを示します。

必須の部分参加:上記を参照:Laboratoryは医薬品を生産せずに存在できますが、MedicineProducedなしでLaboratoryにすることはできません。

必須の合計参加:上記を参照してください:Medicineは、Producedでなければ、存在できません。また、Laboratoryは、指定されていないものをProduceにすることはできません。

オプションの部分参加:上記を参照:PrescriptionPurchasedでなくても存在でき、PurchasePrescriptionなしで存在できます。

それはオプションの合計参加を残します、私は例を見つけるために少し考える必要がありました:

Optional total participation

不明なPatientsDieCauseがいくつかありますが、CausePatientがないと、死のDyingは存在できません。

合計/部分的な参加と特定/非特定の関係

前に述べたように、弱いエンティティセットは、常にそれらの識別関係に完全に参加します。上記を参照してください。LineItemContainedではPrescriptionである必要があります。IDと存在はそれに依存します。特定の関係に部分的に参加することはできません。

完全な参加は、識別関係を意味するものではありません。Medicineは、ProducedによってLaboratoryにならないと存在できませんが、Medicineは独自の属性によって識別されます。

身元不明の関係への部分的な参加は非常に一般的です。たとえば、MedicinePurchasedでなくても存在でき、Medicineは独自の属性によって識別されます。

必須/オプションvs識別/非識別関係

関係の必須の役割が2つ未満であるのは珍しいことです。識別関係はバイナリ関係であるため、親と子の役割は必須です。ContainPrescriptionの間のLineItem関係は、両方のエンティティなしでは存在できません。

オプションの役割は通常、三元以上の関係でのみ見られ(原因が死亡する患者の例を参照)、特定には関与しません。オプションの役割の代わりに、関係の関係があります。

Associative entity

Purchaseを関連エンティティに変換することで、FillとのPrescription関係に参加させることができます。上記と同じセマンティクスを維持するために、PurchaseFillに1つだけPrescriptionを指定できると指定しました。

物理モデリング

概念モデルから物理モデルに変換して(論理モデリングをスキップし、さらに正規化して)、エンティティと関係ごとに個別のテーブルを作成すると、状況はかなり似ていますが、外部キー行のカーディナリティインジケーターを読み取って、 ERセマンティクス。

Physical model examples

ただし、同じ主キーを持つテーブルを非正規化することは一般的です。つまり、1対多の関係が多側のエンティティテーブルと結合されます。

Denormalized died relationship

関係は、テーブル内の2つ以上のエンティティキーとして物理的に表されます。この場合、エンティティキー-patient_idおよびcause_of_death_idはどちらもPatientテーブルにあります。多くの人々は、外部キーラインが関係を表していると考えていますが、これは、エンティティ関係モデルと古いネットワークデータモデルを混同しているためです。

これは重要なポイントです。さまざまな種類の関係と関係の制約を理解するためには、どの関係が最初にあるかを理解することが不可欠です。 ERの関係は、テーブル間ではなく、キー間の関連付けです。関係は、異なるエンティティセットの任意の数のロールを持つことができますが、外部キー制約は、1つのエンティティセットの2つの列間にサブセット制約を適用します。さて、この知識で武装して、私の答え全体をもう一度読んでください。 ;)

これがお役に立てば幸いです。お気軽にご質問ください。

36
reaanb