Share via


Az entitás adatmodellje alapfogalmai

Az entitásadat-modell (EDM) három fő fogalmat használ az adatok szerkezetének leírására: entitástípus, társítás típusa és tulajdonsága. Ezek a legfontosabb fogalmak az adatok szerkezetének leírásában az EDM bármely implementációjában.

Entitás típusa

Az entitástípus az entitás adatmodellel való adatszerkezetének leírásának alapvető építőeleme. A fogalmi modellben az entitástípusok tulajdonságokból épülnek fel, és leírják a legfelső szintű fogalmak szerkezetét, például egy üzleti alkalmazásban lévő ügyfeleket és megrendeléseket. Ugyanúgy, ahogyan a számítógépes programok osztálydefiníciója az osztálypéldányok sablonja, az entitástípus entitások sablonja. Az entitások egy adott objektumot (például egy adott ügyfelet vagy megrendelést) jelölnek. Minden entitásnak egyedi entitáskulcsot kell tartalmaznia egy entitáskészleten belül. Az entitáskészlet egy adott entitástípus példányainak gyűjteménye. Az entitáskészletek (és társításkészletek) logikailag egy entitástárolóba vannak csoportosítva.

Az öröklést entitástípusok támogatják: vagyis az egyik entitástípus egy másikból származtatható. További információ: Entity Data Model: Öröklés.

Társítás típusa

A társítási típus (más néven társítás) az entitásadat-modellben lévő kapcsolatok leírásának alapvető építőeleme. Egy elméleti modellben a társítás két entitástípus (például Ügyfél és Rendelés) közötti kapcsolatot jelöl. Minden társításnak két társítása van , amelyek meghatározzák a társításban érintett entitástípusokat. Minden társításvég egy társítás végének szorzását is megadja, amely azt jelzi, hogy hány entitás lehet a társítás végén. A társítás végsokszorosságának értéke lehet egy (1), nulla vagy egy (0..1) vagy több (*). A társítás egyik végén lévő entitások navigációs tulajdonságokon vagy idegen kulcsokon keresztül érhetők el, ha egy entitástípuson vannak közzétéve. További információ: idegenkulcs-tulajdonság.

Az alkalmazásokban a társítás egy példánya egy adott társítás (például egy ügyfélpéldány és a rendeléspéldányok közötti társítás). A társításpéldányok logikailag egy társításhalmazba vannak csoportosítva. A társításkészletek (és entitáskészletek) logikailag egy entitástárolóba vannak csoportosítva.

Tulajdonság

Az entitástípusok olyan tulajdonságokat tartalmaznak, amelyek meghatározzák a szerkezetüket és jellemzőiket. Egy Ügyfél entitástípus például rendelkezhet olyan tulajdonságokkal, mint a CustomerId, a Name és a Address.

A fogalmi modell tulajdonságai hasonlóak a számítógépes programban egy osztályban meghatározott tulajdonságokhoz. Ugyanúgy, ahogyan az osztály tulajdonságai meghatározzák az osztály alakját, és az objektumokra vonatkozó információkat hordoznak, a fogalmi modell tulajdonságai meghatározzák az entitástípus alakját, és az entitástípus-példányokra vonatkozó információkat hordoznak.

A tulajdonság tartalmazhat primitív adatokat (például sztringet, egész számot vagy logikai értéket) vagy strukturált adatokat (például összetett típust). További információ: Entity Data Model: Primitív adattípusok.

Fogalmi modell ábrázolásai

A fogalmi modell bizonyos adatok entitásként és kapcsolatként való szerkezetének konkrét ábrázolása. Egy fogalmi modell ábrázolásának egyik módja egy diagram. Az alábbi diagram egy fogalmi modellt ábrázol három entitástípussal (Bookés PublisherAuthor) és két társítással (PublishedByés WrittenBy):

Diagram showing a conceptual model with three entity types.

Ennek a reprezentációnak azonban van néhány hiányossága, amikor a modell néhány részletének átadásáról van szó. A tulajdonságtípus és az entitáskészlet adatai például nem jelennek meg a diagramban. A fogalmi modell gazdagsága egy tartományspecifikus nyelvvel (DSL) érthetőbben kifejezhető. A ADO.NET Entity Framework egy XML-alapú, fogalmi sémadefiníciós nyelvet (CSDL) használ a fogalmi modellek definiálásához. A fenti ábrán a fogalmi modell CSDL-definíciója látható:

  <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>

Lásd még