관계형 데이터베이스 - 관계형 모델의 기본 개념과 용어 정의
관계형 모델에 대한 이론적인 정의
- 함수 종속(Functional Dependency)에 의해 정규화(Normalization)된 모델
관계형 모델의 용어 정의
릴레이션
- 릴레이션(Relation): 관계형 모델에서 기초가 되는 개념
- 릴레이션은 가로와 세로로 이루어진 테이블(표) 형태의 2차원 데이터
- 머리(Head) 부분인 애트리뷰트와 몸통(Body) 부분인 튜플로 구분
- 릴레이션에는 이름이 존재하며 2차원의 테이블 형태로 데이터(Value, 애트리뷰트 값)가 관리된다.
- 각 열을 튜플(Tuple)이라 하며 각 행을 애트리뷰트(Attribute)라고 한다.
- 애트리뷰트 중에서 튜플을 유일하게 식별할 수 있는 애트리뷰트가 식별자(Identifier)
- 이름, 주소와 같은 애트리뷰트의 이름을 내포(Intension 또는 Head)라고 하며 '1234', '홍길동' 같은 실제 데이터를 외포(Extension 또는 Body)라고 한다.
- 릴레이션의 이름과 내포를 스키마(Schema)라고도 한다.
- 릴레이션의 튜플의 개수를 카디널러티(Cardinality)라고 한다.
- 애트리뷰트의 개수를 차수(Degree)라고 한다.
- 차수가 1개 이상이고 카디널리티가 0개 이상이면 유효한 릴레이션이다.
- 튜플은 흔히 레코드(Record), 로우(Row), 인스턴스(Instance)라고도 부른다.
- 애트리뷰트는 컬럼(Column), 필드(Field)라고 부른다.
엔터티(Entity)[7장에서 정의됨]
- 엔터티에 대한 정의(엔터티가 무엇인지를 정의하는 것은 쉽고도 어렵다. )
- 간단하게 설명하면 필요에 의해 관리하고자 하는 데이터의 집합
- 업무를 수행하는 데 필요한 데이터를 특성이 유사한 것끼리 모아 놓은 독립적인 집합
- 특성이 유사한 것끼리 모았다는 것은 함수 종속을 의미 하므로 업무에서 관리하고자 하는 데이터(속성)를 함수 종속(Functional Dependency)에 의해 도출한 결과 집합이 엔터티라고 정의할 수 있다.
- 엔터티는 "사람(Person), 장소(Place), 사물(Object), 사전(Event), 개념(Concept) 등을 표현한 집합이다."라는 정의는 가장 일반적인 엔터티에 대한 정의
관계형 모델의 특징
왜 관계형 데이터베이스라고 하나?
- 관계형 데이터베이스(Relational Database)의 Relational은 데이터 모델의 관계(Relationship) 때문에 붙여진 이름이 아니라 릴레이션(Relation) 때문에 붙여진 이름
관계형 모델의 특징
- 관계형 데이터베이스에는 2차원 테이블 형태의 여러 릴레이션들이 존재하고 릴레이션에는 식별자가 존재
- 식별자 중에는 외래 식별자가(Foreign Key)가 존재해 주 식별자와 조인을 통해 릴레이션 사이의 연관 관계를 관리
- 조인을 통해서 데이터를 얻을 수 있으므로 데이터 중복이 최소화되는데, 데이터를 중복해서 저장하지 않도록 설계하는 것이 관계형 데이터베이스 설계의 핵심
관계형 데이터베이스의 단점
- 데티어 구조를 효율적으로 설계하기 어렵다는 것이 관계형 데이터베이스의 단점
관계형 모델이 지켜야할 제약
- 일반적으로 다음과 같은 제약(Constraints)을 만족하지 않으면 관계형 모델이 아니다.
- 릴레이션에서 각 튜플은 유일해야 한다.(가장 기본적인 제약)
- ★ 한 릴레이션에는 하나의 데이터 주제만이 포함된어야 한다.
- 식별자의 값이 같은 튜플이 존재해서는 안 된다. → 엔터티 무결성(Entity Integrity)
- 애트리뷰트에는 유일한 값이 사용되어야 한다.(다중 값이나 복합 값이 존재해서는 안 된다.)
- 위의 그림에서 두 번째 튜플의 취미 애트리뷰트 값은 다중 값이므로 제약 위반
- 전체 모델에서 릴레이션의 이름은 유일해야 한다.
- 릴레이션 내에서 애트리뷰트의 이름도 유일해야 한다.
- 가능하다면 전체 릴레이션에서 애트리뷰트의 이름이 유일한 것이 좋다.
- 릴레이션 내에서 튜플의 차례는 중요하지 않다.(가장 나중에 입력된 튜플이 제일 처음에 있어도 된다.)
- 릴레이션에는 튜플이 존재하지 않을 수도 있다.
- 애트리뷰트의 순서도 중요하지 않다.
- 모든 릴레이션은 함수 종속 규칙을 따라야 한다.
- 릴레이션이 정규화(Normalization)되지 않으면 관계형 모델이라 할 수 없다.
- 정규화된 릴레이션 사이에는 외래 식별자(Foreign Identifier)를 통해서 연관 관계가 성립
이 책 재밌나요?