지난주에는 데이터베이스 모델링이 무엇인지와 ER모델에 대해 중점적으로 배웠다. 이번에는 데이터베이스 모델링 중 논리적 모델링에 대해 배워보자. 아래 그림은 데이터베이스 모델링 과정이다.
출처 : 오라클로 배우는 데이터베이스 개론과 실습
논리적 모델링은 개념적 모델링 결과를 바탕으로 DBMS에 적합한 논리 구조를 갖도록 설계하는 과정이다. 결과물로 릴레이션 스키마가 나온다. 그리고 릴레이션 스키마를 기반으로 테이블 명세서가 작성되며 테이블명세서에는 어트리뷰트의 데이터 타입과 도메인, 제약조건 등을 세부적으로 결정한다.
ER모델에서 모든 엔티티는 하나의 릴레이션으로 변환한다. 아래 '주문' 엔티티를 '주문' 릴레이션으로 변경한다.
약한 엔티티의 경우 강한 엔티티 타입의 기본키를 외래키로 갖는다.
M:N 관계는 두 릴레이션 사이의 관계도 하나의 릴레이션으로 넣는다. 이 때 두 릴레이션의 기본키를 외래키로 받는다.
1:N 관계를 사상하는 방법은 두 가지 있다.
1:1 관계를 사상하는 방법은 세 가지가 있다.
3진 관계는 M:N 관계와 동일하게 관계를 하나의 릴레이션으로 생성한다. 아래 예시는 '사용자', '주문', '음식점'이 '음식주문'이라는 관계로 묶여있는 3진 관계이다.
논리적 모델링의 결과로 릴레이션 스키마와 테이블명세서가 나온다. 릴레이션 스키마는 릴레이션 이름과 어트리뷰트의 집합으로 표현한다.
테이블 명세서는 릴레이션에서 키, 어트리뷰트 데이터 타입과 도메인, 제약조건 등을 세부적으로 나타낸 문서이다.(릴레이션의 설명서 느낌)
개념적 모델링, 논리적 모델링 모두 배웠다. 직접 데이터베이스 모델링을 해보자.
우리가 데이터베이스 모델링 할 기업은 넷플릭스와 같은 OTT 기업이다. 기업의 요구사항은 아래와 같다.
[ OTT 기업 요구사항 ]
• 고객이 넷플릭스 서비스를 이용하기 위해서는 회원가입이 필요하며, 회원가입 시 로그인 ID, 비밀번호, 이름, 나이, 성별, 전화번호, 우편번호를 기입해야 한다.
• 고객은 식별을 위해 별도의 숫자형 고객 ID를 설정한다.
• 작품은 작품 ID, 작품 이름, 카테고리, 회차 개수, (전체 사용자가 평가한) 평점, 한 줄 요약 정보를 갖는다.
• 작품은 작품 ID로 식별한다.
• 하나의 작품은 0명, 혹은 여러 명의 고객에게 시청될 수 있고, 한 명의 고객은 0개 혹은 여러 개의 작품을 동시에 시청할 수 있다.
• 고객이 작품을 시청할 때 시청 시작 일시, 시청 중단 회차, 시청 중단 지점, (해당 고객이 해당 작품을 평가한) 평점 정보가 저장되어야 한다.
• 감독은 감독 ID, 성별, 국적, 나이, 소속 영화사 정보를 갖는다.
• 감독은 감독 ID로 식별한다.
• 하나의 작품은 한 명의 감독에 의해 제작되고, 한 명의 감독은 0개 혹은 여러 개의 작품을 제작할 수 있다.
• 고객센터는 소속 직원에 대한 직원 ID, 직원 이름, 대응 방법(전화, e-mail 등), 근무지 주소, 직원 전화번호 정보를 갖는다.
• 고객센터는 직원 ID로 식별한다.
• 고객센터는 한 명의 직원이 0명, 혹은 여러 명의 고객들을 상담할 수 있고, 고객은 0명, 혹인 여러 명의 직원에게 상담을 요청할 수 있다.
• 상담이 진행되면 상담 ID, 상담 일시, 상담 주제 카테고리, 상담 상세 내용 정보를 갖는다.
• 각 상담은 상담 ID로 식별한다.
요구사항을 보며 우리가 파악할 것은 아래와 같다.
개념적 모델링 결과는 ER 모델이다. 위 요구사항을 ER모델로 그리면 아래와 같다.(수업 때 공개 예정)
논리적 모델링의 결과는 릴레이션 스키마와 테이블 명세서이다. 릴레이션 스키마와 테이블 명세서는 아래와 같다.(수업 때 공개 예정)
테이블 명세서는 아래와 같다.(수업 때 공개 예정)