릴레이션(Relation)
릴레이션(Relation)은 관계형 데이터베이스(RDB)에서 데이터를 구조적으로 표현하는 기본 단위이다. 릴레이션은 (릴레이션 스키마 + 릴레이션 인스턴스) 로 이루어진다.
릴레이션 스키마(Relation Schema) 란?
데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 의미한다.
릴레이션 스키마는 릴레이션 이름, 각 속성(Attribute)의 이름, 각 속성의 도메인(Domain)을 명세한다. 도메인은 속성의 값, 타입 제약조건 등에 대한 값의 범위로, 릴레이션 스키마에서는 도메인 이름 으로 명세한다.
한마디로 테이블의 설계도라고 보면 된다.
- 릴레이션 스키마 명세 (예시)
학생(학번: 문자열, 이름: 문자열, 학과: 문자열, 학년: 정수)
- 학생 : 릴레이션(테이블) 이름
- (학번, 이름, 학과, 학년) : 도메인 -> 필드, 열(Column), 또는 속성(Attribute) 들의 이름
- (문자열, 정수) : 도메인 이름
릴레이션 인스턴스(Relation Instance)
릴레이션 스키마에 따라 실제로 저장된 데이터의 집합을 말한다.
쉽게 말하면, 테이블에 저장된 레코드(튜플) 의 집합이라고 할 수 있다.
- 튜플
- 릴레이션 스키마에서 정의된 각 속성으로 정의되며, 하나의 데이터 묶음
- 각 튜플의 하나의 행으로 구성
- 카디널리티(Cardinality) : 릴레이션 인스턴스의 튜플 수 (행의 개수)
- 차수(Degree) : 릴레이션 인스턴스의 속성 수 (열의 개수)
- 릴레이션 인스턴스 예시
| 학번 | 이름 | 학과 | 학년 |
| 1912345 | 김XX | 컴퓨터공학과 | 4 |
| 2012345 | 박XX | 전자공학과 | 3 |
- 카디널리티(Cardinality) : 2
- 차수(Degree) : 4
릴레이션 인스턴스의 값들은 추가되거나, 삭제될 수 있다. (릴레이션 스키마 값은 그대로)
도메인(Domain)
하나의 속성이 가질 수 있는 동일한 유형의 원자값들의 집합. 릴레이션 스키마에서는 각 속성이 가질 수 있는 값의 범위를 의미한다. 데이터 타입과 허용되는 값의 규칙을 정의함.
- 예시
학생(학번: 문자열, 이름: 문자열, 학과: 문자열, 학년: 정수)
위 릴레이션 스키마에서,
- 학번 : 숫자로 이루어진 6자리 정수 (예: 201212)
- 이름 : 길이 10 이하의 문자열 (예: 홍길동)
- 학과 : 지정된 학과 명 중 하나
- 학년 : 1 ~ 4 사이 정수 중 하나
위 처럼, 각 속성의 값은 정의된 도메인의 값 만 허용된다. -> 데이터 무결성 보장
관계 데이터베이스(Relational Database)
여러개의 릴레이션으로 구성된 데이터베이스이다. 릴레이션 간의 관계를 통해 데이터가 연결되어, SQL을 사용해 데이터를 관리한다.
- 예시
1. 학생 테이블
| 학번 | 이름 | 학과 |
| 191234 | 김XX | 컴퓨터공학과 |
| 201234 | 박XX | 전자공학과 |
2. 수강 과목 테이블
| 학번 | 과목명 | 교수 |
| 191234 | 데이터베이스 | 이XX |
| 201234 | Java | 최XX |
두 테이블은 학번을 기준으로 연결되어 있고, SQL을 통해 두 테이블을 관리할 수 있다. 이처럼 관계 데이터베이스에서는 외래키(foreign key)를 사용해 데이터를 효과적으로 관리한다.