[DB] 관계 모델
관계 모델(Relation Model)
관계라는 모델을 이용해 실세계의 데이터를 표현하는 모델이다.
관계모델에서 데이터를 표현하는 주된 구성자는 테이블로 표현되는 릴레이션이다.
릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 이뤄진다.
릴레이션 인스턴스는 테이블이며, 스키마는 그 테이블의 필드들을 기술한다.
릴레이션 스키마
해당 릴레이션의 이름, 각 필드(열 또는 속성)의 이름과 도메인을 명시한다. 도메인은 관련되는 값들의 집합이다.
스키마의 예시로는 다음과 같다.
Students(sid: string, name: string, age: integer, gpa: real)
릴레이션 인스턴스
릴레이션 인스턴스는 레코드라고 하는 튜플들의 집합이다. 튜플은 테이블에서 한 행에 해당한다. 모든 튜플은 동일한 수의 속성들을 가지고 있다.
릴레이션의 차수(degree) : 필드들의 수
릴레이션 인스턴스의 카디날리티(cardinality) : 릴레이션에 원소로 있는 튜플들의 수.
관계 데이터베이스
서로 다른 릴레이션 이름을 가진 릴레이션들의 모임이다.
관계 데이터베이스 스키마는 그 데이터베이스에 속한 릴레이션들을 위한 스키마들의 모임이다.
무결성 제약조건(Integrity Constraint: IC)
데이터베이스 스키마에 명시되는 조건으로, 데이터베이스 인스턴스에 저장될 수 있는 데이터를 제한한다.
키 제약조건
릴레이션에 속한 필드들의 어떤 최소 부분집합이 각 튜플에 대한 고유한 식별자라는 선언이다.
여기서 키란 인스턴스에서 서로 다른 두 튜플을 구분해주는 유일한 식별자이다. 키는 서로 중복될 수 없고 키를 구성하는 필드들의 어떠한 부분집합도 튜플에 대해 유일한 식별자가 될 수 없다.
예를들어 (name, age)가 키라고 한다면 name이나 age만으로 튜플들을 유일하게 식별할 수 없어야 한다는 뜻이다.
한 릴레이션은 여러 개의 후보키를 가질 수 있다. 모든 가능한 후보키들 중에서 기본키를 하나 지정할 수 있다.
수퍼키는 키를 포함하는 필드들의 집합이다.
외래키 : 다른 테이블의 기본키로 NULL이 될 수 없다.