-> 블로그 이전

[DB] 관계 데이터 모델 (Relational Data Model)

2021. 10. 12. 19:09Major`/DB

관계 데이터 모델 (Relational Data Model)

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

- 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장

 

기본 용어

- 릴레이션(Relation) : 행과 열로 구성된 테이블

- 행(Row) : 투플(Tuple)

- 열(Column) : 애트리뷰트(Attribute) or 속성

- 테이블 : 릴레이션(Relation)

- 도메인(Domain)

  • 하나의 속성이 가질 수 있는 모든 값의 집합
  • 속성의 특성을 고려한 데이터 타입(INT, CHAR, VARCHAR...)

- 널(Null)

  • 속성 값을 아직 모르거나 해당되는 값이 없음을 표현
  • 숫자 0도 아니고, 공백도 아닌 값

- 차수(Degree) ≥ 1

  • 한 릴레이션에 들어있는 속성(열)의 개수
  • 최소 차수 = 1
  • 자주 바뀌지 않음 ex) 고객정보, 직업, 나이...

- 카디날리티(Cardinality) ≥ 0

  • 한 릴레이션의 행(투플)의 개수
  • 최소 카디날리티 = 0
  • 시간이 지남에 따라 계속 변함 ex) 고객이 추가되면 튜플 또한 추가됨
  • if Cardinality =0 => 고객 X (아직 데이터가 존재하지 않는다)

차수 = 6 / 카디날리티 = 4

릴레이션의 구성

- 릴레이션 스키마 (Relation Schema)

  • 릴레이션의 논리적 구조
  • 릴레이션 이름과 속성 이름으로 정의 ex) 고객(고객 아이디, 고객 이름, 나이, 등급, 직업, 적립금)
  • 릴레이션의 틀
  • 자주 바뀌지 않음

- 릴레이션 인스턴스 (Relation Instance)

  • 릴레이션에 실제 저장되는 데이터의 집합
  • 릴레이션에 포함 되어 있는 투플들의 집합
  • 시간이 지남에 따라 계속 변함

릴레이션의 특성

1. 투플의 유일성

  • 1개의 릴레이션에는 동일한 투플이 존재할 수 없다 -> 릴레이션은 서로 다른 투플들의 '집합'
  • 키가 존재한다 -> 각 투플들을 고유하게 식별할 수 있는 하나 이상의 속성들의 모임

2. 속성의 원자성(단일성)

  • 한 투플의 각 속성은 단일 값(원자 값)을 가진다
  • 속성 값은 분해 불가능

'직업'이라는 속성에 회사원, 학생 2개의 값을 가지고 있기 때문에 '직업' 속성은 허용되지 않는다.

3. 투플의 무순서

4. 속성의 무순서

5. 한 속성의 값은 모두 같은 도메인 값을 가진다

6. 속성은 서로 다른 이름을 가진다 -> 서로 다른 릴레이션 간에는 같은 이름을 가진 속성이 있어도 된다.

 

릴레이션의 키

- 키 (Key)

  • 릴레이션에서 투플을 유일하게 식별할 수 있는 속성 혹은 속성들의 집합
  • 각각의 투플에 포함된 속성들 중 어느 하나는 값이 달라야 한다.
  • 키가 되는 속성은 반드시 값이 달라야 한다 -> 그래야 투플들을 서로 구별할 수 있다.
  • 슈퍼키(Super Key), 후보키(Candidate Key), 기본키(Primary Key), 대체키(Alternate Key), 외래키(Foreign Key)

키의 종류

학번 이름 주민등록번호
201051516 가나다 900101-1234567
201246896 라마바 920505-2894561
201643321 사아자 960718-1234654
202091347 차카타 000101-3465464

1. 슈퍼키(Super Key) : 유일성 O / 최소성 X

- 투플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성들의 집합

- 투플들을 고유하게 식별하는데 꼭 필요하지 않은 속성들을 포함할 수 있다 -> 구분되기만 하면 가능하다

- 1개 이상 존재

- 학번 / 주민등록번호 / (학번, 주민등록번호) / (학번, 이름) / (주민등록번호, 이름) / (학번, 주민등록번호, 이름)

※ '이름'은 행이 추가됨에 따라 같은 이름(유일성 X)이 나올 수 있기 때문에 '이름' 하나로는 슈퍼키가 되지 못한다.

 

2. 후보키(Candidate Key) : 유일성 O / 최소성 O

- 투플을 유일하게 식별할 수 있는 속성들의 최소 집합

- 모든 릴레이션에는 최소 1개 이상의 후보키가 있다

- 학번 / 주민등록번호

※ 투플을 구별하는 속성이 하나면 단일키(Single Key), 2개 이상이면 복합키(Composite Key)

 

3. 대체키(Alternate Key)

- 후보키 중 선택받지 못한 키

 

4. 기본키(Primary Key)

- 후보키 중 선택받은 키

※ 기본키의 특징

  • 속성이 항상 고유한 값을 가져야 한다
  • 속성이 NULL 값을 가지면 안 된다
  • 속성의 값이 변경될 가능성이 낮아야 한다
  • 테이블 당 기본키는 1개이다
  • 후보키 중 릴레이션의 특성을 가장 잘 반영하는 하나를 선택

- 기본키 : 학번

- 릴레이션 스키마를 표현할 때 밑줄을 그어 표시한다.

 

5. 외래키(Foreign Key)

- 관계 데이터 모델의 릴레이션 간의 관계를 표현한다

- 다른 릴레이션의 기본키를 참조하는 속성이다

- 외래키가 포함된 테이블을 자식 테이블 / 외래키 값을 제공하는 테이블을 부모 테이블

- 참조하고(외래키) 참조되는(기본키) 양쪽 릴레이션의 도메인은 서로 같아야 한다

- 참조되는 값이 변경되면 참조하는 값도 변경된다

- NULL 값과 중복 값 등이 허용된다

- 자기 자신의 기본키를 참조하는 외래키도 가능하다

- 외래키가 기본키의 일부가 될 수 있다

- FK라고 명시를 해줘야 한다

 

※ Example

고객(고객번호, 이름, 주민번호, 주소, 핸드폰)

도서(도서번호, 도서 이름, 출판사, 가격)

주문(주문번호, 고객번호(FK), 도서번호(FK), 판매 가격, 주문 일자)

 

※ 외래키의 존재 이유 = 데이터 무결성

- 무결성 : 데이터가 항상 정확한 값을 유지하는 성질