릴레이션relation

개체entity에 관한 data를 2차원 테이블table 구조로 저장한 것.

기본적으로 테이블table이다. 데이터data를 table 형태로 표현한 것. 하지만 단순 테이블 이상의 의미와 제약 사항이 포함.
RDB를 구성하는 개체entity, 관계relationshiprelation이라는 table로 표현한다.

다음 둘:
  • 개체 relation
  • 관계 relation
으로 구분 가능.


Definition of relation

정의 1. (대충 ordered list of $\displaystyle n$ values로 정의)
A relation (state) r, r(R) of the relation schema R(A1, A2, ..., An) = {t1, t2, ... tm} where t is an ordered list of n values t=〈v1, v2, …, vn〉 and each vi ∈ dom(Ai)
n은 차수degree.
t는 튜플tuple. 여기선 n-tuple.
Ai는 i번째 속성attribute.
vi는 i번째 (속성의) 값value .

정의 2.
r(R) ⊆ (dom(A1) × dom(A2) × … × dom(An))
우변은 domain들의 cartesian product: 모든 가능한 조합으로 된 집합.
그리고 r(R)이 그것의 instance(state)임을 부분집합 기호로 나타낸 듯. - chk

relation_intension : schema R
relation_extension : a relation state r(R)

릴레이션스키마relation_schema = (어려운말로) relation intension
릴레이션인스턴스relation_instance = relation extension? chk

보통
대문자 - 스키마schema를,
소문자 - relation state를.


구성: 다음 둘, 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.
릴레이션스키마relation_schema 릴레이션인스턴스relation_instance
릴레이션 스키마 = relation 스키마schema (relation type)
relation의 이름과 relation의 속성들의 집합.
relation의 이름과 relation에 포함된 모든 속성의 이름으로 정의하는 relation의 논리적 구조.
릴레이션 내포 (relation intension), 내포intension라고도 함.
형태 표현:
릴레이션이름 (속성이름1, 속성이름2, ..., 속성이름n)
릴레이션 인스턴스 = relation instance (relation occurrence)
relation에 어느 시점에 들어있는 튜플tuple들의 집합.
어느 한 시점에 relation에 존재하는 tuple들의 집합.
외연extension이라고 함.

ID 이름 나이 등급 → 릴레이션 스키마
apple 김현준 20 gold
banana 정소화 25 vip ├→ 릴레이션 인스턴스
good 정지영 22 silver

참고(비교):
  • database schema: DB를 구성하는 relation schema의 모음
  • database instance: DB를 구성하는 relation instance의 모음

OOP언어와의 비교
RDB OOP language
relation schema class
relation instance object, instance


relation의 특성[1]
  • tuple의 유일성 : 한 relation에는 동일한 tuple이 존재할 수 없음.
  • tuple의 무순서 : 한 relation에서 tuple사이의 순서는 무의미함.
  • 속성attribute의 무순서 : 하나의 relation에서 속성 사이의 순서는 무의미함.
  • 속성attribute원자성atomicity : 속성 값으로 원자 값만 쓸 수 있음. i.e. 릴레이션을 구성하는 모든 속성 값은 더 이상 분해할 수 없는 하나의 원자값만을 가짐.
    릴레이션은 다중값속성이나 복합속성을 허용하지 않음.
(튜플tuple에서도 언급)

한 relation에 포함된 tuple들은 모두 다르다.
한 relation에 포함된 tuple들 사이에는 순서가 없다.

키key : relation에서 tuple들을 구별하는 역할을 하는 속성 또는 속성들의 집합.

차수degree: 한 relation에서 속성의 전체 개수.

릴레이션 관련 SQL 문법

릴레이션을 생성하는 SQL 문법: CREATE TABLE
릴레이션을 삭제하는 SQL 문법: DROP TABLE
릴레이션의 속성attribute을 추가/삭제/변경하는 명령: ALTER TABLE