관계형 데이터 모델1: Relation, Attribute, Integrity Constraint
관계대수(Relational Algebra)란 질의(query)를 나타낼 수 있는 데이터베이스 language중 하나이다.
관계형 데이터베이스에서 SQL은 high-level language 라고 할 수 있고, 관계 대수는 low-level 이라고 할 수 있다. 간단히 말하면 데이터베이스 시스템 내부에서 사용하는 데이터베이스 language이다.
관계대수의 배경
E.F Codd 에 의해서 1970년에 발표되었다. 이산수학에서의 Relation개념을 통해 개발하는등 수학적 모델을 고려해서 개발해 이론적인 배경이 탄탄하며 대부분읜 상업용 시스템에서 사용되고 있다.
실세계 데이터를 정확히 표현할 수 있고 단순하기 때문에 대부분의 시스템에서 채용하고 있다.
Relation 예시: Student

위 table은 학생이라는 데이터를 Relation으로 표현한 것이다. 개체가 공통적으로 가지는 속성으로 학번, 이름, 성별, 학년, GPA, totalCredit이 있는 것을 볼 수 있다. 학생 데이터 하나하나를 Tuple이라고 하며, 여기서는 각각의 Tuple은 7개의 속성으로 표현된다.
Attribute
속성(Attribute)란 데이터가 가지는 속성을 나타내고 속성들은 값을 가진다.
(ex>학생은 '학번'이라는 속성을 가지고, 학번은 값을 가진다.)
속성 값들을 모아놓으면 하나의 집합을 만들 수 있는데 그 집합을 속성(Attribute)의 도메인(Domain)이라고 부른다. 도메인 안에는 null 값도 포함된다. null의 의미는 '값이 존재하지 않는다' 또는 '처음에는 존재하였으나 지금은 어떤 값인지 모른다.' 라는 두가지 의미로 사용된다. 이로인해 데이터베이스의 복잡성이 야기되기도 한다.
또한 Attribute는 더이상 쪼갤 수 없는 것이어야 한다. 다시말해 Atomic 해야한다. 쪼갤 수 있는 값으로는 set, bag, list와 같이 여러개의 원소로 구성되는 것을 말한다.
Relation Schema and Instance
어떤 Relation R이 A1, A2, ... , An 이라는 속성을 가진다고 하면 Relation R에 대한 Schema는 다음과 같이 표현한다.
R = (A1, A2, ... , An)
현재 시점의 Relation을 Relation Instance라고 표현한다. D1, D2, D3가 대응되는 도메인들 이라고 하면 이런 Relation에 가장 Tuple 이 많은 집합
예시 테이블을 통해 Relation의 표현과 제약을 어떻게 나타내는 지 살펴보자.

굵게 표시된 글자는 Relation의 이름, 밑줄은 PK(Primary Key)를 나타내며 화살표는 참조 무결성 제약이라는 데이터 시스템의 Concurrency를 위해서 사용한다. 예를 들어 professor의 deptName 속성의 값은 department의 deptName에도 동일한 값이 반드시 존재해야 한다는 것을 나타낸다.
Keys
key는 하나의 relation과 관련되어 있고, relation의 attribute의 조합이다. super key, cadidate key, primary key 세 종류가 있다.
super key: tuple을 식별할 수 있는 key. ex) 학번을 주면 그 값을 가진 학생이 반드시 한명만 나온다.
cadidate key: super key의 집합 중 가장 작은 key를 의미한다. 좀더 정확히 이야기하면 전체에서 가장 작은 것이 아니라 그룹에서 가장 작은 것을 의미한다. 따라서 여러개가 될 수 있다.
primary key: candidate key중에서 가장 대표되는 key를 말한다.
참조 무결성 제약(Referential Integirity Constraint)
실세계에 존재하는 조건을 표현하기 위해서 두 테이블 간의 조건 또는 관계를 표현하기 위한 것이다. 참고로 관계형 데이터 모델에서는 이제약을 표현할 때는 값을 써서 표현한다.

위 테이블을 살펴보면 student table의 major 속성이 department table의 dID 속성을 참조하고 있다. 이것은 major속성의 값은 반드시 dID속성값에 존재해야 한다는 것을 의미한다.
- student 테이블의 sName이 'Sohn'인 튜플의 major 속성값이 dID 속성에 존자하지 않으므로 위 테이블은 오류가 있다.
- 하지만 Park은 괜찮다. null값은 어느 속성값의 집합에나 포함된다고 가정하기 때문이다.
- 이 때 student 테이블의 major 속성을 department 테이블의 dID 속성을 참조하는 외래키(Foreign Key, FK)라고 한다.
- 참조 되는 키인 dID 는 반드시 그 테이블의 주요키(Primary Key, PK)가 되어야 한다.
Data Dictionary
Data Dictionary은 데이터베이스 시스템이 내부적으로 관리하는 데이터 장소이며, 데이터에 대한 데이터 즉 메타데이터를 관리한다.
상용 데이터베이스 시스템은 사용자에게 투명하게 데이터 사전 접근을 허용하며, 사용자는 SQL을 활용하여 데이터 사전에 속하는 데이터에 접근할 수 있다.
- Relation의 이름
- Relation의 각 속성의 이름과 타입, 길이
- View의 이름 및 정의
- Integrity Constraint
- password를 포함한 사용자및 계정 정보
- 통계 및 기술 데이터
- 각 Relation의 Tuple 갯수
- 실제 파일 구성 정보
- 관계 저장 방법(순차/해시/...)
- 관계의 물리적 위치
- 색인에 대한정보
등을 담고 있다.