문제

보고서 여러 차트가있을 수 있습니다. 그만큼 차트 테이블은 다음과 같이 보입니다.

  • 차트 -- ID, 차트, 보고서, ...

그만큼 차트 위는 차트 어느 쪽이든 하나 다음 차트 유형 중 :

  • : 차트, 두께, yaxis, Xaxis, 색깔, ...
  • 파이: 차트, 반지름, 색깔, ...
  • 술집: 차트, 너비, 색깔, 국경, ...

SQL Server를 사용하고 있으며 불행히도 CouchDB 등을 사용하는 것과 같은 대체 솔루션은 실행 가능한 옵션이 아닙니다. 또한이 테이블을 엔티티 프레임 워크를 사용하여 엔터티에 매핑하려고합니다.

이 디자인은 나의 첫 번째 찌르기 이며이 디자인의 여러 문제를 봅니다.

  1. 차트.보고서 여러 테이블에서 외국 키가 될 수 없으므로 FK를 시행하는 것이 문제입니다.
  2. SQL (또는 LINQ) 쿼리를 실행할 때는 차트 유형을 가져 오려면 두 쿼리를 실행 한 다음 해당 테이블을 쿼리해야합니다. 아니면 a 가입하다 차트 데이터를 얻기 위해 모든 테이블에 대해.
  3. 차트 유형에 대한 조인을 할 때 차트 이 테이블을 가로 질러 독특해야합니다 차트.차트 하나만지도 .차트 또는 술집.차트 또는 파이.차트.
  4. 이것을 EF로 매핑하는 것은 까다로울 것입니다.

나는 이것이 규정 된 솔루션이 있고 그것을 처리 할 수있는 방법이있는 충분한 문제라고 생각합니다.

나는 디자인으로 올바른 길을 가고 있습니까? 그렇다면 위의 문제를 극복하는 방법 (FK, 조인, 여러 테이블에서 고유 한 ID 및 매핑)을 극복하는 방법.

해결책

이것 대답 전략에 대해 매우 포괄적입니다. SQL 팀의 기사 SQL Server에서 테이블 상속을 구현합니다 내가 원하는 곳을 얻었다.

도움이 되었습니까?

해결책

차트를 같은 테이블에 넣고 상속 상속 테이블 무늬? 링크는 엔티티 프레임 워크에서이를 구현하는 방법을 보여줍니다. 실행 가능한지 여부는 모든 차트 유형이 얼마나 다른지와 각각의 필드 수에 달려 있습니다.

도 있습니다 유형 당 테이블 당신이 이미 묘사하고있는 것과 더 유사한 상속.

다른 팁

나는 이것을 테이블 상속 체계로 다루고있다 :

Chart (ChartId, ChartTypeId)
   PK (ChartId, ChartTypeId)
   CHECK ChartTypeId IN ('Line', 'Bar', 'Pie')

LineChart (ChartId, ChartTypeId)
   PK (ChartId, ChartTypeId)
   FK (ChartId, ChartTypeId) -> Chart
   CHECK ChartTypeId IN ('Line')

차트를 추가하려면 먼저 "기본"차트 테이블을 추가 한 다음 적절한 "하위 유형"차트 테이블에 추가합니다. 체크 제약 조건은 모든 것을 줄을 유지합니다.

라인 차트. 파이 차트 및 막대 차트는 특수한 형태의 차트입니다.

이 패턴에 대한 좋은 기사에 대한 조회 "일반화 전문화 관계형 모델링".

또는 차트 데이터를 얻으려면 모든 테이블에 대한 조인을 실행해야합니다.

예, 괜찮습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top