2015-01-12 5 views
1

테이블이 Page [Id, Name]입니다. 테이블 Element[Id, PageId, ViewId, ViewType, Order] (ViewType)은 테이블, 포트폴리오, 펀드, 포지션 중 하나의 이름입니다. ViewId은 해당 테이블의 요소 ID입니다. PortfolioView, FundView, PositionView.여러 테이블을 참조하는 SQL 테이블의 열

보기 테이블은 다음과 같습니다 : [Id, PortfolioId, ShowName, ShowYTD, ShowMTD and other]. 요소의 항목을 만들면 "보기"표 중 하나의 항목이 생성되었음을 의미합니다.

그래서 나에게는 반 패턴처럼 보입니다.

즉, 뷰 (포트폴리오, 펀드 또는 위치) 중 하나를 나타내는 정렬 된 요소가 포함 된 Page 모델을 생성하고자합니다. 어떤 방법으로 SQL에서 더 나은가?

답변

1

이 작업을 수행 한 방법은 Element 테이블을 포트폴리오, 기금 및 위치 각각에 대한 열로 업데이트하는 것입니다. 열은 null 가능해야하지만 합법적 인 외래 키이므로 SQL은 외래 키의 정확성을 적용합니다.

가능한 한 기술적으로 정확하고 싶다면, 당신은 또한 할 수있는 다음과 같은 :

Page[Id, Name] 
Element[Id, PageId, ViewId, ViewType, Order] 
Element_Portfolio[ElementId, PortfolioId] 
Element_Fund[ElementId, FundId] 
Element_Position[ElementId, PositionId] 
Portfolio[...] 
Fund[...] 
Position[...] 

이 피할 널 (NULL) 컬럼을 가지고 있지만, 더 많은 테이블을 가지고 필요하고 당신이 할 때, 따라서 더 조인 질문.

+0

고맙습니다, 이것에 대해 생각해 봅니다. 그러나 ViewId가있는 여러 열이 null과 다를 경우 (또는 동일한 ElementId를 가진 Element_ * 테이블의 여러 행이 될 것입니다.) 모호 할 수 있습니다. . 하지만 내가 더 좋은 방법을 찾지 못한다면 나는 네가 말하는 것처럼 할 것이다. – digger

관련 문제