Tech.log/데이터베이스

[ DB ] 관계 데이터 모델

Yohni 2021. 4. 24. 17:27

관계 데이터 모델에 대해서 알아보도록 하겠다.

💬 관계 데이터 모델의 기본 개념

: 개념적 구조를 논리적 구조로 표현하는 논리적 데이터 모델이다.

하나의 객체에 대한 데이터를 하나의 릴레이션에 저장한다.

 

💬 관계 데이터 모델의 기본 용어

1. 릴레이션(relation) 행과 열로 구성된 테이블을 말한다.

  • relation : 릴레이션, 테이블
  • relation data model : 관계 데이터 모델
  • relation database : 관계 데이터 베이스

2. 튜플 : 행(row)을 말한다.

3. 속성 또는 애트리뷰트(attribute) : 열(column)을 말한다.

 

4. 도메인(domain) - Data Type

  • 하나의 속성이 가질 수 있는 모든 값의 집합이다.
  • 속성 값을 입력 및 수정할 때 적합성의 판단 기준이 된다. ( 데이터 타입의 맞는 값을 입력해야 한다.)
  • 일반적으로 속성의 특성을 고려한 데이터 타입으로 정의한다. ( 문자형, 숫자형, INT, CHAR ...  )

5. 널(Null)

  • 속성 값을 아직 모르거나 해당 값이 없음을 나타낸다.
  • 숫자 0 또는 공백이 아닌 값이다.

6. 차수(degree) - Table의 열 수

  • 한 릴레이션에 들어있는 속성의 개수를 말한다.
  • 유효한 릴레이션의 최소 차수는 1이다.
  • 자주 변경되지 않는다.

7. 카다널리티(Cardinality) - Table의 행 수

  • 릴레이션의 튜플 수를 말한다.
  • 유효한 릴레이션의 최소 카다널리티 수는 0이다. ( Data Zero )
  • 시간이 지남에 따라 계속해서 변경된다.

 


💬 릴레이션의 구성

: 스키마와 인스턴스로 이루어져 있다.

 

1. 릴레이션 스키마

  • 릴레이션의 이름과 릴레이션의 포함된 모든 속성의 이름으로 정의하는 릴레이션의 논리적 구조이다.
  • 데이터베이스 관리 시스템이 내부적으로 데이터 정의어를 이용해 정의한다.
  • 릴레이션의 이름, 속성 등 전체 구조를 쉽게 파악할 수 있다.
  • 릴레이션의 틀이며 자주 변경되지 않는다.

 

2. 릴레이션 인스턴스

  • 릴레이션의 실제 저장되는 데이터의 집합이다.
  • 어느 한 시점에서 릴레이션에 포함되어 있는 튜플들의 집합을 말한다.
  • 현재 릴레이션의 실제 내용을 쉽게 파악할 수 있다.
  • 데이터베이스 관리 시스템이 내부적으로 데이터 조작어를 이용해 릴레이션 인스턴스의 튜플을 검색하거나, 새로운 튜플 삽입과 기존 튜플 삭제 및 수정을 진행한다.
  • 시간이 지남에 따라 계속해서 변경 된다.
아이디 이름 나이 직업 포인트 릴레이션 스키마 (정적)
보라돌이 김나나 24 경찰 10000 릴레이션 인스턴스 (동적)
뚜비 김희철 29 의사 20000 릴레이션 인스턴스

 

💬 릴레이션의 특성

특성 설명
튜플의 유일성 1. 하나의 릴레이션에 포함된 튜플들은 모두 서로 달라야 한다.
2. 중복된 튜플이 존재하지 않는 튜플들의 집합이다.
3. 릴레이션에는 항상 튜플을 유일하게 식별할 수 있는 키가 존재해야 한다.
튜플의 무순서성 1. 하나의 릴레이션에서 튜플들의 순서는 아무런 의미가 없다.
2. 순서만 다른 튜플들로 구성된 릴레이션은 다른 릴레이션이 될 수 없다.
속성의 무순서성 1. 하나의 릴레이션에서 속성들의 순서는 아무런 의미가 없다.
2. 속성은 순서가 아니라 '이름'에 의해서 참조된다.
속성의 유일성 1. 하나의 릴레이션에는 같은 이름을 갖는 속성은 존재할 수 없다.
속성의 원자성

1. 모든 속성은 반드시 원자 값을 가져야 한다.
2. 속성 값은 논리적으로 더 이상 분리될 수 없으며, 어려 개의 값을 갖는 속성은 직접 표현할 수 없다.
3. Null값도 원자 값으로 간주한다.

 


💬 키의 종류

키(Key)는 릴레이션에 포함된 튜플들을 유일하게 구별해주는 역할을 한다.

관계 데이터 모델에서 중요한 제약조건을 정의 및 튜플을 처리하는 데 중요한 역할을 한다.

종류로는 슈퍼키, 후보키, 키본키, 대체키, 외래키가 있다.

 

📌 슈퍼키 ( 다 가지고 있는 것 )

: 슈퍼키는 1️⃣유일성의 특성을 만족하는 속성 또는 속성들의 집합이다.

 

1️⃣유일성은 키가 갖추어야 하는 기본 특성이다.

  • 하나의 릴레이션에서 키로 지정된 속성 값은 튜플마다 달라야 한다.
  • 키 값이 같은 튜플은 존재할 수 없다

 

📌 후보키

: 후보키는 유일성과 2️⃣최소성을 만족하는 속성 또는 속성들의 집합이다.

 

2️⃣ 최소성은 꼭 필요한 최소한의 속성들로만 키를 구성하는 특성을 가진다.

( 하나의 속성으로 구성된 키는 최소성을 만족 ) ->  ( 의미 없는 것은 버리는 것 )

 

슈퍼키 중에서 최소성을 만족하는 것이 후보키가 된다.

 

후보키가 되기 위해 만족해야 하는 유일성과 최소성의 특성은 새로운 투플이 삽입되거나 기존 투플의 속성 값이 바뀌어도 유지되어야 한다.
현재의 릴레이션 내용, 즉 릴레이션 인스턴스만 보고 유일성과 최소성을 판단해서는 안된다

 

📌 기본키

: 데이터베이스 설계자나 관리자가 여러 후보키 중에서 기본적으로 사용할 키를 선택하는 것이다.

후보키가 여러 개일 경우 데이터베이스 사용 환경을 고려하여 적합한 것을 기본키로 선택한다.

 

📌 대체키

: 기본키로 선택되지 못한 후보키

 

📌 외래키

: 다른 릴레이션의 기본키를 그대로 참조하는 속성의 집합이다.

어떤 릴레이션에 소속된 속성 또는 속성 집합이 다른 릴레이션의 기본키가 되는 키를 말한다.

외래키는 릴레이션들 사이의 관계를 올바르게 표현하기 위해 필요하다.

 

참조하는 릴레이션과 참조되는 릴레이션이 같을 수도 있다. (자기 참조)

 

외래키가 되는 속성과 기본키가 되는 속성의 이름은 달라도 된다.

하지만 외래키 속성의 도메인과 기본키 속성의 도메인은 반드시 같아야 한다

-> 도메인이 같아야 연관성 있는 투플을 찾기 위한 비교 연산이 가능하다.


외래키가 참조되는 릴레이션의 기본키가 아닌 다른 키를 참조할 경우
투플을 유일하게 특정짓기 어렵기 때문에 관련 있는 투플을 검색하지 못할 수도 있음

 

외래키는 기본키를 참조하지만 기본키가 아니기 때문에 널 값을 가질 수 있고, 서로 다른 투플이 같은 값을 가질 수 있음