2013-06-17 1 views
0

저는 EF4.3/Sql Server 2008 Web을 사용하고 있습니다.데이터베이스 악행 사례에서 탐색 관계를 만들고 있습니까?

나는 정규화 된 데이터베이스를 만들려고 한 - 여기의 한 부분이다 :

enter image description here

당신은 일반적인 요인들이 모든 BuyerId를 통해 연결되어 있다는 것입니다 볼 수 있듯이. EF에서는 "Buyer.MatchBuyer.MatchNodes"등을 사용하여이 구조를 탐색 할 수 있지만이 탐색을 더욱 단순화하기위한 목적으로 추가 관계를 만드는 것은 나쁜 습관으로 간주되었는지 궁금해했습니다.

예를 들어 BuyerId에서 LenderMatchNode와 Buyer간에 relationahip을 추가하십시오.

모든 조언을 부탁드립니다.

답변

0

나는 이것이 데이터베이스에서 실제로는 좋은 생각이 아니라고 말할 것이다. 엔터티 프레임 워크를 사용하는 경우 "테이블 분할"을 사용하여 이상한 데이터베이스 구조를 사용하지 않고도 동일한 기능을 수행 할 수 있습니다.

이 좋은 튜토리얼 :

http://weblogs.asp.net/manavi/archive/2011/04/24/associations-in-ef-4-1-code-first-part-4-table-splitting.aspx

그리고 스콧 오클라호마의 블로그에 다른 사람이 있습니다 :

http://weblogs.asp.net/scottgu/

편집이 :

: 여기에 언급 된 튜토리얼입니다 http://weblogs.asp.net/scottgu/archive/2010/07/23/entity-framework-4-code-first-custom-database-schema-mapping.aspx

시나리오 3을 확인할 수 있습니다. 그게 네가 한 일이라고 나는 생각한다.

EDIT : Gert Arnolds가 다시 생각해 봤습니다. 역할에 N 구매자 MatchNode에 대한 가능성이 복합 키 :

역할

BuyerId 
Name 
Status 
BuyerTypeId 
RequestClass 
AcceptQuota 
TierId 
Commission 

MatchNode

BuyerId 
TierId 
Enabled 
RuleClass 

그런 다음 1을 다음과 같이

될 수 있을까?

EF에서 찾고있는 테이블 속성을 사용하여 찾고있는 탐색 속성을 제공 할 수 있습니다. 물론 그것은 아마도 엄청난 차이를 만들지는 않을 것입니다.하지만 당신이 선호하는 접근 방식의 문제라고 생각합니다.

+0

나는 이것이 테이블 분할에 관한 것이라고 생각하지 않습니다. –

+0

@GertArnold 저에게 닮았습니다. 위의 4 개 테이블은 단일 테이블이 될 수 있습니다 (아마도 있어야합니다). 그러나 dotnetnoob은 모델을 간단히 탐색 할 수있는 탐색 속성을 원합니다. –

+0

구매자 - MatchNode는 1 : n입니다. –

관련 문제