1

은 분명히 내가 DDD는 유용성에/CR을 EAV와 유사 말하는 잘못,하지만 지금까지 볼 수있는 유일한 차이는 아닌 세 개의 테이블을 조인과 조인의 많은 물리적 테이블이 많은 각 엔티티에 대한 구축이다. 인해 DDD의 이해 나의 부족에DDD 값 개체 : 엄청난 양의 SQL 조인없이 엔티티 개체를 유지하는 방법?

이 있어야합니다. 어떻게 물리적으로 중요한 조인하지 않고 데이터베이스에 이러한 개체를 저장 않으며 합병증 데이터를 가져올 때? 난 당신이 단순히 저장소에 공급 개체를 만들 수 있습니다 알고 있지만, 마이크로 소프트 SQL 서버 통합 서버는 사용자 정의 C#을 개체와 프레임 워크를 사용하는 것처럼 도구를 양성하기는 어렵습니다. 어쩌면 그게 내 질문이어야합니다, 당신은 어떻게 DDD ASP.NET C# 프레임 워크를 Microsoft SQL Server Integration Services 및 Report Services와 함께 사용합니까? LOL.

EAV/CR 데이터베이스에서 공급 업체, 고객, 구매자, 대표, 회사, 관리인 등 사람의 유형에 따라 서로 다른 클래스로 단일 Person 테이블을 설정할 수 있습니다. 세 개의 테이블, 몇 개의 조인, 속성 우리가 삽입하기 전에 항상 유효성 검사를하는 문자열입니다. MVC의 ModelValidation처럼 객체가 값을 허용하지만 유효 할 때까지 지속되지 않습니다. 표준 관계형 모델에서

, 우리는 도시와 같은 중복 데이터 유형에 혼합, 기업의 각 유형의 테이블을 생성하는 데 사용됩니다. 도메인 기반 설계를 사용하여

, 우리는 필요에 따라 각 개체의 유형, 중첩 된 객체 ValueObject의 각 유형에 대해,보다 중첩 된 객체를 나타내는 객체를 사용합니다. 필자가 이해할 수 있도록, 이것은 엔티티의 각 종류에 대한 테이블과 각 종류의 정보 집합 (값 객체)에 대한 테이블을 생성합니다. 이 모든 테이블을 사용하면 많은 조인을 볼 수 있습니다. 또한 각각의 새로운 접촉 유형에 대해 실제 테이블을 생성하게됩니다. 분명히 더 나은 방법이 있으므로 개체를 데이터베이스에 유지하는 방법이 올바르지 않아야합니다.

내 공급 업체는 다음과 같습니다

public class Vendor { 
    public int vendorID {get; set;} 
    public Address vAddress {get; set;} 
    public Representative vRep {get;set;} 
    public Buyer vBuyer {get; set;} 
} 

내 역할 :

public class Buyer { 
    public int buyerID {get; set;} 
    public Address bAddress {get; set;} 
    public Email bEmail {get; set;} 
    public Phone bPhone {get; set;} 
    public Phone bFax (get; set;} 
} 

우리가 정말 Vendor.vBuyer.bPhone.pAreaCode 같은 것들을 참조합니까? 우리가 Vendor.BuyerPhoneNumber를 참조하고 저장하고,이 부분들에 대한 별명과 거의 비슷한 객체를 만들 것이라고 생각합니다. Vendor.Address1, Vendor.Address2, Vendor.BuyerPhoneNumber ...

답변

1

실제 답변은 SQL 정규화 전략을 개체에 일치시키는 것입니다. 많은 수의 중복 주소가 있고이를 서로 연결해야하는 경우 데이터를 별도의 테이블로 정규화하여 값 개체가 필요합니다.

1

객체를 xml로 직렬화 할 수 있습니다. Sql Server의 xml 열에 저장하십시오. 결국, 당신은 계층 적 데이터 구조를 나타 내기 위해 노력하고 있으며, XML이 탁월합니다.

1

도메인 기반 디자인 지지자는 데이터 모델을 가능한 한 객체 모델에 가깝게 유지하는 것이 좋지만 철저한 규칙은 아닙니다.

데이터를 개체로 변환 (프로젝트)하기 위해 개체 관계형 매핑 계층에서 매핑을 만드는 경우에도 a EAV/CR database design을 계속 사용할 수 있습니다.

개체를 디자인하고 자식 값에 액세스하는 방법을 결정하는 것은 사례별로 다루어야 할 별도의 질문입니다. Vendor.BuyerPhoneNumber 또는 Vendor.vBuyer.bPhone.pAreaCode? 응답은 항상 귀하의 특정 요구 사항에 뿌리를두고 있기 때문에 의존합니다.

관련 문제