2011-08-24 4 views
2

많은 기본 필드와 메소드가있는 상위 클래스와 추가 필드 메소드가있는 하위 클래스가있는 응용 프로그램을 개발 중입니다.데이터베이스에 서브 클래 싱을 구현하는 방법

데이터베이스에 구현하는 것이 가장 흥미로운 방법입니다. 상위 클래스에 대한 하나의 테이블, 하위 클래스에 대한 별도의 테이블 및 ID 필드를 통한 링크를 사용하는 것이 합리적인가요? 아니면 액세스가 쉽고 쿼리가 더 간단하도록 하위 클래스 테이블에 상위 클래스 필드를 복제하는 것이 더 좋습니까?

답변

5

귀하의 질문에 대한 답변은 '예'입니다. 두 가지 모두 유효한 접근 방법입니다. 쿼리 할 때 수행 할 조인의 수와 다형성 쿼리를 지원할지 여부 등이 다릅니다. Here's an article on the subject by Scott Ambler. 기사의 2.6 절에는 서로 다른 매핑 방식의 장단점을 나열한 멋진 테이블이 있습니다.

+0

감사합니다. 저것과 적당량의 인터넷 검색은 저에게 많게 가르쳤다. 아직이 응용 프로그램을 설계하는 초기 단계에 있으므로 아직 설정되지 않았지만 클래스 당 하나의 테이블을 향하고 있습니다. 하나의 큰 테이블을 원하지 않습니다. 일부 하위 유형에는 많은 추가 속성이 있고 희소성이있는 테이블 (다른 유형의 경우)은 차선책으로 보입니다. 올바른 뷰를 만들면 다른 테이블의 이점을 누릴 수있을뿐 아니라 데이터를 얻는 데 상당한 편의를 얻을 수 있습니다. 하지만 제가 말했듯이, 그것은 아직 초기 단계이기 때문에 이것은 바뀔 수 있습니다. 나에게 많은 ot hink를주는 것의 감사합니다! –

+0

이 문서는 매우 도움이되었습니다 (y) –

3

세 가지 일반적인 방법으로 계층 당

  1. 표 - 모두를위한 하나 개의 테이블, NULL 열을 많이.

  2. 콘크리트 클래스 당 표; 각 하위 클래스는 모든 공통 필드가 반복되는 테이블을 가져옵니다.

  3. 유형 (클래스) 당 표. 관계형 디자인에서는 supertype/subtype approach과 같습니다.

관련 문제