새로운 시스템을위한 새로운 DB 모델을 설계하고 있습니다. 내 목표는 SQL에 저장되고 Entity Framework에 의해 개체로 매핑되도록하는 것입니다. 나는 복잡한 객체 계층 구조를 지원하고 DB 엔진에 의해 "적절하게"정보 화되도록 테이블 당 계층 구조 패턴을 많이 사용하고 있습니다.ERD와 EF에서이 관계를 모델링하는 적절한 방법은 무엇입니까?
내가 자원라는 개체의 집합이 있습니다
는 내가 처리하는 방법을 잘 모르겠습니다 다음과 같은 상황이있다. 각 자원은 특정 유형이며 많은 특정 속성을 포함합니다. 매핑, ServerResource (콘크리트 클래스 자원에서 상속 :
- 자원 (추상 클래스는, 자원 테이블에 매핑)
- 자원 테이블은 판별 자 컬럼과 기본 키
- 클래스 등으로의 ResourceId있다 자원에 1-1의 UrlResources 표는 ... 전체 (숫자가 증가하고있다)
- 은 자원의 각 유형은 그 자원에 특정한 고유 한 속성)
또한 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는 제가 테이블 관리 관점에서 할 수있는 최선입니까?
마지막 생각. 내 데이터베이스는 매우 자주 읽혀지고 자주 쓰여지지 않습니다. 필자는 필요한 경우 읽을 부분을 지워 버릴 수도 있습니다.