일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 프로그래머스
- LSTM
- instaloader
- OS
- Python
- Regression
- python3
- db
- 데이터베이스
- 국민대
- Seq2Seq
- 재귀
- machine learning
- PANDAS
- 파이썬
- 머신 러닝
- gan
- googleapiclient
- 국민대학교
- C++
- SQL
- programmers
- Stack
- GIT
- 정렬
- 운영체제
- 스택
- Heap
- 회귀
- kmu
- Today
- Total
정리 노트
논리적 데이터 모델링 본문
이 포스트는 국민대학교 소프트웨어학부 '데이터베이스' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다!
관계 데이터 모델
논리적 설계 단계에서는 관계 데이터 모델(Relational Data Model)을 사용합니다. 관계 데이터 모델은 테이블 형태의 relation을 통해 데이터 간의 관련성을 표현하는 모델입니다. 각 테이블들의 정의를 relation scheme, relation scheme의 집합을 schema라 해서 논리적 설계 단계의 산출물입니다. 이를 통해 DB는 relation scheme에 정의된 형태로 저장된 데이터들의 집합이라 표현할 수 있습니다.
ERD에서 relation scheme으로
논리적 설계 단계에서는 개념적 설계 단계에서 완성한 ER Diagram을 relation scheme으로 변환해야 합니다. 이때 만들어지는 relation 수가 적을수록 효율적인 검색 연산이 가능해집니다.
변환할 때의 규칙은 여러 가지가 있고, 이러한 과정들이 자동적으로 이루어지는 도구들도 있습니다.(예: https://erdplus.com/)
변환 규칙
1. 정규 개체 타입인 경우, relation(=table)으로 생성합니다. 이때, 유도 속성은 테이블의 속성에서 제외되고 복합 속성은 이 속성의 구성 원소인 단순 속성들만을 포함합니다.
위의 그림은 개체 S에 대한 ERD를 relation으로 바꾼 예시입니다. S의 속성 중 A3는 유도 속성이므로 relation에는 포함되지 않았습니다. 그리고 A4 속성은 A5, A6 속성을 포함하는 복합 속성이므로 A4를 적는 것이 아니라, A5와 A6을 각각 단일 속성으로 relation에 작성했습니다.
2. 1:1 관계 타입인 경우, 한쪽 개체의 키를 다른 쪽 개체의 relation에 외래 키로 추가하고 관계 타입의 속성들도 추가합니다.
개체 S와 T는 관계 R에 대해 부분 참여 하고 있고, R은 1:1 관계 타입입니다. 위 그림의 경우, T의 키를 S의 외래 키로 추가했습니다.(외래 키 표시는 속성 이름 뒤에 * 표시를 붙였습니다.) 그리고 R의 속성 C도 S의 relation의 속성으로 추가했습니다.
만약 전체 참여하는 개체가 존재한다면 전체 참여하는 개체의 relation에 다른 개체의 키를 외래 키로 추가하고 관계 타입의 속성들도 추가합니다. 이를 통해 테이블에서 null 값을 최소화할 수 있습니다.
위 그림의 경우, 개체 T가 관계 R에 전체 참여하고 있으므로 S의 키 A1을 T의 relation의 외래 키로 추가했습니다.
3. 1:n 관계 타입인 경우, 별도의 relation을 생성하지 않고 외래 키를 n 쪽의 relation에 추가합니다. 1 쪽에 두면 다중값 속성을 허용해야 하는데 논리적 설계 단계에서는 다중값을 허용하지 않습니다.
또한, 순환적 관계의 경우는 역할 이름을 접두사로 사용해 기본 키와 외래 키가 구분되도록 해야 합니다.
위 그림에서는 개체 S가 X와 Y라는 역할로 관계에 참여하고 있습니다. 이런 ERD의 경우, 역할 이름(X 또는 Y)을 접두사로 사용해 기본 키인 A1과 구분될 수 있도록 명시합니다.
4. 존재 종속 관계 타입인 경우, 별도 relation을 생성하지 않고 정규 개체의 키를 약한 개체의 relation에 기본 키이자 외래 키로 추가하고 약한 개체의 부분키를 기본키로 합니다.
만약 존재 종속 관계가 다른 개체와 관계로 연결된 경우, 이를 구분해서 생각할 수 있어야 합니다.
위의 그림을 보면 개체 T는 개체 S와 존재 종속 관계이지만, 개체 T는 개체 U와 일반적인 1:n 관계입니다. 하나로 연결된 ERD를 구분해서 생각해 헷갈리지 않도록 해서 정확한 relation을 만들 수 있습니다. 존재 종속 관계와 1:n 관계를 생각해 relation을 작성하면 아래와 같이 작성됩니다.
위와 같은 경우, 순서를 제대로 판단해서 relation을 작성해야 합니다. 먼저 개체 S가 개체 T와의 존재 종속 관계에서 정규 개체이고 다른 관계에서 약한 개체에 해당하지 않으므로 개체 S와 개체 T의 존재 종속 관계부터 차례대로 relation을 작성해야 합니다.
5. n:m 관계 타입인 경우, relation으로 생성합니다. 관계에 참여하는 각 개체의 기본 키는 relationship relation에 기본 키이자 외래 키로 추가합니다.
6. 3차 이상의 다원 관계인 경우, relation으로 생성합니다. 관계에 참여하는 모든 개체의 키들은 relation에 기본 키이자 외래 키로 추가합니다.
7. ISA 관계인 경우, 별도의 relation을 생성하지 않습니다. 일반화인 경우, 하위 개체 타입만 relation으로 생성하고 상위 개체 타입의 모든 속성을 하위 개체 타입의 속성으로 추가합니다. 이때, 상위 개체 타입의 키는 기본 키가 아닌 일반 속성으로 추가합니다. 세분화인 경우, 상위 개체 타입과 하위 개체 타입 모두 relation으로 생성하고 상위 개체 타입의 키를 하위 개체 타입의 외래 키로 추가합니다.
위의 그림을 보면 개체 U가 상위 개체, S와 T가 하위 개체임을 알 수 있습니다. 일반화를 나타내는 ERD에서 relation으로 바꿀 때 U 개체에 대한 relation은 생성하지 않습니다. S와 R의 relation에 U의 속성들이 일반 속성으로 추가됩니다.
위와 같이 세분화를 나타내는 ERD에서 relation으로 바꾸는 경우 U의 relation도 같이 생성합니다. S와 T의 relation에는 U의 키가 외래 키로 추가됩니다.
8. 다중값 속성은 relation으로 생성합니다.
위의 그림에서는 A3 속성이 다중값 속성입니다. 다중값 속성은 새로운 relation(S')을 하나 생성하고 개체 S의 키를 S' relation의 기본 키이자 외래 키로 추가합니다.
'개념 정리 > 데이터베이스' 카테고리의 다른 글
관계 데이터 연산 - 집합 연산자 (0) | 2023.09.13 |
---|---|
관계 데이터 구조 (0) | 2023.08.10 |
ERD(E-R Diagram) (0) | 2023.07.20 |
데이터베이스의 개념적 설계 (0) | 2023.07.20 |
DBS(Database System) (0) | 2023.07.04 |