Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 kapcsolat vége van, amelyek meghatározzák a kapcsolatban résztvevő 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ókért lásd: idegenkulcs-tulajdonság.
Egy alkalmazásban a társítás egy példánya egy adott társítást képvisel (például egy ügyfélpéldány és rendelési példányok közötti társítást). 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.
Ingatlan
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):
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>