관계 데이터 모델
관계 데이터 모델이란 RDB가 사용하는 논리 데이터 모델로 데이터를 릴레이션(테이블)에 저장, 관리하는 모델이다.
릴레이션 관련 용어
하나의 개체에 관한 데이터를 릴레이션에 저장한다. 릴레이션은 테이블과 같은 의미지만 관계의 의미를 강조하기 위해 릴레이션 용어로 사용된다.
- 속성 : 릴레이션의 열을 속성(attribute)이라 한다. 속성은 서로 다른 이름을 가져야한다. 도메인으로 값의 범위를 지정하며, 무결성 제약조건 등의 제약 조건이 붙기도 한다.
- 투플 : 릴레이션의 행을 투플(tuple)이라 한다. 투플은 개체의 모든 속성 값을 모아놓은 것으로 개체의 인스턴스가 된다.
- 도메인 : 속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인(domain)이라 한다. 속성이 가질 수 있는 값의 범위를 일일이 나열해도 되지만 값의 범위가 넓을 경우 힘들기 때문에 일반적으로 INT, CHAR(20)과 같은 데이터 타입으로 정의한다.
- 널(Null) 값 : 릴레이션에 있는 특정 투플의 속성 값이 아직 정해지지 않았거나 모르는 경우 널(null)이라는 특별한 값을 넣을 수 있다. 숫자 ZERO와 공백과는 다른 값이다.
- 차수 : 하나의 릴레이션에서 속성의 전체 개수를 릴레이션의 차수(degree)라 한다. 릴레이션의 속성은 자주 추가되거나 삭제되지 않기 때문에 차수 또한 자주 변하지 않는 정적인 특징을 지닌다.
- 카디널리티 : 하나의 릴레이션에서 투플의 전체 개수를 릴레이션의 카디널리티(cardinality)라 한다. 릴레이션의 투플은 자주 추가되거나 삭제되기에 카디널리티 또한 자주 변하는 동적인 특징을 지닌다.
릴레이션과 데이터베이스 구성
릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다. 그리고 데이터베이스는 데이터베이스의 스키마와 데이터베이스 인스턴스로 구성된다.
- 릴레이션 스키마 : 릴레이션 스키마는 릴레이션의 논리적 구조이다. DBMS는 데이터 정의어를 이용해 릴레이션 스키마를 정의하지만 일반적으로 다음과 같은 형태로 쉽게 표현할 수 있다.
- 릴레이션 인스턴스 : 어느 한 시점에 릴레이션에 존재하는 투플들의 집합
- 데이터베이스 스키마 : 모든 릴레이션의 스키마를 뜻한다.
- 데이터베이스 인스턴스 : 어느 한 시점에 데이터베이스에 저장된 모든 릴레이션 인스턴스의 집합
릴레이션 특성
릴레이션에는 네 가지 중요한 특성이 있다. 이 네가지 특정이 만족해야 테이블이 릴레이션으로 인정받는다.
- 투플의 유일성 : 하나의 릴레이션에는 동일한 투플이 존재할 수 없다.
- 투플의 무순서 : 하나의 릴레이션에서 투플 사이의 순서는 무의미하다.
- 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
- 속성의 원자성 : 속성 값으로 원자 값만 사용할 수 있다.
키의 종류
릴레이션에서 투플의 유일성을 만족시키기 위해 키를 사용한다. 키는 투플을 유일하게 구별시키기 위해 사용되는 속성 또는 속성들의 집합이다. 키 값이 같은 투플이 없으면 투플의 유일성을 만족시킬 수 있다. 키의 종류에는 슈퍼 키, 후보 키, 기본 키, 대체 키, 외래 키가 있다.
- 슈퍼키(super key) : 투플의 유일성만을 만족하는 키, 여기서 super는 많다라는 뜻이다.
- 후보키(candidate key) : 투플의 유일성과 최소성을 만족하는 키, 최소성이란 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다. 키를 구성하는 속성이 적을수록 단순한 데이터 타입일수록 검색 효율이 높기에 후보키 부터 제대로 된 키라 할 수 있다.
- 기본키(primary key) : 하나의 릴레이션에서 키는 하나만 있어도 충분하다. 후보키 중에서 기본적으로 사용할 키 하나를 반드시 선택해야 되는데 이것이 기본키이다.
- 대체 키(alternate key) : 기본키로 선택되지 못한 후보 키들이다.
- 외래키(foreign key) : 외래키는 다른 릴레이션의 기본키를 그대로 참조하는 속성 또는 속성들의 집합이다. 외래키를 사용해서 릴레이션 간의 관계를 설정한다. 예를 들어 A릴레이션 기본키를 B 릴레이션이 외래키로 갖고 있으면 두 릴레이션은 관계를 맺게되고 B 릴레이션 투플의 외래키를 통해 그 투플과 관계를 맺고 있는 A 릴레이션 투플을 검색할 수 있다. 외래키는 반드시 다른 릴레이션의 기본키를 참조해야 하며 외래키의 도메인은 참조되는 기본키의 도메인과 같아야한다. 또한 외래키를 기본키로 사용할 수도 있고 외래키를 포함하여 기본키를 구성할 수도 있다. 이 경우 외래키는 개체 무결성 제약조건에 의해 널 값을 가지면 안된다. 사실 외래키는 자신이 속한 릴레이션의 기본키를 참조하도록 할 수 있으며 이 경우 순환관계가 성립된다.
무결성 제약조건
데이터 무결성(데이터에 결점이 없는 상태)을 위해 키와 관련된 제약 조건인 무결성 제약 조건이 있다. 무결성 제약 조건에는 개체 무결성 제약조건과 참조 무결성 제약조건이 있다.
- 개체 무결성 제약조건(Entity Integrity Constraint) : 기본키를 구성하는 모든 속성은 널 값을 가지면 안된다는 규칙(NOT NULL)
- 참조 무결성 제약조건(Referential Integrity Constraint) : 외래키는 기본 키가 아닌 값을 참조할 수 없다는 규칙, 단 외래키가 널 값인 경우 참조 무결성 제약조건을 위반한 것은 아니다. 아직 정해지지 않았거나 모르는 값이기에 기본키가 아닌 값을 참조한다고 확정지을 수 없다.
'Computer Science > DataBase' 카테고리의 다른 글
[데이터베이스 - 7] 트랜잭션 (0) | 2022.10.11 |
---|---|
[데이터베이스 - 6] SQL (0) | 2022.09.29 |
[데이터베이스 - 4] 데이터베이스 설계 (0) | 2022.09.23 |
[데이터베이스 - 3] 데이터베이스 구조 (0) | 2022.09.22 |
[데이터베이스 - 2] DBMS (0) | 2022.09.21 |