자료출처: MS SQL 기반 데이터베이스 배움터 (생능출판사) http://www.yes24.com/Product/Goods/7489842
데이터베이스 배움터 - YES24
이론과 실무가 조화된 최적의 데이터베이스 책데이터베이스를 제대로 활용하는 데 반드시 필요한 데이터베이스의 기본적인 개념 및 이론을 이해하기 쉽게 설명한 책이다. 이와 함께 활용 기술
www.yes24.com
해당 단계는 개념적 스키마인 ER 스키마를 논리적 스키마인 관계 데이터베이스 스키마로 사상하는 논리적 설계 단계이다. ER 스키마에는 엔티티 타입과 관계 타입이 존재하지만 관계 데이터베이스 스키마에는 엔티티 타입과 관계 타입을 구분하지 않고 릴레이션들만 존재한다. 릴레이션으로 사상할 대상이 어떤 지에 따라 사상하는 방법이 달라진다. 2진 관계 타입에서 릴레이션으로 변환하는 형태는 논리적 설계 알고리즘의 3~5단계 과정에 위치한다.
2진 1:1 관계 타입에서는 ER 스키마의 각 관계 타입 R에 대하여 R에 참여하는 엔티티 타입에 대응되는 릴레이션 S와 T를 찾는데. S와 T 중 하나를 선택하여, 만일 S를 선택했다면 T의 기본 키를 S에 외래 키로 포함시킨다. 이 때, S 역할을 하는 릴레이션은 관계 타입에 완전하게 참여하는 릴레이션으로 선택하는 것이 좋다. 관계타입 R이 가지고 있는 모든 단순 애트리뷰트들을 S에 대응되는 릴레이션에 포함시킨다. 다른 엔티티 타입에 속해 있는 애트리뷰트를 한 엔티티 타입에 포함시키면 애트리뷰트들의 이름이 같아지는 경우가 생길 수 있는데, 이럴 때는 한 애트리뷰트의 변경해야만 한다. 두 엔티티 타입이 관계 타입 R에 완전하게 참여할 때는 두 엔티티 타입과 관계 타입을 하나의 릴레이션으로 합치는 방법도 가능하다.
정규 2진 1:N 관계 타입에서는 관계 타입 R에 대하여 N측의 참여 엔티티 타입에 대응되는 릴레이션 S를 찾는다. 관계 타입 R에 참여하는 1측의 엔티티 타입에 대응되는 릴레이션 T의 기본 키를 릴레이션 S에 외래 키로 포함시킨다. 반대로 N측의 릴레이션 S의 기본 키를 1측의 릴레이션 T에 외래 키로 포함시키면 애트리뷰트에 값들이 집합이 들어가거나 정보의 중복이 많이 발생한다.
2진 M:N 관계 타입은 직접 관계 데이터베이스에 나타낼 수 없다. 따라서 별도의 릴레이션으로 표현해야만 한다. 2진 M:N 관계 타입 R에 대해서 릴레이션 R을 생성한다. 참여 엔티티 타입에 해당하는 릴레이션들의 기본 키를 릴레이션 R에 의해 외래 키로 포함시키고, 이들의 조합이 릴레이션 R의 기본 키가 된다. 두 릴레이션의 기본 키를 외래 키로 포함시킬 때 두 기본 키의 이름이 같은 경우에는, 한 애트리뷰트의 이름을 변경해야만 한다. 이 때 애트리뷰트의 이름을 변경해도 기본키나 외래 키의 특성에 영향을 주지는 않는다.
이처럼 2진 관계 타입을 다양하게 나타나는 것은 일대일, 일대다, 다대다 관계를 명확하게 표현하기 위함이다. 2진 관계 내에서도 1:1, 1:N, M:N과 같은 다양한 관계 타입이 존재하기 때문에 릴레이션으로 사상되는 데에 있어 문제가 되지 않게 할 필요가 있기 때문이다.
다음 예시는 위의 회사 ER 스키마에 알고리즘을 적용하여 릴레이션들로 사상하는 과정이다. 회사 ER 스키마에서 EMPLOYEE 엔티티 타입과 PROJECT 엔티티 타입을 연결하는 MANAGES 관계 타입이 유일한 2진 1:1 관계 타입이다. PROJECT 엔티티 타입은 전체 참여하고 EMPLOYEE 엔티티 타입은 부분 참여하므로, PROJECT 릴레이션이 S의 역할을 하고, T의 역할을 하는 EMPLOYEE 릴레이션의 기본 키를 PROJECT 릴레이션에 의해 외래 키로 포함시킨다. 따라서 PROJECT 릴레이션에 EMPLOYEE 릴레이션을 참조하는 외래 키(Manager)가 추가된다. 또한 MANAGES 관계 타입이 가지고 있는 StartDate 애트리뷰트를 PROJECT 릴레이션에 추가한다.
PROJECT(Projno, Projname, Budget, StartDate, Manager)
회사 ER 스키마에는 EMPLOYEE 엔티티 타입과 DEPARTMENT 엔티티 타입을 연결하는 BELONGS 관계 타입, PART 엔티티 타입을 자체적으로 연결하는 CONTAINS 관계 타입이 정규 2진 1:N 관계 타입에 해당한다. EMPLOYEE 엔티티 타입과 DEPENDENT를 연결하는 POLICY 관계 타입은 2진 1:N 관계이지만, 정규 2진 1:N 관계는 아니다. BELONGS 관계 타입에서는 EMPLOYEE 타입이 N측에 참여하므로 EMPLOYEE 릴레이션을 S라고 한다. 1측의 엔티티 타입에 대응되는 릴레이션이 DEPARTMENT이므로 이를 T라고 하고, T의 기본 키를 S에 외래 키로 포함시킨다. 따라서 EMPLOYEE 릴레이션에 DEPARTMENT 릴레이션의 기본 키를 참조하는 외래 키(Dno)가 추가된다.
EMPLOYEE(Empno,Empname, Title, City, Ku, Dong, Salary, Dno)
PART 엔티티 타입에서도 이 단계를 적용하면, PART 릴레이션에 PART 릴레이션의 기본 키를 참조하는 외래 키(Subpartno)가 추가된다.
PART(Partno, Partname, Price, Subpartno)
2진 M:N 관계 타입은 회사 ER 스키마에서 EMPLOYEE 엔티티 타입과 PROJECT 엔티티 타입을 연결하는 WORKS_FOR 관계 타입이 해당된다. 새로운 릴레이션 WORKS_FOR를 생성하고, EMPLOYEE 엔티티 타입에 대응되는 릴레이션의 기본 키와 PROJECT 엔티티 타입에 대응되는 릴레이션의 기본 키를 WORKS_FOR 릴레이션에 외래 키로 포함시킨다. 이 두 외래 키의 조합이 WORKS_FOR 릴레이션의 기본 키가 된다. 또한 WORKS_FOR 관계 타입이 갖고 있는 두 개의 애트리뷰트 Duration와 Responsibility를 Works_for 릴레이션에 추가한다.
WORKS_FOR(Empno, Projno, Duration, Responsibility)
'데이터 [Data] > 데이터베이스론' 카테고리의 다른 글
데이터베이스론 보고서 11 : 이행적 종속성은 주로 어떤 키들과 연관이 있는가? (0) | 2021.07.18 |
---|---|
데이터베이스론 보고서 10 : VSAM 화일 구조에서 논의되는 인덱스 구조 (0) | 2021.07.17 |
데이터베이스론 보고서 8 : “관계 <-> 외래 키”라는 항목 (0) | 2021.07.15 |
데이터베이스론 보고서 7 : SELECT문 정리 요약 (0) | 2021.07.14 |
데이터베이스론 보고서 6 : ER 모델이 개선된 것 + 각 특징 (0) | 2021.07.13 |
댓글