2012-09-25 2 views
0

내가 두 기관이 여러 기관을 모델링하기 위해,이 클라이언트회사 (사용자 모두 서브 클래스)를 가정 해 봅시다.
각 이벤트의 목록을 갖는 ClientEventsCompanyEvents어떻게 같은 필드와 기능

우리가 (대신 이벤트 테이블로가는) 처음에는 그 테이블을 분리 한 이유는 각 종류의 이벤트를하지 않는 것이 었습니다 믹스 (한 번에 한 종류의 이벤트에서만 작동 가능). 또한 하나의 큰 테이블 대신 2 개의 작은 테이블을 갖는 결과를 가져옵니다.

  1. 그 좋은 방법이 있습니까? (큰 테이블 데이터 볼륨 ~ 1M)
    두 테이블을 분리하여 상속을 사용할 필요가 없을 수 있습니까?
  2. 엔티티로 모델링하는 가장 좋은 방법은 무엇입니까? 개체의 두 가지 유형에

속성과 오퍼레이션은 동일한 정도로 나는 그것을 모델 수 :

@MappedSuperclass 
public abstract class **Event** {...} 
@Entity @Table(name="client_event") 
public class **ClientEvent** {...} 
@Entity @Table(name="company_event") 
public class **CompanyEvent** {...} 

지금 사용 (DAO의 메소드를 복제하지 않고 특정 이벤트의 각 유형을 조회 할 수있는 방법이 최대 절전 모드 또는 JPA, 아마도 제네릭은 여기에서 사용하게 될 것입니까?)
3. 데이터베이스 테이블과 엔티티를 모델링하기 위해 이와 같은 상황 (두 개의 별개의 존재하지만 동일한 속성 및 연산)의 상황에서 '경험 법칙'이 있습니까?

답변

1

테이블의 크기 (총 이벤트 수), 활성 테이블에 해당 이벤트를 보관할 기간, 새 이벤트 빈도 및 이전 이벤트 검색에 따라 다릅니다.

새 이벤트가 빈번하지 않으면 하나의 테이블을 유지할 수 있습니다. 새 이벤트가 자주 발생하고 자주 검색해야하는 경우 별도의 두 테이블을 갖는 것이 좋습니다.

이러한 오래된 이벤트를 하나의 테이블에 보관하면 검색/검색을 더 빠르게 할 수 있습니다.

요약하면 모든 디자인은 비즈니스의 필요에 따라 달라집니다.

여러 테이블을 사용하면 더 빨리 검색 할 수 있으며 단일 테이블을 사용하면 쉽게 액세스 할 수 있고 코드/디자인이 간단 해집니다.

액세스 할 때 동일한 방법을 사용할 수 있습니다. 이벤트 유형을 매개 변수로 전달하고 그에 대한 쿼리를 작성하십시오.