1. 데이터 모델링 이론 - c. 관계형 모델 이론
※ 관계형 데이터 모델이란
관계형 데이터 모델은 데이터를 2차원 테이블(표) 형식으로 정의하고 표현한 모델이다. 이러한 테이블 형태를 릴레이션(Relation)이라고 한다.
릴레이션은 두 개 이상의 그룹(집합)에서 각각의 요소들을 짝지어 연결한 것들의 모음을 의미한다.
릴레이션 스키마는 릴레이션명과 어트리뷰트를 포함하고 튜플은 릴레이션 인스턴스에 해당한다.
어트리뷰트(Attribute): 릴레이션을 구성하는 각 열
튜플(Tuples): 릴레이션의 각 행, 인스턴스 데이터
- 릴레이션의 튜플은 모두 다른 값을 가지며 중복된 튜플을 허용하지 않는다.
- 튜플은 순서와 무관하며 순서가 특별한 의미를 가지지 않는다.
- 어트리뷰트는 더 쪼갤 수 없는 원자값으로 구성되며, 튜플 순서처럼 어트리뷰트 순서도 의미를 가지지 않는다.
- 어트리뷰트 명칭은 서로 다르며 유일하지만, 어트리뷰트 값은 동일 해도 상관없다.
※ 관계형 모델의 키
- 슈퍼 키(Super Key) : 튜플을 고유하게 식별 할 수 있는 속성 집합. 릴레이션은 한 개 이상의 슈퍼 키를 가질 수
있으며, 슈퍼 키 값은 모ㅊ든 튜플에서 유일해야 함 - 후보 키(Candidate Key) : 튜플을 고유하게 식별 할 수 있는 최소한의 속성 집합. 모든 후보 키는 슈퍼 키이지
만, 모든 슈퍼 키가 후보 키는 아님(슈퍼 키가 후보 키 포함) - 기본 키(Primary Key) : 릴레이션은 하나 이상의 후보 키가 있을 수 있으며 그 중 하나만을 기본 키로 선택할
수 있음. 후보 키와 마찬가지로 유일성, 최소성을 가짐 - 대체 키(Alternate Key) : 후보 키 중에 기본 키가 아닌 후보 키가 대체 키에 해당함.
- 외래 키(Foreign Key) : 어떤 릴레이션의 어트리뷰트 값이 다른 릴레이션에 속한 어트리뷰트의 기본 키를 참조
하는 경우를 말함. 외래 키는 NULL이 될 수 있고 중복된 튜플을 가질 수 있음
※ 제약조건
키 제약조건: 튜플을 유일하게 식별할 수 있는 어트리뷰트들로 구성. 다른 튜플의 키 값과 중복된 값이 있어서는 안됨.
실체무결성: 릴레이션의 기본키를 구성하는 모든 어트리뷰트는 NULL값이 아니어야하고, 릴레이션 내에서 오직 하나의 값만 존재해야 한다.
영역무결성: 릴레이션 내의 각 어트리뷰트 값은 반드시 정의된 도메인에 속한 값이어야 한다.
참조무결성: 자식 릴레이션의 외래키는 참조하는 부모 릴레이션의 기본키 값 이외의 값을 가질 수 없으며, 두 릴레이션 값의 일관성을 유지해야한다.
※ 함수 종속
- 완전 함수종속: 기본 키 전체에 의존해야 값이 결정되는 경우
ex) 학생 테이블에서 기본 키가 학생ID + 과목인 경우, 성적은 학생ID와 과목 두 가지 모두가 필요해야 유일하게 결정될 수 있다. - 부분 함수종속: 기본 키의 일부에만 의존하여 값이 결정되는 경우
ex) 학생 테이블에서 기본 키가 학생ID + 과목인데, 학생 이름은 학생ID만으로 고유하게 결정될 수 있는 경우 - 이행적 함수종속: 기본 키가 아닌 다른 속성을 통해 간접적으로 값이 결정되는 경우
ex) 학생 테이블에서 학생ID가 학과 코드를 결정하고, 학과 코드가 다시 학과 이름을 결정할 때
※ 정규화
제 1정규형
테이블의 모든 열이 하나의 값만을 가져야 하며, 중복되는 행이 없어야 한다.
→ 각 셀(열의 값)이 하나의 값만을 가져야 한다는 의미이다. 배열이나 여러 값이 한 셀에 들어가면 안 됨.
잘못된 예시: 학생의 취미가 여러 개일 때 한 열에 "독서, 음악, 영화"와 같이 여러 값을 넣는 경우는 1NF에 어긋남.
제 2정규형
제 1정규형을 만족한 상태에서, 기본 키 전체에만 의존해야 한다. 부분 함수 종속이 발생하면 안 됨.
→ 기본 키가 두 개 이상으로 구성된 테이블에서, 기본 키의 일부가 아닌 전체에 의존하는 속성만 포함해야 한다는 의미
* 종속된다는 것은 어떤 값이 다른 값에 의해 결정된다는 뜻이다.
- 예를 들어, 학생ID + 과목을 기본 키로 가진 성적 테이블이 있다고 할 때, 학생 이름이 학생ID에만 종속되면 2NF를 만족하지 않는다.
- 2NF 만족: 학생 이름을 학생 테이블로 분리하고, 학생ID와 과목이 모두 필요한 성적만 남김.
제 3정규형
제 2정규형을 만족하고, 키가 아닌 어트리뷰트들 간에는 서로 종속적인 관계가 없어야 한다. 이를 이행적 함수 종속이라고도 하며 이를 제거해야한다.
→ 기본 키가 아닌 속성 간에 다른 속성을 거쳐 간접적인 종속이 없어야 한다는 의미이다.
예를 들어, 학생 테이블에서 학생ID가 학과 코드를 결정하고, 학과 코드가 학과 이름을 결정한다면,
학생ID → 학과 코드 → 학과 이름의 관계가 생기므로 3NF에 어긋난다.
3NF 만족: 학과 테이블을 분리하여 이행적 종속을 제거한다.
※ 연결함정
연결 함정 (Connection Trap)은 데이터베이스 설계 시 ER 다이어그램에서 발생하는 오류 중 하나로, 엔터티 간의 관계를 잘못 정의해서 원하는 정보를 제대로 조회할 수 없게 되는 상황을 말한다.
연결 함정에는 크게 두 가지 유형이 있다. 부채꼴 함정 (Fan Trap)과 빗물받이 함정 (Chasm Trap)이다.
부채꼴 함정
엔티티 사이에 관계가 정의되어 있지만, 관계가 모호할 때가 있다. M:N 관계를 해결하기 위해 교차 엔티티를 추가하면서 1:M 관계를 만들 때 나타날 수 있다.
→ 엔티티 간의 관계를 잘못 설계하여 연계된 정보를 추적하지 못해 발생하므로, 이들 간의 관계를 명확히 하여 해결할 수 있다.
- 부채꼴 함정: 엔터티 간 관계가 계층적으로 잘못 연결되어 원하는 데이터를 조회할 수 없는 상황.
빗물받이 함정
엔티티 사이에 관계가 정의되어 있지만, 일부 엔티티와 엔티티 사이의 관계가 존재하지 않는 경우에 발생한다.
→ 일부 누락된 관계를 추가하여 해결 할 수 있다.
- 빗물받이 함정: 엔터티 간 일부 경우에만 성립하는 관계를 잘못 정의해 정보 조회에 어려움이 생기는 상황.
ER모델과 관계 모델
ER모델은 관계 모델, 망 모델, 엔티티 집합 모델을 기초로 이들 간의 서로 다른 개념을 통합하여 실 세계를 표현하는 것을 바탕으로 하고 있다.