오늘은 데이터 모델링에 대해 정리함과 동시에, 조금 애매하게 이해하고 있을수도 있는 '데이터 정규화'에 대해 한 번 짚고 넘어가고자 한다.
데이터 정규화란?
-> 데이터의 중복을 최소화하고 무결성을 유지하며 데이터베이스를 최적화하는 과정. 데이터 모델링 3단계 중 두번째 단계인 '논리적 데이터 모델링' 과정에서 수행되는 작업이다.
도서관 시스템을 개발한다고 가정해보자.
먼저 개념적 데이터 모델링 과정을 수행해야 한다.
1. 개념적 데이터 모델링
도서관에서 상호작용 가능한 개체(Entity)로는 '도서'와 '회원' 정도가 있을 것이다.
이 Entity간의 관계로는 '대출'이 있을 것이다. 즉 다음과 같이 표현할 수 있다.
- 그림판 -
즉 우리에게 필요한 테이블은
1. 회원 정보 테이블
2. 도서 목록 테이블
3. 대출 이력 테이블
이렇게 정리할 수 있다.
회원은 한번에 여러권의 책을 빌릴 수 있고, 도서 또한 한 권의 책이 여러명에게 대출될 수 있으므로(특정 책이 여러권 있다고 가정) n:m 관계가 성립한다.
2. 논리적 데이터 모델링
개념적 데이터 모델링을 바탕으로 대출 테이블을 다음과 같이 작성하면 될 것이다.
pk값: 대출번호
user: 회원 ID (회원 테이블의 pk값), fk
book: 도서 ID (도서 테이블의 pk값), fk
회원 테이블의 경우
pk값: 회원 ID
user_name: 회원명
user_age: 회원 나이
도서 테이블의 경우
pk값: 도서 ID
book_name: 도서명
book_writer: 작가명
n:m 관계의 테이블인 회원 테이블과 도서 테이블이 대출 테이블을 바탕으로 1:n, n:1 구조가 되었다.
대출 테이블이 정규화되지 않았다면 다음과 같았을 것이다.
컬럼1: 대출 ID
컬럼2: 회원명
컬럼3: 도서명
컬럼4: 회원 나이
컬럼5: 작가명
컬럼6:
.
.
.
이런 구조의 테이블을 외래키를 활용하여 다음과같이 표현할 수 있다.
컬럼1: 대출 ID
컬럼2: 도서 ID
컬럼3: 회원 ID
.
.
.
이렇게 중복되는 데이터를 삭제하고, 간결하게 표현할 수 있다. 외래키를 참조하여 다른 테이블에서 필요한 정보들을 얻을 수 있게 설계한 것이다.
3. 물리적 데이터 모델링
쿼리문을 바탕으로 설계한 데이터베이스를 구현
디자인 패턴 정리 (MVC 패턴, MVVM 패턴) (2) | 2024.08.28 |
---|---|
디자인 패턴 정리 (싱글톤 패턴, 팩토리 패턴) (2) | 2024.08.27 |
댓글 영역