1

私のプロジェクトには、識別関係を実際に使用する必要があるいくつかのモデルがありますが、速度と単純さの理由から、一意の自動インクリメント主キーを使用してそれらをセットアップしています。たとえば、連絡先の電子メール アドレス:

Public Class EmailAddress
    'This is currently the primary key
    Public Property EmailAddressID As Integer

    'These three properties really make a composite primary key in an identifying relationship with contacts
    Public Property ContactID As Integer
    Public Property Address As String
    Public Property Domain As String
End Class

このセットアップについて 2 つの質問があります。

  1. 複合キー内にフィールドを持つとnvarchar、DB を使用しないことを正当化するのに十分なほど DB の速度が低下しますか?
  2. 1 に「はい」の場合、(データ注釈または Fluent API のいずれかで) これが実際には人工的な主キーとの識別関係であることを EF に通知し、利点を享受する方法はありますか(見出し「識別および非識別に関する考慮事項」の下)関係」)?
4

1 に答える 1

2
  1. いいえ。キーは論理的なデータ整合性機能です。パフォーマンスは他の多くのものに依存します。

  2. リレーショナル モデルと SQL では、識別関係と非識別関係の区別はほとんど、またはまったく重要ではありません。このような用語は、概念モデルを理解するのに役立つかもしれませんが、データベースの設計を決定するための健全な基礎にはなりません。あなたが言及している主張されている「利点」は、本質的に単なる構文糖衣です。

于 2012-08-30T21:38:00.763 に答える