Computer Science/Database Systems

[DB] 제2장 데이터베이스 모델링

iseop 2022. 3. 2. 21:32   인쇄용 버전

데이터베이스 모델링의 이해

데이터베이스 모델링 단계

DBMS 독립적 1. 사용자 요구사항 분석
➡️요구사항 정의서 도출
2. 개념적 데이터 모델링
➡️ER 모델 도출
3. 논리적 데이터 모델링
DBMS 의존적 ➡️관계형 모델 도출
4. 물리적 데이터 모델링
➡️물리적 세부사항 도출

 

1. 사용자 요구사항 분석

문서(RFP) 교환/인터뷰 등을 통하여 실제 업무에서 사용되는 데이터의 종류와 특징을 파악한다.

  • 요구사항 도출 단계: 요구사항 명세서 도출
  • 요구사항 분석 단계: 요구사항 명세서보다 더 상세화된 요구사항 정의서 도출
  • 요구사항 기록 단계: 요구사항을 지속 반영하고 문서화한다.

 

2. 개념적 데이터 모델링

데이터 구조와 관계를 공통된 표기법(ER 모델)을 사용하여 추상화한다.

 

개체-관계 모델과 ER 다이어그램

  • 1976년 P. Chen 박사가 제안한 데이터 모델링 도구이다.
  • ER 모델의 구성 요소
    • 개체 집합: 같은 속성을 공유하는 개체들의 집합, 이분 사각형으로 표현
      • 각 개체는 속성들의 집합으로 표현된다.
      • 각 개체는 속성에 대한 을 갖는다.
      • 속성에는 속성이 가질 수 있는 모든 가능한 값들의 범위인 도메인이 존재한다.
    • 관계 집합: 같은 유형의 관계 인스턴스들의 집합, 마름모로 표현
      • 개체간의 특정 관계를 관계 인스턴스라고 한다.
      • 한 개체 집합이 다른 개체 집합과 관계를 갖는 것을 관계 집합에 참가한다고 한다.
      • 관계 집합에 참여하는 개체 집합의 수를 차수라고 한다.
      • 동일한 개체 집합이 재귀적으로 다른 역할로서 참가하는 재귀적 관계 집합에는 역할을 명시해야 한다.
    • 속성: 개체를 구체적으로 설명하는 특성
      • 단순 속성: 더 작은 속성으로 나눌 수 없는 속성(학번, 나이 등)
      • 복합 속성: 더 작은 속성으로 나눌 수 있는 속성(생년월일 등), 들여쓰기로 표현
      • 단일값 속성: 하나의 값만을 갖는 속성(학번, 나이 등)
      • 다중값 속성: 여러개의 값을 가질 수 있는 속성(계좌번호, 전화번호 등), 중괄호로 표현
      • 유도 속성: 다른 속성값으로부터 유도될 수 있는 속성(나이 등), 괄호로 표현
      • 저장 속성: 다른 속성값으로부터 유도될 수 없는 속성
    • 제약조건
      • 맵핑 카디널리티(사상수): 관계 집합에 참가한 개체 집합들의 각 개체가 맺을 수 있는 관계에 대한 제약
        • 1:1 관계: 양 쪽을 화살표로 표현
        • 1:N 관계: 1쪽을 화살표로 표현
        • N:1 관계: 1쪽을 화살표로 표현
        • M:N 관계: 양 쪽을 실선으로 표현
      • 참가 제약조건
        • 부분적 참가: 실선
        • 전체적 참가: 이중 실선
      • 키 속성
        • 키 속성에 밑줄을 그어 표현
    • 강한 개체와 약한 개체
      • 다른 개체의 도움 없이 독자적으로 존재할 수 없는 개체를 약한 개체라고 한다.
      • 이 때, 도움을 주는 개체가 강한 개체이자 식별 개체가 된다.
      • 약한 개체 집합은 일대다 관계를 통해 강한 개체 집합과 연결되어야 한다.
      • 약한 개체 집합의 키는 강한 개체 집합의 키와 결합하여 구성되며, 점선 밑줄을 그어 표현한다.

 

3. 논리적 데이터 모델링

데이터 구조와 관계가 표현된 개념적 데이터 모델을 특정 DBMS의 데이터 모델인 스키마로 변환한다.

논리적 데이터 모델에는 관계형, 객체지향형, 객체-관계형, Key-Value, Document 모델 등이 있다.

일반적으로 관계형 모델을 사용한다.

 

관계형 모델

  • 컬럼, 컬럼의 순서, 도메인, 릴레이션의 이름을 포함하여 릴레이션 스키마라고 한다.
  • 어떤 한 시점의 릴레이션을 릴레이션 인스턴스라고 한다.
  • 릴레이션에서 가로행을 레코드, 투플이라고 한다. 레코드의 개수를 카디널리티라고 한다.
  • 릴레이션에서 세로열을 컬럼, 필드라고 한다. 컬럼의 개수를 차수라고 한다.
  • 릴레이션의 특징
    • 레코드의 유일성: 중복된 레코드는 존재 불가하며, 하나의 키 값으로 레코드를 유일하게 식별할 수 있다.
    • 레코드의 무순서성: 레코드에는 순서가 없다.
    • 컬럼의 무순서성: 컬럼에는 순서가 없다.
    • 컬럼값의 원자성: 각 컬럼은 더 작은 의미로 분해가 불가능하다.
  • 키의 특징
    • 한 릴레이션에서 에 포함되는 컬럼을 주 속성이라하고, 나머지를 비 주 속성이라 한다.
    • 유일성: 키 컬럼의 값은 중복될 수 없다.
    • 최소성: 키는 최소한의 컬럼으로만 구성된다. 즉, 여러 컬럼으로 구성된 키에서 한 컬럼만 제거하여도 유일성이 파괴된다.
    • 슈퍼키: 레코드를 구별할 수 있게 하는 컬럼 집합
    • 후보키: 슈퍼키 중에서 최소한의 컬럼으로 구성된 컬럼 집합
    • 기본키: 레코드 구분을 위해 지정한 후보키
    • 외래키
  • 제약 조건
    • 영역 제약조건: 특정 컬럼이 가질 수 있는 값(도메인)에 대한 제약
    • 키 제약조건: 특정 컬럼의 값이 레코드를 식별하는 데 사용될 수 있어야 한다는 조건
    • 개체 무결성 제약조건: 기본키 값으로 널값을 저장할 수 없다.
    • 참조 무결성 제약조건: 한 릴레이션의 레코드라 다른 릴레이션의 레코드를 참조하려면 반드시 참조죄는 레코드가 해당 릴레이션 내에 존재해야 하는 조건

 

ERD를 관계형 모델로 변환하는 과정

  • 개체 집합 ➡️ 릴레이션으로 변환
  • 약한 개체 집합 ➡️ 약한 개체 집합의 기본키를 강한 개체 집합의 키와 약한 개체 집합의 부분 키를 묶어서 표현
  • 일대일 관계 ➡️ 다른 릴레이션의 기본키를 참조하는 외래키 컬럼을 한 릴레이션에 추가
  • 일대다/다대일 관계 ➡️ 1측 릴레이션의 기본키를 참조하는 외래키 컬럼을 N측 릴레이션에 추가
  • 다대다 관계 ➡️ 두 릴레이션의 기본키를 참조하는 외래키 컬럼들을 갖는 관계 릴레이션을 추가 생성
  • 다중값 속성 ➡️ 기존 릴레이션의 기본키와 다중값 속성을 합한 키를 기본키로 하는 릴레이션을 추가 생성  
  • 관계 집합의 속성 ➡️ 각 속성을 외래키가 위치한 릴레이션의 컬럼으로 삽입
  • n항 관계 ➡️ n개 이상의 개체 집합이 참여한 관계에 대하여 각 릴레이션의 키들로 구성되는 관계 릴레이션을 추가 생성

 

관계 대수

질의에 대한 처리 과정을 단계적으로 표현하는 절차적 언어이다.

주어진 SQL에 대한 실행 계획 또는 처리 절차를 나타하기 위해 사용한다.

  • 기본 연산자
    • 셀렉트(σ): 조건을 만족하는 레코드만 선택
    • 프로젝트(Π): 명시한 컬럼만 표시
    • 집합 연산자: 합집합(∪), 차집합(-), 교집합(∩)
      • 집합 연산자는 호환 가능한 릴레이션 간에만 사용 가능하다.
    • 리네임(ρ): 관계대수에 새 이름 부여
    • 카티션 프로덕트(곱집합)(×): 두 릴레이션의 레코드 간 모든 조합을 취하여 결합한 레코드를 출력
    • 조인(⋈): 조인 조건을 만족하는 레코드 조합만 출력
  • 확장 연산자
    • 자연 조인 연산자(⋈n)
      • 두 릴레이션에 대한 카티션 프로덕트 생성
      • 카티션 프로덕트 결과에서 이름이 동일한 컬럼의 값이 서로 일치하는 레코드만 선택
      • 중복되는 컬럼 중 하나를 제거한 결과를 출력
    • 할당 연산자(←): 관계 대수식의 결과를 임시 변수에 저장
    • 집계 함수
      • sum: 합계
      • avg: 평균
      • count: 개수
      • max: 최댓값
      • min: 최솟값