Aracılığıyla paylaş


Varlık Veri Modeli Temel Kavramları

Varlık Veri Modeli (EDM), verilerin yapısını açıklamak için üç temel kavram kullanır: varlık türü, ilişkilendirme türü ve özellik. Bunlar, EDM'nin herhangi bir uygulamasındaki verilerin yapısını açıklamaya yönelik en önemli kavramlardır.

Varlık Türü

Varlık türü, Varlık Veri Modeli ile verilerin yapısını açıklamaya yönelik temel yapı taşıdır. Kavramsal modelde varlık türleri özelliklerden oluşturulur ve bir iş uygulamasındaki müşteriler ve siparişler gibi üst düzey kavramların yapısını açıklar. Bir bilgisayar programındaki sınıf tanımının sınıfın örnekleri için bir şablon olmasıyla aynı şekilde, varlık türü varlıklar için bir şablondur. Varlık, belirli bir nesneyi (belirli bir müşteri veya sipariş gibi) temsil eder. Her varlığın bir varlık kümesi içinde benzersiz bir varlık anahtarı olmalıdır. Varlık kümesi, belirli bir varlık türünün örneklerinden oluşan bir koleksiyondur. Varlık kümeleri (ve ilişkilendirme kümeleri) bir varlık kapsayıcısında mantıksal olarak gruplandırılır.

Devralma, varlık türleriyle desteklenir: başka bir ifadeyle, bir varlık türü başka bir varlık türünden türetilebilir. Daha fazla bilgi için bkz . Varlık Veri Modeli: Devralma.

İlişkilendirme Türü

İlişkilendirme türü (ilişkilendirme olarak da adlandırılır), Varlık Veri Modeli'ndeki ilişkileri açıklamaya yönelik temel yapı taşıdır. Kavramsal modelde ilişki, iki varlık türü (Müşteri ve Sipariş gibi) arasındaki ilişkiyi temsil eder. Her ilişkilendirme, ilişkilendirmeye dahil olan varlık türlerini belirten iki ilişkilendirme ucuna sahiptir. Her ilişkilendirme sonu, ilişkilendirmenin sonunda bulunabilecek varlık sayısını gösteren bir ilişkilendirme sonu çokluğunu da belirtir. İlişki sonu çokluğu bir (1), sıfır veya bir (0..1) veya çok (*) değerine sahip olabilir. İlişkilendirmenin bir ucundaki varlıklara gezinti özellikleri aracılığıyla veya bir varlık türünde kullanıma sunulan yabancı anahtarlar aracılığıyla erişilebilir. Daha fazla bilgi için bkz . yabancı anahtar özelliği.

Bir uygulamada, bir ilişkilendirme örneği belirli bir ilişkiyi temsil eder (örneğin, bir Müşteri örneği ile Sipariş örnekleri arasındaki ilişki). İlişkilendirme örnekleri bir ilişkilendirme kümesinde mantıksal olarak gruplandırılır. İlişkilendirme kümeleri (ve varlık kümeleri) bir varlık kapsayıcısında mantıksal olarak gruplandırılır.

Özellik

Varlık türleri, yapılarını ve özelliklerini tanımlayan özellikler içerir. Örneğin, bir Müşteri varlık türünün CustomerId, Name ve Address gibi özellikleri olabilir.

Kavramsal modeldeki özellikler, bilgisayar programındaki bir sınıfta tanımlanan özelliklere benzer. Bir sınıftaki özelliklerin sınıfın şeklini tanımlaması ve nesneler hakkında bilgi taşıması gibi, kavramsal modeldeki özellikler bir varlık türünün şeklini tanımlar ve varlık türü örnekleri hakkında bilgi taşır.

Bir özellik ilkel veriler (dize, tamsayı veya Boole değeri gibi) veya yapılandırılmış veriler (karmaşık bir tür gibi) içerebilir. Daha fazla bilgi için bkz . Varlık Veri Modeli: Temel Veri Türleri.

Kavramsal Modelin Gösterimleri

Kavramsal model, bazı verilerin varlık ve ilişki olarak yapısının belirli bir gösterimidir. Kavramsal modeli temsil etmenin bir yolu diyagramdır. Aşağıdaki diyagram üç varlık türüne (, Publisherve ) ve iki ilişkilendirmeye (PublishedByBook ve AuthorWrittenBy) sahip bir kavramsal modeli temsil eder:

Diagram showing a conceptual model with three entity types.

Ancak bu gösterimin, modelle ilgili bazı ayrıntıları iletme konusunda bazı eksiklikleri vardır. Örneğin, özellik türü ve varlık kümesi bilgileri diyagramda aktarılmaz. Kavramsal modelin zenginliği, etki alanına özgü bir dil (DSL) ile daha net bir şekilde aktarılabilir. ADO.NET Entity Framework, kavramsal modelleri tanımlamak için kavramsal şema tanım dili (CSDL) adlı XML tabanlı bir DSL kullanır. Yukarıdaki diyagramda kavramsal modelin CSDL tanımı aşağıdadır:

  <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm"
          xmlns:cg="http://schemas.microsoft.com/ado/2006/04/codegeneration"
          xmlns:store="http://schemas.microsoft.com/ado/2007/12/edm/EntityStoreSchemaGenerator"
          Namespace="BooksModel" Alias="Self">
    <EntityContainer Name="BooksContainer" >
      <EntitySet Name="Books" EntityType="BooksModel.Book" />
      <EntitySet Name="Publishers" EntityType="BooksModel.Publisher" />
      <EntitySet Name="Authors" EntityType="BooksModel.Author" />
      <AssociationSet Name="PublishedBy" Association="BooksModel.PublishedBy">
        <End Role="Book" EntitySet="Books" />
        <End Role="Publisher" EntitySet="Publishers" />
      </AssociationSet>
      <AssociationSet Name="WrittenBy" Association="BooksModel.WrittenBy">
        <End Role="Book" EntitySet="Books" />
        <End Role="Author" EntitySet="Authors" />
      </AssociationSet>
    </EntityContainer>
    <EntityType Name="Book">
      <Key>
        <PropertyRef Name="ISBN" />
      </Key>
      <Property Type="String" Name="ISBN" Nullable="false" />
      <Property Type="String" Name="Title" Nullable="false" />
      <Property Type="Decimal" Name="Revision" Nullable="false" Precision="29" Scale="29" />
      <NavigationProperty Name="Publisher" Relationship="BooksModel.PublishedBy"
                          FromRole="Book" ToRole="Publisher" />
      <NavigationProperty Name="Authors" Relationship="BooksModel.WrittenBy"
                          FromRole="Book" ToRole="Author" />
    </EntityType>
    <EntityType Name="Publisher">
      <Key>
        <PropertyRef Name="Id" />
      </Key>
      <Property Type="Int32" Name="Id" Nullable="false" />
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="String" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.PublishedBy"
                          FromRole="Publisher" ToRole="Book" />
    </EntityType>
    <EntityType Name="Author">
      <Key>
        <PropertyRef Name="Name" />
        <PropertyRef Name="Address" />
      </Key>
      <Property Type="String" Name="Name" Nullable="false" />
      <Property Type="String" Name="Address" Nullable="false" />
      <NavigationProperty Name="Books" Relationship="BooksModel.WrittenBy"
                          FromRole="Author" ToRole="Book" />
    </EntityType>
<Association Name="PublishedBy">
      <End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
      <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
    </Association>
    <Association Name="WrittenBy">
      <End Type="BooksModel.Book" Role="Book" Multiplicity="*" />
      <End Type="BooksModel.Author" Role="Author" Multiplicity="*" />
    </Association>
  </Schema>

Ayrıca bkz.