database/DataBase 설계

[DB 설계] 관계형 모델

솧이 2022. 9. 4. 21:36

▶ 관계형 데이터 모델

데이터를 릴레이션(relation) 으로 표현하는 '논리적 데이터 모델' 이다

* 릴레이션은 테이블이다

 

▷ 관계형 데이터 모델에 등장하는 용어

속성(attribute)

튜플(tuple)

도메인(domain)

릴레이션(relation)

릴레이션 스키마(relation schema)

릴레이션 인스턴스(relation instance)

디그리(degree, 차수)

카디널리티(cardinality, 대응수)

 

 관계형 데이터 구조 : 릴레이션

데이터를 원자값(atomic value)으로 갖는 2차원 테이블 형태 -> 릴레이션(relation)

원자값 : 더 이상 쪼개질 수 없는 단위

릴레이션은 '논리적 구조'

'물리적인 저장 구조'가 아니다

 

릴레이션 구조 = 스키마 + 인스턴스

관계형 데이터 모델에 등장하는 용어

속성(attribute) : 릴레이션의 열(column)

행(row) : 튜플(tuple)

도메인(domain) : 하나의 속성(attribute)이 취할 수 있는 같은 타입의 원자값들의 집합

차수(defree) : 속성(attribute)의 개수

카디널리티(cardinality) : 튜플(tuple)의 개수

 

 

 

ER model -> 관계형 데이터 모델 변환

개념적 데이터 모델 -> 논리적 설계 데이터 모델

 

매핑 룰 (mapping rule)

개념적 데이터 모델인 ER 모델을 논리적 데이터 모델인 릴레이션 스키마로 변환하는 것

ER 모델 릴레이션
속성 컬럼
식별자 기본키
관계 기본키 + 외래키

 

- 식별자

식별자는 개체(entity)의 성격을 좌우하는 속성이다.

하나의 속성으로 해당 개체(entity)의 식별자를 선정할 수 있다.

여러 개의 속성(attribute)으로 해당 개체(entity)의 식별자를 선정하는 것도 가능하다.

개체(entity)의 식별자는 물리 모델링을 할 때 인덱스로 구현되며 그 중 유니크 식별자(Unique Identifier)는 기본키(Primary Key)로 구현된다.

이처럼 식별자는 해당 개체(entity)의 키 값이 되며, 해당 테이블의 속성을 좌우한다.

 

여러개의 data에서 각각의 data를 구분할 수 있는 논리적인 이름을 identifier 이라고 한다

 

 

ER 모델의 '관계'를 관계형 데이터 모델로 변환

개체 A, B 와  관계 Y 로 이루어진 ER 모델을 관계형 데이터 모델의 릴레이션 스키마로 변환하는 과정이다.

  1. 개체 A, B 는 → 독립적인 릴레이션 A, B 로 표현
  2. ER 모델에서 각 개체의 속성은 → 릴레이션의 속성들로 정의
  3. ER 모델의 기본키 속성 → 릴레이션 에서도 밑줄 그어 표시
  4. 관계 Y 가 1 : 1 이면 → 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가하거나, 반대로 B 의 기본키를 A의 외래키로 추가 하여 표현
  5. 관계 Y 가 1:N 이면 → 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가
  6. 관계 Y 가 N:M 이면 → 릴레이션 A 와 B의 기본키를 모두 포함한 별도의 릴레이션을 추가하여 표현.  이때 추가된 릴레이션을 교차 릴레이션(intersection relation) 혹은 교차 엔티티 (intersection entity)라 함.

- 관계 Y가 1:1이면 -> 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가하거나, 반대로 B의 기본키를 A의 외래키로 추가하여 표현한다

외래키 교수번호 추가

* 실제 1:1 관계는 잘 사용되지 않는다. 차라리 두 테이블을 합치는 게 낫다

  서비스 중인 개체(entity)에 추가적인 속성(attribute)를 부여할 때 사용하기도 한다

 

 

- 관계 Y가 1:N이면 -> 릴레이션 A의 기본키를 릴레이션 B의 외래키로 추가한다

외래키 교수번호 추가

 

 

- 관계 Y가 N:M이면 -> 릴레이션 A와 B의 기본키를 모두 포함한 별도의 릴레이션을 추가하여 표현한다

별도의 릴레이션 생성

 

-- N:M 관계 예시

회원과 게시물에 좋아요란 별도의 테이블이 만들어진다
미생물의 좋아요 갯수는? 3개
토글을 누르면 좋아요 또 누르면 좋아요 사라진다

 

 

 

▶ 릴레이션 스키마의 다른 표현들

   ↓ 실무에서는 위보단 아래와 같은 표기를 더 잘 사용한다 

 

▷ 속성만 기록한 도형으로 표기하기

▷ 속성과 타입으로 표시하기

속성에 대한 자료의 타입, 크기, 제약사항들을 표기한다.

이러한 구조를 물리 개체 관계도 (물리 ERD)라고 한다

 

 

▷ 정보공학적 도형 표기 (IE 표기법)

 

 

▷ 실무 예

 

테이블 명세서

 

 

 

▶ 식별 관계(identifying) 

식별관계란 개체 A, B 사이의 관계에서 A 개체의 기본키가 B 개체의 외래키이면서 동시에 B 개체의 기본키가 되는 관계

B 개체의 존재 여부가 A 개체의 존재 여부에 의존적인 경우에 발생한다

도형에서 식별 관계는 '실선' 으로 표시한다

 

 비식별 관계(Non-identifying) 

개체 A, B 사이의 관계에서 A 개체의 기본키가 B 개체의 비기본키 영역에서 외래키가 되는 관계

B 개체의 존재 여부는 A 개체의 존재 여부와 관계 없이 존재한다

일반적으로 현실세계에서는 '비식별 관계' 로 존재하는 경우가 많으며 도형에서 비식별 관계는 '점선' 으로 표시한다

 

 

 

'database > DataBase 설계' 카테고리의 다른 글

[Oracle] PL/SQL  (0) 2022.09.05
[DB 설계] 정규화  (0) 2022.09.04
[DB 설계] ER-Model  (0) 2022.09.04