반응형
목차
01. 관계 데이터 모델의 개념
1. 관계 데이터 모델의 기본 용어
일반적으로 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션(relation) 하나에 담아 데이터베이스에 저장한다. 아래 사진의 릴레이션의 예를 통해 관련 용어를 알아보자.
1.1 속성 (attribute)
- 릴레이션의 열을 의미한다.
- 각 속성은 서로 다른 이름을 이용해 구별한다.
- 릴레이션은 파일 관리 시스템에서의 파일, 속성은 해당 파일의 필드(field)에 대응하는 개념이다.
1.2 튜플 (tuple)
- 릴레이션의 행을 의미한다.
- 고객 개체의 인스턴스에 해당한다.
- 튜플은 파일 관리 시스템 관점에서 해당 파일의 레코드(record)에 대응하는 개념이다.
1.3 도메인 (domain)
- 속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인이라 한다.
- 관계 데이터 모델에서는 속성 값으로 더는 분해할 수 없는 원자 값만 사용할 수 있다.
- 속성의 도메인을 정의해두면 사용자가 속성 값을 입력하거나 수정할 때 데이터베이스 시스템이 적합성을 판단하여 도메인 이외의 값은 허용하지 않음으로써 항상 올바른 값만 유지할 수 있다는 장점이 있다.
- 하지만 도메인은 가능한 값을 일일이 나열하기 어려운 경우가 대부분이라 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의한다. (위의 예의 고객아이디 같은 경우에 해당)
1.4 널 값
- 특정 튜플의 속성 값을 모르거나, 적합한 값이 없는 경우에는 널(null)이라는 특별한 값을 사용할 수 있다.
- 특정 속성에 해당되는 값이 없음을 나타내므로 숫자 0이나 공백 문자와는 다르다.
1.5 차수 (degree)
- 하나의 릴레이션에서 속성의 전체 개수를 릴레이션의 차수라고 한다.
- 위의 예제에서의 고객 릴레이션은 차수가 6이다.
- 일반적으로 자주 변하지 않는다는 정적인 특징이 있다.
1.6 카디널리티 (cardinality)
- 하나의 릴레이션에서 튜플의 전체 개수를 릴레이션의 카디널리티라고 한다.
- 새로운 튜플이 삽입되거나 기존 튜플이 삭제되는 등 릴레이션의 카디널리티는 일반적으로 자주 변한다는 동적인 특징이 있다.
2. 릴레이션과 데이터베이스의 구성
관계 데이터 모델에서 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.
2.1 릴레이션 스키마 (relation schema)
- 릴레이션 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조다.
- DBMS가 내부적으로 데이터 정의어를 이용해 정의하지만, 일반적으로는 다음과 같은 형태로 쉽게 표시한다.
릴레이션이름(속성이름1, 속성이름2, ...., 속성이름n) - 릴레이션 스키마를 보면 릴레이션의 이름이 무엇이고, 어떤 속성들로 구성되어 있는지 전체 구조를 쉽게 파악할 수 있다.
- 릴레이션 내포(relation intension)라고도 부른다.
2.2 릴레이션 인스턴스 (relation instance)
- 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합이다.
- 튜플들은 릴레이션 스키마에서 정의한 각 속성에 대응하는 실제 값으로 구성되어 있다.
- 릴레이션 인스턴스를 보면 현재 릴레이션의 실제 내용을 쉽게 파악할 수 있다.
- 간단히 릴레이션이라 부르기도 하고 릴레이션 외연(relation extension)이라고도 부른다.
2.3 데이터베이스 스키마와 데이터베이스 인스턴스
- 데이터베이스의 전체 구조를 의미하는 데이터베이스 스키마는 데이터베이스를 구성하는 릴레이션들의 스키마를 모아놓은 것이다.
- 데이터베이스 인스턴스는 어느 한 시점에서 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미한다.
3. 릴레이션의 특성
관계 데이터 모델의 릴레이션에는 네 가지 중요한 특성이 있는데 이를 만족해야 테이블이 릴레이션으로 인정받을 수 있다.
① 튜플의 유일성 : 하나의 릴레이션에는 동일한 튜플이 존재할 수 없다.
- 하나의 릴레이션에 똑같은 튜플이 있으면 안 되고, 모든 튜플에는 다른 튜플과 구별되는 유일한 특성이 있어야 한다.
- 관계 데이터 모델의 릴레이션에서는 하나 또는 여러 개의 속성을 미리 선정해두고 이 속성값을 튜플마다 다르게 지정하여 튜플의 유일성을 판단한다.
- 튜플을 유일하게 구별하기 위해 선정되는 속성(또는 속성들의 모임)을 키(key)라고 부른다.
② 튜플의 무순서 : 하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.
- 튜플 순서가 바뀐다고 다른 릴레이션이 될 수 없고, 순서와 상관없이 튜플 내용이 같으면 동일한 릴레이션이다.
- 데이터베이스는 위치가 아닌 내용으로 검색되므로 튜플의 순서는 중요하지 않다.
③ 속성의 무순서 : 하나의 릴레이션에서 속성 사이의 순서는 무의미하다.
- 릴레이션에서 속성의 순서가 바뀌어도 다른 릴레이션이 될 수 없고, 순서와 상관없이 같은 속성들로 구성되어 있어야 동일한 릴레이션이다.
- 속성 값은 릴레이션에서 위치가 아닌 속성의 이름으로 접근하므로 하나의 릴레이션에는 이름이 같은 속성이 존재할 수 없고, 이름도 속성의 의미가 명확히 드러나는 것으로 사용하는 것이 좋다.
④ 속성의 원자성 : 속성 값으로 원자 값만 사용할 수 있다.
- 모든 속성 값은 더는 분해할 수 없는 하나의 값, 즉 원자 값만 가질 수 있다.
- 하나의 속성은 여러 개의 값, 즉 다중 값을 가질 수 없다.
- 관계 데이터 모델은 복잡한 개념을 배제하고 릴레이션을 단순한 구조로 정의하고자 하는 특징이 있어 다중 값을 허용하지 않는다.
4. 키의 종류
릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다. 키는 관계 데이터 모델에서 중요한 제약조건을 정의한다. 관계 데이터 모델에서의 키는 다음과 같이 분류할 수 있다.
4.1 슈퍼키 (super key)
- 유일성(uniqueness)의 특성을 만족하는 속성 또는 속성들의 집합이다.
- 유일성은 키가 갖추어야 하는 기본 특성으로, 하나의 릴레이션에서 키로 지정된 속성 값은 튜플마다 달라야 한다는 의미다.
4.2 후보기 (candidate key)
- 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
- 최소성(minimality)은 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성이다.
- 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다.
- 후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 튜플이 삽입되거나 기존 튜플의 속성 값이 바뀌어도 유지되어야 한다.
4.3 기본키 (primary key)
- 여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이때 선택된 키를 기본키라고 한다.
- 기본키를 선택할 때 고려해야 하는 기준은 다음과 같다.
- 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 단순한 후보키를 기본키로 선택한다.
4.4 대체키 (alternate key)
- 기본키로 선택되지 못한 후보키들을 의미한다.
4.5 외래키 (foreign key)
- 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키다.
- 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다.
- 외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.
- 외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 되지만 도메인은 반드시 같아야 한다. 도메인이 같아야 연관성 있는 튜플을 찾기 위한 비교 연산이 가능하기 때문이다.
- 외래키는 반드시 다른 릴레이션의 기본키를 참조해야 하며 외래키의 도메인은 참조되는 기본키와 같게 정의되어야 한다.
- 하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있고 외래키를 기본키로 사용할 수도 있으며 외래키를 포함하여 기본키를 구성할 수도 있다.
- 외래키는 또한 자신이 속한 릴레이션의 기본키를 참조하도록 정의할 수도 있다.
- 외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있으며 서로 다른 튜플이 같은 값을 가질 수 있다.
02. 관계 데이터 모델의 제약
- 관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약조건이다.
- 무결성은 데이터가 정확하고 유효하게 유지된 상태를 말한다.
- 무결성 제약조건의 주요 목적은 데이터베이스에 저장된 데이터의 무결성을 보장하고, 데이터베이스의 상태를 일관되게 유지하는 것이다.
- 데이터베이스가 연산으로 상태가 변하더라도 무결성 제약조건은 반드시 지켜져야 한다.
- 무결성 제약조건에는 개체 무결성 제약조건과 참조 무결성 제약조건이 있는데 데이터베이스의 상태를 일관성 있게 유지하기 위해서는 두 가지를 모두 만족시켜야 한다.
1. 개체 무결성 제약조건 (entity integrity constraint)
- 기본키를 구성하는 모든 속성은 널 값을 가지면 안된다는 규칙이다.
- 기본키를 구성하는 속성 전체나 일부가 널 값이 되면 튜플의 유일성을 판단할 수 없어 기본키의 본래 목적을 상실하게 된다.
- 개체 무결성 제약조건을 만족시키려면 새로운 튜플이 삽입되는 연산과 기존 튜플의 기본키 속성 값이 변경되는 연산이 발생할 때 기본키에 널 값이 포함되는 상황에서는 연산의 수행을 거부하면 된다.
2. 참조 무결성 제약조건 (referential integrity constraint)
- 참조 무결성 제약조건은 외래키에 대한 규칙으로 연관된 릴레이션들에 적용된다.
- 외래키는 참조할 수 없는 값을 가질 수 없다는 규칙이다.
- 외래키가 자신이 참조하는 릴레이션의 기본키와 상관이 없는 값을 가지게 되면 두 릴레이션을 연관시킬 수 없으므로 외래키 본래의 의미가 없어진다. 외래키는 자신이 참조하는 릴레이션에 기본키 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 한다.
- 참조 무결성 제약조건을 만족시키려면 외래키가 참조 가능한 값만 가져야 하지만, 널 값을 가진다고 해서 참조 무결성 제약조건을 위반한 것으로 판단해서는 안된다.
- 데이터베이스의 상태가 변해도 참조 무결성 제약조건을 만족시켜야 한다.
REFERENCE
반응형
'CS > DB' 카테고리의 다른 글
[DB - 데이터베이스 개론] Chapter 07. 데이터베이스 언어 SQL (0) | 2022.01.25 |
---|---|
[DB - 데이터베이스 개론] Chapter 06. 관계 데이터 연산 (1) | 2022.01.23 |
[DB] 트랜잭션(Transaction)이란? (0) | 2022.01.18 |
[DB - 데이터베이스 개론] Chapter 04. 데이터 모델링 (0) | 2022.01.17 |
[DB - 데이터베이스 개론] Chapter 03. 데이터베이스 시스템 (0) | 2022.01.15 |
댓글