데이터베이스 시스템 7판을 읽으며 간략하게나마 정리하는 글입니다.
1. 개체 관계 모델
개체-관계(E-R) 데이터 모델(entity-relationship data model)은 데이터베이스의 전체 논리 구조를 나타내는 조직의 schema를 명시함으로써 데이터베이스 설계를 쉽게 하도록 개발되었다.
1 - 1) 개체 집합
개체(entity)는 실세계에서 다른 모든 객체와 구별되는 유무형의 사물이다.
예를 들어 대학교에서 각 개인은 하나의 개체다. 개체는 속성의 집합을 가지며, 속정 중 일부 집합은 개체를 고유하게 구별하기도 한다.
개인은 그 사람을 유일하게 구별해주는 person_id라는 속성을 가질 수 도 있다.
개체 집합(entity set)은 같은 속성을 공유하는 같은 유형의 개체의 집합이다.
또한 개체 집합의 확장(extension)이라는 용어를 개체 집합이 포함하는 개체의 실제 모음을 지칭하기 위해 사용한다.
예를 들어 대학교에서 실제 교수들의 집합은 instructor 개체 집합의 확장을 형성한다.
개체를 속성(attribute)의 집합으로 표현한다.
instructor 개체 집합의 가능한 속성은 ID, name, dept_name, salary다
특히 ID속성은 개체를 유일하게 식별하기위해 사용한다.
1 - 2) 관계 집합
학생 Shine과 교수 Honux를 연결하는 advisor(지도교수)라는 관계를 정의할 수 있다.
관계 집합(relationship set)은 같은 유형의 관계들의 집합이다.
instructor와 student 두 개체 집합을 생각해보자. 학생과 지도교수 열할을 하는 교수 사이의 연관성을 표현하기 위해 advisor라는 관계집합을 정의할 수 있다.
개체 집합 사이의 연관을 참여(particiaption)라 한다. 즉, 개체 집합 E1, E2, ..., En은 관계집합 R에 참여한다.
관계에서 개체가 행하는 기능을 개체의 역할 이라 한다.
동일한 개체 집합이 관계에 한번 이상 다른 역할을 가지고 참여하는 경우처럼, 관계 집합에 연관되는 개체 집합이 서로 구분되지 않는 경우 역할이 중요하게 작용한다.
관계는 설명속성(descriptive attribute)이라는 속성을 가질 수 있다.
다음 예시를 살펴보자.
student와 section간에 takes라는 관계가 있고, 설명 속성 grade가 있다.
(두 개체의 집합이 관련된 관계 집합입니다.)
2. 복합 속성
각 속성이 가질 수 있는 값의 집합이 존재하는데, 이를 그 속성의 도메인(domain) 혹은 값 집합(value set)이라 한다.
E-R 모델에서 사용될 속성으 다음과 같은 유형으로 분리된다.
▶ 단순속성 (simple attribute)
단순속성은 더이상 작은 단위로 나뉘지 않는 속성이다.
▶ 복합속성 (composite attribute)
더 작은 단위로 나뉠 수 있다.
예를 들어 주소를 street, city, state, postal_code를 속성으로 가진 address라는 복합 속성으로 정의할 수 있다.
다음 그림은 instructor 개체 집합에 있는 복합 속성의 예시이다.
▶ 단일값 속성 과 다중값 속성
특정 개체의 ID와 같이 하나의 값을 참조한다. 따라서 단일값 속성이다.
속성이 특정 개체에 대한 값의 집합을 가지는 인스턴스가 존재하는 경우도 있다. 이를 다중값 속성이라 부른다.
▶ 유도 속성
이 속성 유형의 값은 다른 관련된 속성이나 개체의 값으로부터 유도될 수 있다.
예를 들어 한 유저의 생일 속성이 있으면 이로부터 나이를 계산할 수 있다. 이러한 나이를 유도속성이라 부른다.
Null값은 "해당 사항 없음", 즉 그 개체에 대한 값이 존재하지 않음을 나타낸다.
또한 Null값은 그 속성의 값이 알려지지 않았음을 표시할수도 있다.
3. 대응 카디널리티 (mapping cardinality)
관계 집합을 통해 다른 개체와 관련될 수 있는 개체의 수를 나타낸다.
일반적으로 이진 관계 집합을 설명하는데 가장 유용하다.
- 일대일 : A의 한 개체는 최대 B의 하나의 개체와 연관을 가지고, B의 한 개체는 최대 A의 하나의 개체와 연관을 가진다.
- 일대다 : A의 한 개체는 임의의 수(0또는 그 이상)의 B의 개체와 연관을 가진다. 그러나 B의 한 개체는 A와 최대 하나의 개체만 연관을 갖는다.
- 다대일 : A의 한 개체는 B와 최대 하나의 연관을 갖는다. 그러나 B의 한 개체는 A의 임의의 수(0또는 그 이상)의 개체와 연관을 갖는다.
- 다대다 : A의 한 개체는 임의의 수(0또는 그 이상)의 B개체와 연관을 갖고, B의 한 개체도 임의의 수(0또는 그 이상)의 A의 개체와 연관을 갖는다.
개체 집합 E의 모든 개체가 관계 집합 R의 적어도 하나의 관계에 참여해야 하는 경우, E의 R에 대한 참여를 전체(total) 참여라고 한다.
E의 일부 개체가 R의 관계에 참여하지 않을 수 있는 경우, 관계 R에서 개체 E의 참여를 부분(partial)참여라 한다.
이중선을 통해 전체 참여를 표현한다.
4. 주 키
주어진 개체 집합 내의 개체와 주어진 관계 집합 내의 관계를 구별하는 방법을 명세하는 방법이 있어야 한다.
4 - 1) 개체 집합
개별 개체는 개념적으로 구분된다. 하지만 데이터베이스 관점에서 개체 간의 차이점은 개체의 속성으로 표현되어야 한다.
그러므로 한 개체를 표현하는 속성의 값은 그 개체를 유일하게 구별(uniquely identify)할 수 있어야 한다.
4 - 2) 관계 집합
관계를 구별할 방법 또한 필요하다.
R을 개체 집합 E1, E2, E3 ... En이 연관된 관계 집합이라고 하자.
primary-key(Ei)이 개체 집합 Ei의 주키를 이루는 속성의 집합이라고 표현하고, 모든 주 키의 속성 이름이 유일하다고 가정하자.
관계 집합에 대한 주키의 조합은 관계 집합 R에 연관된 속성의 집합에 의존한다.
만약 관계 R이 부가적으로 가진 속성이 없다면
위 식이 집합 R의 개별 관계를 나타낸다.
만약 추가적인 속성이 있다면, 다음과 같이 나타낼 수 있다.
4 - 3) 약한 개체 집합
Section 개체 집합과 course 개체 집합 사이의 sec_course 관계 집합을 생성한다고 가정해보자.
여기서 sec_course의 정보는 중복된다는 것에 주목하자. 왜냐하면 section은 이미 그 분반이 연결되어 있는 과목을 식별해주는 course_id라는 속성을 가지고 있기 때문이다.
이러한 중복성을 다룰 수 있는 한가지 방법으로는 sec_course 관계를 제거하는 것 이다.
아니면 또 다른 방법으로, section 개체에 course_id 속성을 저장하지 않고 남아있는 sec_id, year, semester 속성만 저장하는 것 이다.
다만 이렇게 제거해버리면 section 개체를 유일하게 식별하기가 힘들어진다.
서로 다른 과목에 해당하는 분반은 동일한 sec_id, year, semester를 가질 수도 있기 때문이다.
이러한 문제를 해결하기 위해 sec_course 관계를 section 개체를 유일하게 식별하는데 요구되는 추가 정보를 제공하는 특별한 관계로 취급한다.
약한 개체 집합의 개념은 위의 내용을 정형화 해준다.
약한 개체 집합(weak entity set)은 식별 개체 집합이라 하는 다른 개체 집합에 의존하여 존재하는 개체 집합이다.
주키를 약한 개체와 연결하는 대신, 식별 개체의 주 키와 구별자 속성(discriminator attribute)을 함께 사용하여 약한 개체를 유일하게 식별한다.
약한 개체 집합이 아닌 개체 집합을 강한 개체 집합(strong entity set)이라 한다.
모든 약한 개체는 식별 개체와 연관되어야 한다.
즉, 약한 개체 집합은 식별 개체 집합에 존재 종속적(existence dependent)이다.
식별 개체 집합은 그것이 식별하는 약한 개체 집합을 소유 한다고 말한다.
약한 개체 집합과 식별 개체 집합을 연관 짓는 관계를 식별관계(identifying relationship) 라 부른다.
이후 생략.
'CS > DB (2022-1)' 카테고리의 다른 글
[DB] 데이터 저장 장치 구조 (1) | 2022.10.18 |
---|---|
[DB] 물리적 저장 장치 시스템 (0) | 2022.10.09 |
[DB] 고급 SQL (1) | 2022.10.04 |
[DB] 중급 SQL - 2 (1) | 2022.09.30 |
[DB] 중급 SQL - 1 (1) | 2022.09.29 |
댓글