자료 구조 설계는 시스템의 3계층 아키텍처에서 하위 계층을 설계하는 데 필요하다.
자료 구조 설계하려면 PD 계층에 포함된 모든 클래스를 살펴보고 클래스 정보로부터 자료 구조를 정의해야 한다.
🗂️ 자료 구조 설계 가이드라인
클래스 다이어그램으로부터 임시로 값을 저장하는 휘발성 변수를 제거한다.
- 설계 시에는 영속적으로 저장될 필요가 없는, 계산 중 일시적으로만 필요한 변수는 제외한다.
- 데이터베이스 설계에는 불필요한 컬럼을 최소화해야 한다.
모든 클래스를 하나의 데이터베이스 테이블로 매핑한다.
- 객체 지향 모델의 각 클래스는 데이터베이스의 테이블과 1:1로 대응된다.
- 이를 통해 클래스와 테이블 간의 매핑 관계가 명확해진다.
클래스의 멤버 변수는 테이블의 컬럼으로 매핑한다.
- 클래스의 속성(필드)은 테이블의 컬럼으로 구현한다.
- 타입과 제약 조건도 함께 고려하여 설계한다.
클래스의 멤버 함수는 프로그램의 함수로 매핑한다.
- DB에는 함수를 저장하지 않으며, 함수는 애플리케이션 레벨에서 구현한다.
- 비즈니스 로직은 데이터 모델과 분리한다.
일대일(1:1) 관계에 있는 연관관계 혹은 집합관계를 테이블의 키로 정의하는 컬럼을 추가한다.
- 한 테이블의 기본 키 또는 외래 키를 다른 테이블에 저장하여 관계를 유지한다.
다대다(N:M) 관계에 있는 연관관계 혹은 집합관계에 대해 새로운 테이블을 생성하고 관련된 클래스를 연결할 키를 저장하는 컬럼을 생성한다.
- 다대다 관계를 직접 표현할 수 없으므로, 중간 조인 테이블을 생성하여 두 테이블의 키를 연결한다.(1:N + N:1 관계로 분해)
- 예:
학생(Student)
↔ 강좌(Course)
→ 수강(Enrollment)
테이블 생성.
일반화(상속) 관계에 대해서는 하위 클래스의 대응 테이블에 키를 저장할 컬럼을 추가한다.
- 하위 테이블이 상위 테이블을 참조할 수 있도록 외래 키를 포함한다.
- 필요 시 단일 테이블 상속, 조인 테이블 상속, 클래스별 테이블 상속 등의 전략을 선택할 수 있다.