클래스의 상속 hierarchy를 한 개의 테이블의 여러 필드에 각각 대응시킨다.
즉 상속 계층구조의 모든 멤버를 단 한 개의 table의 필드에 매핑 시키는 것이다. 이 방법은 앞으로 소개할 class table inheritance 와 concrete class inheritance에 비해 극단적인 장/단점을 갖게 된다. 아래의 장/단점에 대해서 생각해 보자
Single Table Inheritance의 장점
- 1개의 Table만이 생성되므로 데이터베이스에서는 1개의 테이블만 생각하면된다.
- 데이터를 조회 하기 위해서 Join이 발생하지 않는다.
- 상속구조에서 필드를 부모 자식간 리펙토링 해도 데이터베이스는 변경되지 않는다.
단점
- Field들은 때때로 관련이 있기도 하고 관련이 없어지기도 한다. 이는 Table을 직접 이용할 때 혼란을 일으킨다.
- Column은 몇 개의 서브클래스에서만 사용되므로 데이터베이스 공간을 낭비하게 된다.
- single Table은 종국에는 점점 더 커질 것이며, 많은 인덱스가 생길 것이다. 이는 빈번한 lock으로 성능을 저하 시키게 된다.
- 한 개의 namespace 안에는 한 개의 field명 만을 사용할 수 있게 되어 다른 필드에 대해 같은 이름을 사용하면 안 된다. 조합된 클래스 이름과 subfix와 prefix를 적적히 사용하는 것으로 어려움을 피할 수 있다.
'아키텍처' 카테고리의 다른 글
| Concrete Table Inheritance (0) | 2008/10/30 |
|---|---|
| Class Table Inheritance (0) | 2008/10/27 |
| Single Table Inheritance (0) | 2008/10/24 |
| Embedded Mapping (0) | 2008/10/23 |
| 의존매핑 Dependent Mapping (0) | 2008/10/23 |
| 연관관계 테이블 매핑 (Association Table Mapping) (0) | 2008/10/23 |






