릴레이션 r(R)은 n개의 도메인 dom(A1), dom(A2), ... , dom(An)상의 수학적 릴레이션으로서, R을 정의하는 도메인들의 카티션 곱(데카르트 곱)의 부분집합이므로 아래처럼 표현이 가능하다.
카디날리티(cardinality): |R|
카티션 곱으로 만든 튜플의 총 개수 = |dom(A1)| X |dom(A2)| X ... X |dom(An)|
ex) S1 ={0, 1}, S2 ={a, b, c} -> |R| = 2 * 3 = 6
차수는 애트리뷰트의 개수로 헷갈리지 않게 주의하기
비공식 단어
공식 단어
Table
Relation
Column
Attribute/Domain
Row
Tuple
Values in a column
Domain
Table Definition
Schema of Relation(or scheme)
Poplulated Table
Extension
4. 릴레이션의 특징
릴레이션 r(R)에서 튜플들의 순서
릴레이션은 튜플들의 집합으로 정의된다.
집합은 원소들 사이에 순서가 없으므로 릴레이션에서도 튜플들은 특정 순서를 갖지 않는다.(튜플 순서가 달라도 내용물이 같으면 같은 릴레이션임)
하지만 파일 안에서는 디스크(메모리)에 물리적으로 저장이 되므로 저장 순서가 존재함
릴레이션 스키마 R에서의 애트리뷰트들의 순서
우리는 R(A1, A2, ..., An)의 애트리뷰트와 t = <v1, v2, ..., vn>의 값들이 순서가 있다고 생각해볼 수 있음. 하지만 더 일반적인 추상적 정의에 의하면 순서가 중요하지 않음
릴레이션 스키마 R = { A1, A2, ... , An }은 애트리뷰트들의 집합이고, 릴레이션 r(R)은 사상 r = { t1, t2, ... , tm}의 유한 집합이다. 여기서 각 튜플 ti는 R에서 D로의 사상(mapping)이고, D는 애트리뷰트 도메인들의 합집합임
즉, D = dom(A1) U dom(A2) U ... U dom(An)임. 이 정의에서 r의 모든 사상 t에 대하여 t(Ai)는 dom(Ai)에 속해야함. 각 사상 ti를 튜플이라고 부름
Tuple = (<애트리뷰트>, <값>) 쌍들의 집합으로 생각할 수 있음
이렇게 정의하면 각 애트리뷰트의 이름이 값과 함께 표시되므로 순서가 중요하지 않게 댐
튜플 내에서의 값들과 널(NULL)
튜플 내의 각 값들은 원자(atomic)값임
복합 애트리뷰트(Composite), 다치 애트리뷰트(Multivalued)가 불가능
평면 관계 모델(Flat relational model)라고도 부름
이런 원자 특성을 제1정규형(first normal form)이라고 부름
복합 애트리뷰트나 다치 애트리뷰트가 있으면 Non first normalform(NF^2)나 nested relations라고 부름
널 값은 값을 알 수 없거나, 적용할 수 없는 경우에 사용됨
5. 관계 모델의 제약 조건
본질적 모델 기반 제약 조건 / 함축적 제약 조건(Inherent model-based constraints / implicit constraints)
데이터 모델 자체에 존재하는 제약 조건(ex 릴레이션은 중복 튜플을 가질 수 없음)
스키마 기반 제약 조건 / 명시적 제약 조건(Schema-based constraints / explicit constraints)
관계 데이터 모델의 스키마에 직접적으료 표현이 가능한 제약 조건
키 제약 조건, 널에 대한 제약 조건, 엔티티 제약 조건, 참조 무결성 제약 조건
추가적으로 도메인 제약 조건, 데이터 종속성이 있음
응용 기반 제약 조건(Application-based constraints)
응용 프로그램에 의해 표현되고 시행되는 제약 조건
의미적 제약 조건(semantic constraints) 또는 business rule(비즈니스 규칙, 업무 규칙)이라고도 부름
제약 조건 종류
스키마 기반 제약 조건
키 제약 조건
널 제약 조건
개체 무결성 제약 조건(Entity integrity)
참조 무결성 제약 조건(Referential integrity)
추가 제약 조건
도메인 제약 조건 - 타입에 맞게 작성해야함
데이터 의존성(data dependency)
6. 스키마 기반 제약 조건 - 도메인 제약 조건
각각의 애트리뷰트 A의 값이 반드시 A의 도메인 dom(A)에 속하는 원자값이어야 함
데이터 타입은 데이터베이스 언어(SQL)에 의해 제공받음
값의 일부 범위를 지정할 수도 있음
값을 명시적으로 나열할 수도 있음
7. 스키마 기반 제약 조건 - 키 제약 조건
릴레이션은 튜플들의 집합임 -> 릴레이션의 모든 튜플은 중복되지 않아야함
R의 슈퍼키(Superkey)
SK: R의 애트리뷰트들의 집합
서로 다른 두 튜플 t1과 t2에 대하여 t1[SK] != t2[SK]가 성립하고 이런 SK를 슈퍼키라고 함
슈퍼키 SK는 R의 상태 r에서 SK가 같은 값을 가지는 서로 다른 튜플이 존재하지 않는다는 유일성 제약 조건(uniqueness constraint)을 명시함
모든 릴레이션은 적어도 하나의 슈퍼키가 존재함
키(key)
슈퍼키는 중복되는 애트리뷰트가 존재하므로 중복성을 갖지 않게 하는 키(key) 개념이 필요함
어떤 릴레이션 스키마 R의 키 K는 R의 슈퍼키이고, K에서 어떤 애트리뷰트라도 빠지면 더 이상 K'가 슈퍼키가 될 수 없다는 성질을 가지고 있음
서로 다른 두 튜플은 동일한 키 안의 애트리뷰트 값을 가질 수 없음
키는 최소의 슈퍼키임. 즉, 슈퍼키 내의 어떤 애트리뷰트도 제거하지 않아야 유일성 제약 조건을 만족할 수 있음
따라서 키는 슈퍼키이지만, 슈퍼키는 최소의 슈퍼키가 아니라면 키가 아닐 수도 있음
ex) Ssn은 같은 값을 가지는 사람이 존재할 수 없기 때문에 릴레이션의 키라고 할 수 있음. Ssn을 포함하는 어떤 애트리뷰트들의 집합도 슈퍼키가 될 수 있음(ex {Ssn, Name, Age}는 슈퍼키이지만 키는 아님)
후보 키(Candidate key)
릴레이션 스키마는 하나 이상의 키를 가질 수 있음(주민번호와 학생 학번은 후보키가 될 수 있음)
이런 경우 각 키를 후보키라고 함
일반적으로 후보키들중에 하나를 기본 키(primary key)로 지정함. 기본 키는 하나 또는 적은 수의 애트리뷰트를 가진 기본키를 선택하는 것이 더 좋음
8. 관계 데이터베이스와 관계 데이터베이스 스키마
관계 데이터베이스 스키마 S는 릴레이션 스키마들의 집합 S = {R1, R2, ..., Rm}과 무결성 제약 조건들의 집합 IC임
S의 관계 데이터베이스 상태(state) DB는 릴레이션 상태들의 집합임
DB = { r1, r2, ..., rm}임( ri = Ri의 상태(state), ri 릴레이션은 IC에서 명시된 무결성 제약 조건들을 만족함)
여러 릴레이션에서 동일한 실세계 개념을 나타내는 애트리뷰트들이 같은 이름을 가질 수도 있고, 다른 이름을 가질 수도 있음(ex 아래 사진에서 EMPLOYEE의 Dno와 PROJECT의 Dnum은 같은 개념/정보임)
반대로 서로 다른 릴레이션에서 서로 다른 개념을 나타내는 애트리뷰트들이 같은 이름을 가질 수도 있음(ex PROJECT의 Pname과 DEPARTMENT의 Dname 애트리뷰트 대신에 똑같은 애트리뷰트 이름 Name을 사용할 수도 있음. 같은 이름을 공유하지만 PROJECT는 프로젝트 이름, DEPARTMENT는 부서 이름으로 서로 다른 뜻을 가짐)
9. 개체(엔티티) 무결성 제약 조건
어떠한 기본키 값도 널 값이 될 수 없음(S에서 각 관계 스키마 R의 기본키 애트리뷰트 PK는 r(R)의 튜플에서 널 값을 가질 수 없음)
왜냐하면 기본키 값은 한 릴레이션 내에서 각 튜플을 식별하는데 사용되는데 기본키 값이 널 값이면 튜플들을 식별할 수 없기 때문임
10. 참조 무결성 제약 조건
두 릴레이션 사이에 명시되는 제약 조건
한 릴레이션에 있는 튜플이 다른 릴레이션에 있는 튜플을 참조하려면 반드시 참조되는 튜플이 그 릴레이션 안에 존재해야함(ex EMPLOYEE 릴레이션의 Dno애트리뷰트와 DEPARTMENT 릴레이션의 Dnumber 애트리뷰트와 일치해야 해당 애트리뷰트를 가지고 있는 튜플 내의 다른 애트리뷰트를 참조 가능)
외래키(foreign key)
외래키가 되기 위해서는 두 릴레이션 스키마 R1과 R2 사이에 아래처럼 참조 무결성 제약 조건을 만족해야함
FK의 애트리뷰트는 R2의 기본키 PK의 애트리뷰트와 동일한 도메인을 가져야함
현재 상태 r1(R1)의 한 튜플 t1 내의 FK값은 현재 상태 r2(R2)의 어떤 튜플 t2내의 PK값과 일치하거나 널값을 가져야함(t1[FK] = t2[PK]이고 t1이 t2를 참조한다고 말함)
이때 R1은 참조한 릴레이션, R2는 참조된 릴레이션이라고하고, R1에서 R2로의 참조 무결성 제약 조건을 만족했다고 함
외래키는 동일한 릴레이션을 참조할 수도 있음(ex 8번 사진에서 EMPLOYEE에서 Super_Ssn은 상사의 번호라 EMPLOYEE의 Ssn을 참조함)
각 외래키로부터 그것이 참조하는 릴레이션까지 화살표를 그려서 도식적으로 표현할 수도 있음
11. 갱신 연산(Update Operation)과 제약 조건 위반의 처리
관계 모델의 연산은 추출(retrieval)과 갱신(update)로 나눌 수 있음
기본 갱신 연산
튜플 삽입(insert)
튜플 삭제(delete)
튜플 갱신 또는 수정(modify or update) - 튜플안의 애트리뷰트의 값을 바꾸는데 사용
제약 조건 위반을 했을 때 처리하는 방법
위반의 원인이 되는 작업을 취소함(REJECT option)
작업을 수행하지만, 사용자에게 위반 사실을 알림
위반이 수정되도록 추가 업데이트를 트리거함(CASCADE option, SET NULL option)