-
[데이터베이스] 관계 데이터 모델의 개념 (논리적 모델)IT/데이터베이스 2022. 10. 7. 00:45
본 포스팅은 "데이터베이스 개론 [2판]" 도서로 공부한 내용을 요약하기 위한 포스팅입니다.
1. 관계 데이터 모델의 기본 용어
관계 데이터 모델은 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델 중 하나이다.
관계 데이터 모델에 따라 제작된 데이터베이스를 관계 데이터베이스라고 하는데,
그냥 데이터베이스라고 하면 관계 데이터베이스를 의미할 만큼 관계 데이터 모델은 많이 사용된다.
관계 데이터 모델은 하나의 개체에 대한 데이터를 릴레이션(Relation) 하나에 담아 데이터베이스에 저장한다.1-1. 속성 (Attribute)
릴레이션의 열을 속성 또는 애트리뷰트(attribute)라고 부른다.
1-2. 튜플 (Tuple)
릴레이션의 행을 튜플(tuple)이라 부른다. 하나의 튜플은 해당 개체의 하나의 인스턴스를 의미한다.
1-3. 도메인 (Domain)
속성 하나가 가질 수 있는 모든 값의 집합을 해당 속성의 도메인이라 한다.
관계 데이터 모델에서는 속성 값으로 더는 분해할 수 없는 원자 값만 사용할 수 있다.
등급 속성을 예로 들어 설명해보자.
등급 속성의 값으로 [VIP, Gold, Siliver, Bronze] 네 가지 값만을 허용된다면,
네 가지 값을 모아놓은 것이 등급 속성의 도메인이 된다.
나이 속성을 예로 들면, 나이 속성의 값으로 정수값만을 허용하고 정수값의 집합이 해당 속성의 도메인이 된다.속성의 도메인을 정의해두면 사용자가 속성 값을 입력하거나 수정할 때 데이터베이스 시스템이 적합성을 판단하여 도메인 이내의 값만을 허용함으로써 항상 올바른 값을 유지할 수 있는 장점이 있다.
1-4. 널 값 (Null value)
릴레이션에 있는 특정 튜플의 속성 값을 모르거나, 적합한 값이 없는 경우에는 널(null)이라는 특별한 값을 사용할 수 있다. 숫자 0이나 공백 문자와는 다른 의미를 가진다.
1-5. 차수 (Degree)
하나의 릴레이션에서 속성의 전체 개수를 릴레이션의 차수라고 한다.
위의 릴레이션 예시는 차수가 4가 된다.
1-6. 카디널리티 (Cardinality)
하나의 릴레이션에서 튜플의 전체 개수를 릴레이션의 카디널리티라고 한다.
위의 릴레이션 예시의 카디널리티는 4이다.
2. 릴레이션과 데이터베이스의 구성
관계 데이터 모델에서 릴레이션은 릴레이션 스키마와 릴레이션 인스턴스로 구성된다.
2-1. 릴레이션 스키마 (Relation schema)
릴레이션 스키마는 릴레이션의 이름과 릴레이션에 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조이다.
일반적으로 다음과 같은 형태로 쉽게 표현한다.
릴레이션이름(속성이름1, 속성이름2, ..., 속성이름n)
2-2. 릴레이션 인스턴스 (Relation instance)
릴레이션 인스턴스는 어느 한 시점에 릴레이션에 존재하는 튜플들의 집합이다.
2-3. 데이터베이스 스키마와 데이터베이스 인스턴스
데이터베이스는 릴레이션 여러 개로 구성된다.
데이터베이스 스키마는 데이터베이스를 구성하는 릴레이션들의 스키마를 모아놓은 것이다.
데이터베이스 인스턴스는 어느 한 시점에서 데이터베이스에 저장된 데이터 내용의 전체 집합을 의미한다.
3. 릴레이션의 특성
3-1. 튜플의 유일성
하나의 릴레이션에 똑같은 튜플이 있으면 안되고, 모든 튜플에는 다른 튜플과 구별되는 유일한 특성이 있어야 한다.
튜플을 유일하게 구별하기 위해 선정되는 속성(또는 속성들의 모임)을 키라고 부른다.
3-2. 튜플의 무순서
하나의 릴레이션에서 튜플 사이의 순서는 무의미하다.
튜플 순서가 바뀐다고 다른 릴레이션이 될 수 없고, 순서와 상관없이 튜플 내용이 같으면 동일한 릴레이션이다.
데이터베이스는 위치가 아닌 내용으로 검색(내용기반 참조)되므로 튜플의 순서는 중요하지 않다.
3-3. 속성의 무순서
튜플의 무순서와 마찬가지로 하나의 릴레이션에서 속성의 순서가 바뀌는 것 또한 무의미하다.
속성 값은 릴레이션에서 위치가 아닌 속성의 이름으로 접근하므로 하나의 릴레이션에는 이름이 같은 속성이 존재할 수 없다.
3-4. 속성의 원자성
속성 값으로 원자 값만 사용할 수 있다.
모든 속성 값은 더는 분해할 수 없는 하나의 값, 즉 원자 값만 가질 수 있다.
즉, 관계 데이터 모델에서는 복잡한 개념을 배제하고 릴레이션을 단순한 구조로 정의하는 것이 목표임으로 다중 속성 값을 허용하지 않는다.
4. 키의 종류
튜플을 유일하게 구별하기 위해 모든 속성을 이용하는 것보다 일부 속성만 이용하는 것이 효율성을 높일 수 있다.
릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할은 속성 또는 속성들의 집합인 키가 담당한다.4-1. 슈퍼키 (Super key)
슈퍼키는 유일성의 특성을 만족하는 속성 또는 속성들의 집합이다.
위의 예시용 그림에서 (고객아이디) 속성은 모든 고객 튜플마다 값이 달라야 하고 이를 통해 다른 튜플과 유일하게 구별할 수 있으므로 슈퍼키가 될 수 있다.
(고객아이디, 고객이름)으로 구성된 속성 집합의 경우에도 다른 튜플과 유일하게 구별할 수 있으므로 슈퍼키가 될 수 있다.
(고객아이디)가 들어간 모든 속성의 집합의 경우도 마찬가지로 슈퍼키가 될 수 있다.
즉, 슈퍼키는 유일성만을 만족하는 키의 개념으로 최소성을 만족하는 개념은 아니다.4-2. 후보키 (Candidate key)
후보키는 유일성과 최소성을 만족하는 속성 또는 속성들의 집합이다.
후보키는 튜플을 유일하게 구별하기 위해 꼭 필요한 최소한의 속성들로만 이루어지므로 슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다.
위의 예시에서는 (고객아이디) 속성만이 후보키가 된다.
4-3. 기본키 (Primary key)
릴레이션에서 여러 개의 후보키가 존재할 경우 튜플을 구별하기 위해 여러 개의 후보키를 모두 사용할 필요는 없다.
여러 후보키 중에서 기본적으로 사용할 키를 반드시 선택해야 하는데 이것이 기본키이다.
만약 후보키가 1개만 존재하면 당연히 해당 후보키를 기본키로 선정해야 하겠지만 여러 개일 경우에는 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택하면 된다.
기본키 선택 시 고려 기준
- 널 값을 가질 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
- 단순한 후보키를 기본키로 선택한다.
4-4. 대체키 (Alternate key)
대체키는 기본키로 선택되지 못한 후보키이다.
4-5. 외래키 (Foreign key)
외래키는 어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른(자기자신의 릴레이션 포함) 릴레이션의 기본키가 되는 키다. 다시 말해 특정 릴레이션의 기본키를 그대로 참조하는 속성의 집합이 외래키다.
외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 된다. 하지만 외래키 속성의 도메인과 참조되는 기본키 속성의 도메인은 반드시 같아야 한다.
참조하는 릴레이션과 참조되는 릴레이션이 같을 수도 있다.
즉, 외래키 자신이 속한 릴레이션의 기본키를 참조하도록 외래키를 정의할 수 있다.
외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있으며, 서로 다른 튜플이 값은 값을 가질 수 있다.
하나의 릴레이션에는 외래키가 여러 개 존재할 수도 있다. 그리고 외래키를 기본키로 사용할 수도 있고 외래키를 포함하여 기본키를 구성할 수도 있다.
5. 관계 데이터 모델의 제약
관계 데이터 모델에서 정의하고 있는 기본 제약 사항은 키와 관련한 무결성 제약조건이다.
무결성은 데이터에 결함이 없는 상태, 즉 데이터가 정확하고 유효하게 유지된 상태를 말한다.
무결성 제약조건은 데이터베이스 인스턴스가 항상 지켜야 하는 중요한 규칙이라고 할 수 있다.
데이터베이스 내부의 데이터를 보호한다는 관점에서 무결성은 보안과 유사하다.
하지만 보안이 권한이 없는 사용자로부터 데이터를 보호하는 것이라면, 무결성은 권한이 있는 사용자의
잘못된 요구에 의해 데이터가 부정확해지지 않도록 보호하는 것이다.5-1. 개체 무결성 제약조건
기본키를 구성하는 모든 속성은 널 값을 가질 수 없다.
5-2. 참조 무결성 제약조건
외래키는 참조할 수 없는 값을 가질 수 없다.
다시말해, 외래키는 자신이 참조하는 릴레이션에 기본키 값으로 존재하는 값, 즉 참조 가능한 값만 가져야 한다.
외래키가 참조 가능한 값만 가져야 하지만, 널 값을 가진다고 해서 참조 무결성 제약조건을 위반한 것은 아니다.
(외래키 예시1 참조)
'IT > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 데이터베이스 언어 SQL (2/3) (0) 2022.10.10 [데이터베이스] 데이터베이스 언어 SQL (1/3) (0) 2022.10.10 [데이터베이스] 데이터 모델링 (개념적 모델) (1) 2022.10.06 [데이터베이스] 데이터베이스 시스템 (DBS) (0) 2022.10.06 [데이터베이스] 데이터베이스 관리 시스템 (DBMS) (0) 2022.10.06