@Entity
@Table(name="QUESTION")
public class Question extends APostCommon {
private static final long serialVersionUID = 1L;
@Transient
private List<Answer> answers;
@Column(name="FOLLOW_COUNT")
private Integer followerCount;
@Column(name="ANSWER_COUNT")
private Integer answerCount;
//omitted others for purity
}
Answer
만 questionId
필드
@Entity
@Table(name="ANSWER")
public class Answer extends APostCommon{
private String questionId;
//omitted others for purity
}
를 포함하여 상위 클래스와 다른 자식 클래스에게 있습니다
@MappedSuperclass
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
public class APostCommon extends Actionable {
private static final long serialVersionUID = 1L;
@Column(name = "TITLE")
private String title;
@Lob
@Column(name="DESCRIPTION")
private String description;
//omitted others for purity
}
부모 클래스 어느 데이터 모델은 저에게 적합합니다. InheritanceType.SINGLE_TABLE
또는 TABLE_PER_CLASS
을 사용해야합니다. 미래에 수백만의 기록이있을 때 어떤 일이 발생합니다.
답장을 보내 주셔서 감사합니다. 그런데 관련 문제에 대한 의견을 구할 수 있습니까? 나는 성능 측면을 선택하고 싶다. 그래서 나는 데이터 중복성에 신경 쓰지 않는다. 나는 데이터베이스를 매우 비정규 화했다. 가능한 한 조인을 피하십시오. 그러나 올바른 방법으로 확신 할 수는 없습니다. 엔티티 자체가 아닌 관계의 id 속성만을 보유하는 것에 대한 당신의 견해는 무엇입니까 – ilkerbfl
일반적으로 제 생각에 역 정규화는 매우 작은 부분의 데이터베이스 디자인에만주의해서 사용해야하는 예외적 인 전략입니다. 테이블의 행 수와 함께 더 많은 열이 예상되는지 생각해야합니다. 계속 성장한다면 100 + 컬럼이있는 모든 정보 저장 테이블을 얻게 될 것입니다. 그런 다음 정규화를 수행하는 데 너무 늦었습니다. 문제가 생겼어. 그 단일 테이블 전략으로 시작할 수는 있지만 테이블이 커지면서 여전히 정규화 된 양식을 전환 할 수있는 기회가있는 경우주의하십시오. –
더 명확하게하기 위해 얻었습니다. 설명하기 위해 답 엔티티에서 questionId 대신 Question Entity를 사용합니다. 하지만 그렇게하면 나쁜 성능을 유발하는 조인 쿼리가 생성됩니다. 아직도 정상화를 주장합니까? – ilkerbfl