1. 관계 데이터 모델이란?
- 데이터를 2차원 테이블 형태인 릴레이션으로 표현한 것
- 수학에서의 릴레이션과 집합 이론에 기초
- 일반 사용자는 테이블의 형태로 생각
- 테이블의 열(column)[field / item] ~ 관계 데이터 모델의 애트리뷰트
- 테이블의 행(row)[record] ~ 관계 데이터 모델의 튜플
✓ 관계 데이터 모델(릴레이션) -> 관계 데이터 베이스
2. 애트리뷰트와 도메인
1) 도메인(domain) -> 타입 개념
- 애트리뷰트가 취할 수 있는 값들의 집합
2) 애트리뷰트(attribute) -> 변수 개념
- 도메인의 역할 이름
- 한 릴레이션 내의 모든 애트리뷰트의 이름은 서로 상이해야 함
3) 단순 도메인
- 단순 애트리뷰트(원자 값)으로 이루어진 도메인
4) 복합 도메인
- 복합 애트리뷰트(분해될 수 있는 값 ⇢ 릴레이션 내에서 하나로 취급!)으로 이루어진 도메인
✓ 애트리뷰트 이름과 도메인 이름은 같을 수 있다!
3. 릴레이션
1) 릴레이션 스키마 (Relation Schema = Relation Scheme = Relation Type)
- 릴레이션 이름 + 애트리뷰트 이름 명세
- R(A1, A2, … , An) 또는 R({A1, A2, … , An})로 표현 → 애트리뷰트의 집합
✓ 정적 성질
- 시간에 무관 - 릴레이션 타입(type)
2) 릴레이션 인스턴스 (Relation Instance = Relation Exetension)
- 어느 한. 시점에서 릴레이션이 포함하고 있는 튜플들의 집합
- 튜플: <V1, V2, … , V3> = {(attr1 = V1, attr2 = V2, … , attrn = Vn)}
- {<V1, V2, … , V3>}로 표현 → 튜플의 집합
- snapshot: 계속해서 변하는 DB의 특정 시점의 값을 본다.
✓ 동적 성질
- 삽입, 삭제, 갱신으로 시간에 따라 변함 - 릴레이션의 값(value)
3) 릴레이션의 특성
① 튜플의 유일성(uniqueness of tuples) → 릴레이션은 튜플들의 “집합(set)”!
② 튜플의 무순서성(no ordering of tuples) → 릴레이션은 튜플들의 “집합(set)”!
③ 애트리뷰트의 무순서성(no ordering of attributes)
→ 릴레이션 스키마는 애트리뷰트들의 “집합(set)”!
→ 튜플은 <attribute:value>쌍의 “집합(set)”!
④ 애트리뷰트의 원자성(atomicity)
- 애트리뷰트 값은 원자 값(atomic value) → 논리적으로 분해 불가능(✓질의에 따라 해석!)✓ 정규화 릴레이션(nomarlized relation)
- 애트리뷰트 값으로 원자 값만 허용되는 릴레이션 - 비정규화 릴레이션은 분해(decomposition)를 통해 정규화 - 널 값(null value) 또한 원자 값으로 취급된다
1. 관계 데이터베이스 개념
- 테이블들의 집합 → 정확히 말하자면 릴레이션의 집합
- 데이터베이스를 시간에 따라 그 내용(상태, 값)이 변할 수 있는 테이블 형태로 표현하는 것
✓ 관계 데이터베이스 스키마(relational database schema) = {릴레이션 스키마} + 무결성 제약조건(✓DB에 데이터의 오류가 없도록 하는 조건을 기술!)
✓ 관계 데이터베이스라고 할 때, 데이터가 물리적 테이블 형태로 저장된다는 것을 의미하진 않는다.
2. 데이터 베이스 키
1) 키(key): 각 튜플을 유일하게 식별할 수 있는 애트리뷰트 집합(set of attributes) → K({A1, A2, ... , An})의 형태
2) 후보 키(candidate key): ①유일성과 ②최소성을 만족하는 애트리뷰트 집합
① 유일성(uniqueness): 각 튜플에 대해 애트리뷰트 집합 K의 값은 유일
② 최소성(minimality): K는 각 튜플을 유일하게 식별하는 데 필요한 애트리뷰트만 포함
- e.g. 한 학과 안에선 동명이인이 없다는 가정하에) 이름 + 학과(OK) ↔ 학번 + 주민번호(X)
→ 학번과 주민번호 모두 각 튜플을 유일하게 식별할 수 있는 애트리뷰트이므로!3) 슈퍼 키(super key): 유일성은 만족하지만 최소성은 만족하지 않는 애트리뷰트의 집합
4) 기본 키(primary key): 후보 키 중에서 지정된 하나의 키
- 후보 키 중에서 지정된 하나의 키 (DB 설계자가 지정)
- null 값이 허용되지 않음 (각 튜플에 대한 기본 키 값은 항상 유효해야 함!)
5) 대체 키(alternate key): 후보 키 중에서 기본 키를 제외한 나머지 후보 키
6) 외래 키(foreign key)
- 릴레이션 R의 애트리뷰트 집합 FK가 릴레이션 S의 기본 키일 때, 이 FK는 R의 외래 키(foreign. key)이다.
- FK 도메인 = S의 PK 도메인
- FK의 값은 S에 존재하는 값이거나 null(후술할 참조 무결성)
- R과 S가 같은 릴레이션일 수도 있다.
- R을 참조 릴레이션(referencing relation), S를 피참조 릴레이션(referenced relation)이라 한다.
- R은 FK를 통해 S를 참조
3. 무결성 제약 (Integrity Constraints)
1) 개체 무결성 (entity integrity)
- 기본 키 값은 항상 null 값을 가질 수 없다
2) 참조 무결성 (reference integrity)
- 외래 키 값은 반드시 피참조 릴레이션의 기본 키 값이거나 null이다.
✓ 이 무결성 제약조건은 데이터베이스 상태(database state)가 항상 만족시켜야 할 제약조건이다!
4. 데이터베이스 상태 (Database State)
- 어느 한 시점에 DB에 저장되어 있는 모든 데이터 값(튜플)
- 데이터베이스 인스턴스
→ 데이터베이스 스키마에 포함되어 있는 모든 릴레이션들의 인스턴스 집합- 데이터베이스 상태의 계속적인 변화
- 삽입, 삭제, 변경 연산
⭐️ DBMS는 데이터베이스 상태의 변화에도 항상 무결성 제약을 만족시키도록 해야 한다!