0

새로운 시스템을위한 새로운 DB 모델을 설계하고 있습니다. 내 목표는 SQL에 저장되고 Entity Framework에 의해 개체로 매핑되도록하는 것입니다. 나는 복잡한 객체 계층 구조를 지원하고 DB 엔진에 의해 "적절하게"정보 화되도록 테이블 당 계층 구조 패턴을 많이 사용하고 있습니다.ERD와 EF에서이 관계를 모델링하는 적절한 방법은 무엇입니까?

내가 자원라는 개체의 집합이 있습니다

는 내가 처리하는 방법을 잘 모르겠습니다 다음과 같은 상황이있다. 각 자원은 특정 유형이며 많은 특정 속성을 포함합니다. 매핑, ServerResource (콘크리트 클래스 자원에서 상속 :

  • 자원 (추상 클래스는, 자원 테이블에 매핑)
  • 자원 테이블은 판별 자 컬럼과 기본 키
  • 클래스 등으로의 ResourceId있다 자원에 1-1의 UrlResources 표는 ... 전체 (숫자가 증가하고있다)
  • 은 자원의 각 유형은 그 자원에 특정한 고유 한 속성)
세트가 다른 자원-유형 dozehn에 대해이 있습니다 0

또한 Checks라는 엔티티가 많이 있습니다. 각 리소스에는 여러 가지 검사가 있습니다. ResourceId는 검사 테이블의 외래 키입니다. 수표는 약간 더 흥미 롭습니다. 일부 또는 모든 유형의 자원에 공통되는 점검 유형이 있습니다. 특정 유형의 자원에 매우 특정한 일부 Check 유형이 있습니다. 더 정확하게하려면

  • 확인
  • OutageCheck
  • SslCertExpirationCheck (자원의 대부분의 유형에서 지원) (추상 클래스는, 확인 테이블에 매핑 CheckId가 기본 키) (단 1 유형에서 지원됩니다) 자원 유형 당 대략 3-4 유형의 점검이 있습니다. 그 중 1-2는 대부분의 리소스에서 공유되지만 나머지는 특정 리소스에 대한 사용자 지정입니다.

그래서 내 질문은 ERD와 Entity Framework에서 모두 체크하는 방법에 관한 것입니다. 가장 직접적인 접근 방식은 수십 개의 테이블을 생성하는 것입니다. 각 테이블에는 Resource 유형과 Check 유형의 특정 조합이 있습니다. IE : ServerOutageCheck, StorageOutageCheck, UrlOutageCheck, UrlSslExpiraitonCheck, ServerLowMemoryCheck 등

이것은 관리 및 유지 보수가 약간 어려워 보입니다. 나는 일반적인 검사 (즉, OutageCheck)와 관련된 단일 테이블 내에서 공통 검사를 공유하고 자원 관련 검사 (예 : SslExpirationCheck)에서만 벗어나는 것을 좋아합니다. 이것이 가능한가? 또는 O^2는 제가 테이블 관리 관점에서 할 수있는 최선입니까?

마지막 생각. 내 데이터베이스는 매우 자주 읽혀지고 자주 쓰여지지 않습니다. 필자는 필요한 경우 읽을 부분을 지워 버릴 수도 있습니다.

답변

0

세 개의 태그를 소개하고 각각의 정보 탭에 특히주의를 기울일 것을 권합니다.

단일 테이블 상속은 태그 무슨 같다. 정보 탭은 하나의 간단한 테이블에 많은 NULLS를 갖는 것과 관련된 기쁨과 비애에 대해 설명합니다.

클래스 테이블 상속은 속성이 의미하는 테이블에서만 일부 하위 클래스와 관련된 속성을 넣는 대신 사용할 수 있습니다.

공유 기본 키는 하위 클래스/수퍼 클래스 관계의 일대일 특성을 강화하고 특수화 된 데이터를 일반화 된 데이터로 결합하는 편리한 방법을 제공하는 디자인 기법입니다.

내가 말하고 싶은 대부분은 이미 세 태그의 정보 탭에있는 것을 반복하는 것입니다. 관련 질문 및 답변은 ​​귀하의 사례와 관련이 있습니다.

관련 문제