Association(EDM)
EDM(엔터티 데이터 모델)에서 관계는 엔터티 간 논리적 연결을 모델링합니다. EDM은 엔터티 사이의 피어 투 피어 관계를 모델링하는 관계의 AssociationType을 지원합니다.
연결에 참여하는 각 엔터티를 End라고 합니다. 각 End에는 연결의 각 End에 대한 논리를 설명하고 이름을 지정하는 데 사용되는 Role 특성이 있습니다.
연결 End의 Type 특성은 관계에 참여하는 엔터티 형식을 정의합니다.
연결에는 Multiplicity 특성이 있습니다. Multiplicity 특성은 관계에 참여할 수 있는 각 End의 인스턴스 수를 지정합니다.
많은 LOB 응용 프로그램의 논리에서는 고객이 주문을 하고, 주문 상품이 고객에게 전달되어야 합니다. EDM 연결을 통해 고객과 주문 사이의 관계를 모델링할 수 있습니다. 연결의 End는 고객 및 주문 엔터티입니다. 각 End에는 Type 엔터티가 있습니다. Role 특성은 Type 특성에 지정된 엔터티의 기능을 설명합니다. 대부분의 경우 각 고객은 0개 이상의 주문을 가질 수 있지만 하나의 주문은 한 명의 고객에게만 연결됩니다. 즉, 고객 형식의 Multiplicity는 1이고, 주문의 Multiplicity는 *입니다. Multiplicity에 대한 자세한 내용은 엔터티 데이터 모델 관계를 참조하십시오.
예제
다음 CSDL(개념 스키마 정의 언어) 구문에서 Association 요소는 Customers
와 Orders
간 관계의 논리를 지정합니다.
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration" xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm" xmlns="https://schemas.microsoft.com/ado/2006/04/edm" Namespace="MyCompany.LOBSchema" Alias="Self">
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="Guid" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="Address" Type="String" Nullable="false" />
<Property Name="City" Type="String" Nullable="false" />
<NavigationProperty Name="Orders" Relationship="Self.Order_Customer" FromRole="Customers" ToRole="Orders" />
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="String" Nullable="false" />
<Property Name="TotalAmount" Type="Decimal" />
<Property Name="Tax" Type="Decimal" />
<Property Name="ShippingAddress" Type="String" />
<NavigationProperty Name="Customer" Relationship="Self.Order_Customer" FromRole="Orders" ToRole="Customers" />
</EntityType>
<Association Name="Order_Customer">
<End Role="Customer" Type="OrderInfoModel.Customers"
Multiplicity="1" />
<End Role="Orders" Type="OrderInfoModel.Order" Multiplicity="*" />
</Association>
<EntityContainer Name="LOBSchemaData">
<EntitySet Name="Customers" EntityType="Self.Customer" />
<EntitySet Name="Orders" EntityType="Self.Order" />
<AssociationSet Name="Customers_Orders"
Association="Self.Order_Customer">
<End Role="Customer" EntitySet="Customers" />
<End Role="Order" EntitySet="Orders" />
</AssociationSet>
</EntityContainer>
</Schema>
Order_Customer
Association의 Name 특성은 모든 작업의 관계를 식별하는 데 사용됩니다. 참여하는 각 엔터티는 End입니다. 모든 작업의 Type 특성입니다. 참여하는 각 엔터티는 연결에 참여하는 엔터티 형식을 지정하는 End입니다. 이 경우에는 Customers
와 Orders
입니다. 각 End에는 Role 특성과 Multiplicity 특성이 있습니다.
EDM 연결의 특징
연결은 다음과 같은 특징을 갖습니다.
비독점적 멤버 자격: 한 엔터티 형식이 여러 연결에 참여할 수 있습니다.
방향: 연결은 엔터티 사이에서 양방향이며 어느 쪽 End에서나 반대쪽으로 탐색될 수 있습니다.
복합성
Multiplicity 특성은 모든 작업의 카디널리티를 정의합니다. 참여하는 각 엔터티는 Association의 End 요소입니다. 위의 CSDL 예제에서는 0개 이상의 주문(Multiplicty="*"
)에 한 명의 Customer (Multiplicty="1")
만 있도록 지정합니다.
다음 표에서는 가능한 Multiplicity 값을 모두 보여 줍니다.
값 | 설명 |
---|---|
|
0 또는 1 |
|
정확히 하나 |
|
0 또는 하나 이상 |
비독점적 멤버 자격
한 엔터티 형식이 여러 연결에 참여할 수 있습니다.
방향
EDM의 연결은 양방향입니다.