1. 관계 모델의 개념
가. 관계형 모델(Relational Model)
관계(Relation)는 집합론에 기반한 수학적 개념
이 모델은 1970년에 IBM 연구소의 E.F. Codd 박사에 의해 처음 제안됨.
비형식적으로((Informally), 릴레이션은 테이블로 간주될 수 있음.
관계 모델에서 데이터베이스는 릴레이션(테이블)의 집합으로 표현됨.
릴레이션은 투플(행, 로우, 레코드, 인스턴스)들의 집합으로 표현됨.
투플은 애트리뷰트(열, 컬럼, 필드, 속성)들로 구성됨.
나. 릴레이션 관련 용어
1) 릴레이션의 키(Key)
각 릴레이션은 포함하고 있는 투플들을 유일하게 구별할 수 있도록 하는 속성을 가지고 있어야 함, 이 속성을 키 라고 함.
예) STUDENT 테이블의 SSN 속성
때때로 릴레이션의 의미와는 아무 관계없는 행번호나 순차번호를 삽입하여 키로 사용하기도 함, 이런 키들 을 인공키(Artificial key) 또는
대행키(Surrogate key)라고 함.
2) 릴레이션 스키마(Relation schema)
릴레이션 이름 R과 속성 Ai 들의 집합으로 표기
R(A1, A2,... An)
키 속성에는 밑줄을 그음
예) STUDENT (SSN, Name, BirthDate, Addr)
3) 도메인(Domain)
속성이 가질 수 있는 값의 집합
예) Name 속성의 도메인 : 개인 이름들의 집합, 문자열
예) Age속성의 도메인 : 사원들 나이의 집합, 정수
실제 데이터 타입(int, float, char, varchar(10) 등)으로 명시
4) 릴레이션 R(A1, A2, ..., An)의 투플
속성의 개수에 맞춰 'n-투플' 이라고 함
순서화된 값들의 집합 t=<v1, V2, ..., vn>
값 vi는 dom(Ai) 의 원소임
5) 릴레이션 R 의 인스턴스 r(R)
투플들의 집합 r(R) = {t1, t2, ..., tm}
\(r(R) \subseteq dom(A1) \times \dots \times dom(An)\)
r(R) 은 실 세계의 특정 상태를 반영
6) 릴레이션에서 투플의 순서
릴레이션에서 투플의 순서는 의미가 없음.
집합에서 원소의 순서가 무의미한 것과 마찬가지임.
7) 투플 내에서 값들의 순서
n-투플은 n개 값의 리스트이며, 투플 내에서 값들의 순서는 지켜져야 함.
그러나 각 속성과 값이 서로 대응될 수 있다면 값들의 순서는 중요하지 않을 수 있음.
예를 들어 하나의 투플을, (속성, 값) 쌍등의 집합으로 표현하면 속성과 값은 서로 대응될 수 있으며 이때는 값의 순서가 중요하지 않음.
8) 투플 내의 속성 값
더 이상 나눌 수 없는 원자 값들(Atomic Value)임.
값을 알 수 없거나(Unknown) 해당되는 값이 없을 때(Not applicable)에는 null 이라는 특수 값을 사용함.
ER 모델에서의 다치 속성(Multi-valued Attribute)과 복합 속성(Composite Attribute)을 관계 모델에서는 허용되지 않음.
다. 관계 모델의 표기
차수가 n인 릴레이션 스키마 R은 R(A1, A2, ..., An)으로 표기함.
릴레이션 r(R)의 n-투플 t는 t=<v1 , v2, ..., vn>으로 표기함, 여기서 vi는 속성 Ai의 값임.
t[Ai] 또는 t.Ai 는 t에서 속성 Ai의 값 vi를 가리킴.
t[Ai] = vi
대문자 Q. R, S 등은 릴레이션 이름을 나타냄.
소문자 q, r, s 등은 릴레이션 상태를 나타냄.
소문자 t, u, v 등은 투플을 나타냄.
'STUDENT' 처럼 릴레이션 스키마의 이름은 릴레이션의 현재 투플들의 집합, 즉 현재의 릴레이션 상태를 가리킴.
반면에 'STUDENT(Name, SSN, ...)' 는 릴레이션 스키마를 가리킴.
용어요약
informal 용어 | formal 용어 |
테이블 table |
릴레이션 relation |
컬럼 헤더 column header |
애트리뷰트, 속성 attribute |
모든 가능한 컬럼 값 all possible column value |
도메인 domain |
2. 관계 모델의 제약조건
가. 무결성 제약조건(IC; Integrity Constraints)
모든 릴레이션 인스턴스들이 항상 만족해야 하는 조건
간단히 '제약조건' 이라고도 함.
1) 주요 제약조건
도메인 제약조건(Domain constraints)
키 제약조건(Key constraints)
참조 제약조건(Referential constraints)
2) 도메인 제약조건
각 투플에서 속성 A 에 해당 되는 값은 반드시 A의 도메인 dom(A)에 속하는 원자값이어야 함.
도메인과 관련된 데이터 타입
정수, 실수와 같은 표준 숫자형
문자, 고정길이 문자열, 가변길이 문자열
날짜, 시간 등
3) 키 제약조건
엔티티 무결성 제약 조건이라고도 함.
키 속성에 해당되는 값은 유일해야 하며, null값을 가질 수 없다는 제약 조건
기본키가 각 투플들을 식별하는 데에 이용되기 때문
참고로 R의 기본키에 속하지 않는 속성들도 null값을 가질 수 없도록 제한할 수 있음.
릴레이션의 속성을 정의할 때 not null로 명시
4) 키의 종류
유일성(Uniqueness)과 최소성(Minimality)을 갖는 키
후보키(CK; Candidate Key)
모든 가능한 키 집합
주키(PK; Primary Key)
설계자가 릴레이션 상의 엔티티들을 유일하게 구별하기 위해 후보 키 중에서 선택한 키, 기본적으로 인덱스를 구성할 때 사용됨.
대체키/이차키(AK; Alternate Key)
주 키로 선택 받지 못한 키, 인덱스 구성에 사용될 수도 있음.
유일성만 가지는 키
수퍼키(Super Key)
Key를 포함하는 수퍼셋(Super Set)
유일성을 갖지 않으며 단지 참조용으로만 쓰이는 키
외래키(Foreign Key)
참조하는 릴레이션으로부터 빌려온 키
마. 참조 제약조건
하나의 릴레이션 R에서 외래키 FK 의 값으로 다른 릴레이션 S의 기본키 PK 값을 참조하는 경우에 R과 S는 참조 무결성 제약 조건을 가진다고 함.
t1[FK] = t2[PK]이면 R의 투플 t1이 S의 투플 t2를 참조한다고 하며, FK를 외래키(Foreign key)라고 부름.
R을 참조한(Referencing) 릴레이션, S를 참조된(Referenced) 릴레이션이라고 부름.
FK 의 값은 참조하고 있는 릴레이션의 PK 에 나타나는 값들만 가능함, 하지만 참조 관계가 없다면 FK가 null 값을 가질 수도 있음.
앞서 소개된 키 제약조건과 도메인 제약조건은 하나의 릴레이션에 대한 제약조건이지만, 참조 무결성은 두 릴레이션에 대한 제약조건임을 유의해야 함.
스키마 다이어그램에서 참조 무결성 제약조건은 R1.FK에서 R2.PK 로의 화살표로 표시함.
3. 관계 데이터베이스 스키마
가. RDB 스키마와 RDB 인스턴스
1) 릴레이션 스키마들의 집합 S와 무결성 제약조건 IC로 구성됨.
릴레이션 스키마 집합 S를 데이터베이스 이름이라 함.
S={R1, R2, ..., Rn}
2) RDB 인스턴스(/상태)
릴레이션 상태들의 집합