web-dev-qa-db-ja.com

データベースをモデル化するときに、弱いエンティティをいつ使用するべきですか?

これは基本的に弱いエンティティとは何かについての質問ですか?いつ使用すべきですか?彼らはどのようにモデル化されるべきですか?

通常のエンティティと弱いエンティティの主な違いは何ですか?ドメイン駆動設計を行う場合、弱いエンティティは値オブジェクトに対応しますか?

ここでトピックに関する質問を続けるのを助けるために、人々はこれらの質問に答えるために使用できる Wikipedia から取られた例です: enter image description here

この例では、OrderItemは弱いエンティティとしてモデル化されていますが、なぜ通常のエンティティとしてモデル化できないのか理解できません。
もう1つの質問は、注文履歴(つまり、ステータスの変化)を追跡したい場合、それは通常のエンティティまたは弱いエンティティでしょうか?

12
Songo

正式には「弱い」エンティティには、次の特性があります。

1.  It is existence-dependent on another entity, i.e., 
    it cannot exist without the entity with which it has a relationship.

2.  It inherits at least part of it's primary key from the entity to which 
    it is related. 


    i.e. -> A weak entity's primary key must be a composite key that includes 
       the primary key of the entity on which it is existence-dependent.

実際には、何かを「弱い」実体にするために、あからさまにdecideを行うことはないと思います。代わりに、モデル化しようとしているものを代表するようにデータを構造化します。これを行った後、特定のエンティティを見て、それが「弱い」エンティティの特性を持っている場合、何らかの理由でこれを明示的に呼び出す必要があると感じた場合、またはそれに応じて、それを文書化または図式化できます。正式の。

10
Ed Hastings

OrderItemは、注文または製品なしでは存在できません。したがって、依存関係によって制御されるため、脆弱です。

たとえば注文を削除すると、商品の発送先を知る方法がなくなります。または、商品を削除した場合、何を発送すればよいかわからなくなります。

1
jgauffin