Licence
저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR)
이용자는 다음의 권리를 갖습니다:
공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함)
논리적 설계
DBMS에 적합한 논리적 스키마 설계
규칙 1: 모든 개체는 릴레이션으로 변환한다
- 개체 이름 -> 릴레이션 이름
- 개체의 속성 -> 릴레이션의 속성
- 개체의 키 속성 -> 릴레이션의 기본키
개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환한다
규칙 2: 다대다(n:m) 관계는 별도의 릴레이션으로 변환한다
각 개체를 릴레이션으로 변환한 후
이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고
외래키들을 조합하여 관계 릴레이션의 기본키로 지정한다
고객과 상품은 다대다 관계이다 규칙2 변환의 순서는 다음과 같다
1. <주문> 릴레이션을 새로 만든다
2. 고객의 PK인 고객번호와 상품의 PK인 상품번호를 가져온다
3. 고객번호와 상품번호를 묶어 <주문>릴레이션의 PK로 사용하거나, 새로운 기본키를 지정해 PK로 사용한다
4. 남은 주문수량 속성을 <주문> 릴레이션에 넣어준다
규칙 3: 일대다(1:n) 관계는 외래키로 표현한다
별도의 릴레이션을 만들지 않고 외래키로 표현한다
1. 일반적 일대다 관계는 외래키로 표현한다
ex) 학생(n) : 교수(1) 관계
학생 Relation | 학번 |
- | 1 |
- | 2 |
- | 3 |
교수 Relation | 교수 번호 | 지도 학생 |
- | Algorithm 113 | 1, 4, 5 |
- | Database 329 | 2, 3 |
- | Programming 921 | 6 |
위와 같이 1:n 관계에서 n(학생)측 개체의 기본키를 1(교수)측 개체에 포함시켜 외래키로 지정한다면
데이터베이스의 원자성을 위반한 구조가 된다 따라서 다음과 같이 바꾼다
학생 Relation | 학번 | 지도교수 번호 FK |
- | 1 | Algorithm 113 |
- | 2 | Database 329 |
- | 3 | Database 329 |
교수 Relation | 교수 번호 PK |
- | Algorithm 113 |
- | Database 329 |
- | Programming 921 |
1(교수)측 개체 릴레이션의 기본키를 n(학생)측 개체 릴레이션에 포함시켜 외래키로 지정한다
2. 약한 개체(n측)가 참여하는 일대다 관계는 외래키(1측의)를 포함해서 기본키로 지정한다
n측 개체의 릴레이션은 1측에서 온 외래키를 포함하여 기본키를 지정한다
오너 개체의 존재 여부에따라 약한 개체의 존재 여부가 결정되기 때문에 오너 개체의 기본키를 이용해서 식별해야 한다
규칙 4: 일대일(1:1) 관계는 외래키로 표현한다
1. 일반적인 1:1 관계는 외래키를 서로 주고 받는다
(양측 다 선택적으로 참여하는 경우)
관계에 참여하는 개체 릴레이션들이 서로의 기본키를 주고 받아 외래키로 지정한다
관계의 속성들도 모든 개체 릴레이션에 포함시킨다
불필요한 데이터 중복이 발생할 수 있다
남자와 여자 릴레이션에 각각 상대방의 PK를 FK로 저장하고 관계(혼인)의 속성인 결혼날짜를 각각 넣어준다
데이터가 중복된다는 한계점을 가진다(양쪽에 결혼날짜가 있음)
2. 일대일 관계에 필수적으로 참여하는 개체의 릴레이션만 외래키를 받는다
(한측이 관계에 필수적으로 참여하는 경우)
관계에 필수적으로 참여하는 개체 릴레이션에만 외래키를 포함시킨다
관계의 속성들은 관계에 필수적으로 참여하는 개체 릴레이션에 포함시킨다
남자만 필수적으로 참여하는 경우 여자 릴레이션 결혼날짜 항목이 NULL이 될 가능성이 있기 때문에 운영의 효율성을 위해 절대적으로 참여하는 릴레이션에 외래키와 관계의 속성을 넣어준다
3. 모든 개체가 일대일 관계에 필수적으로 참여하면 릴레이션을 하나로 합친다
관계에 참여하는 개체 릴레이션들을 하나의 릴레이션으로 합쳐서 표현한다
관계의 이름을 릴레이션의 이름으로 사용하고,
관계에 참여하는 두 개체의 속성들을 관계 릴레이션에 모두 포함시킨다
두 개체 릴레이션의 키 속성을 조합하여 관계 릴레이션의 기본키로 지정한다
굳이 남자 릴레이션과 여자 릴레이션을 나눌 필요가 없기 때문에
양측의 속성값을 모두 넣은 혼인 릴레이션으로 사용한다
이때 남자번호와 여자번호를 합쳐 하나의 기본키로 사용한다
규칙 5: 다중 값 속성은 독립적 릴레이션으로 변환한다
다중 값 속성을 가진 릴레이션이 있다면 이 다중 값 속성을 독립적 릴레이션으로 변환해야 한다
(값의 원자성을 위해)
다중 값 속성과 함께 그 속성을 가지고 있던 개체 릴레이션의 기본키(사원번호)를 외래키로 가져와,
새로운 릴레이션에 포함시킨다
새로운 릴레이션의 기본키는 다중 값 속성과 외래키를 조합하여 지정한다
부하직원이라는 다중 값 속성을 새로운 릴레이션으로 변환한다
이때 사원번호라는 기본키를 외래키로 가져오고, 그 외래키(사원번호)와 다중 값 속성(부하직원)을 조합하여
사원-부하직원 릴레이션의 기본키로 사용한다
개체가 자기 자신과 관계를 맺는 순환 관계도 기본규칙을 그대로 적용한다
'Computer science > Database' 카테고리의 다른 글
데이터베이스의 원리와 응용 8 (0) | 2022.04.09 |
---|---|
데이터베이스의 원리와 응용 7 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 5 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 4 (0) | 2022.04.09 |
데이터베이스의 원리와 응용 3 (0) | 2022.04.09 |