[데이터베이스] 5. 데이터베이스 설계와 ER 모델

Seojin Kwak·2022년 4월 25일
0

Database

목록 보기
9/9

데이터베이스 설계

  • 개념적 데이터베이스 설계
    : 개념적 구조. 실제로 데이터베이스를 어떻게 구현할 것인지와는 별개로 정보 사용 모델 개발. 요구사항 분석 단계 후에 수행. 저장될 데이터의 설명서를 만듦.
    => 비즈니스 이해. 최종 사용자와 원활한 소통. 설계 상의 실수 초기에 발견해서 문제 해결. 튼튼한 기초 구축하여 데이터베이스 품질 보장
    - 엔티티: 서로 구분 O. 조직체에서 데이터베이스에 나타내려는 객체(사람, 사물, 장소)를 의미
    - 관계: 두 개 이상의 엔티티들 간의 연관
    - 프로세스: 관련 활동
    - 무결성 제약조건: 데이터의 정확성, 비즈니스 규칙
  • 물리적 데이터베이스 설계
  • 개념적 모델: 데이터베이스 구조나 스키마를 하향식으로 개발할 수 있기 위한 프레임워크 제공
    - 엔티티-관계 데이터 모델 (ER: Entity - Relationship)

데이터베이스 설계 과정

  1. 요구사항 수집과 분석
    : 구축하고자 하는 데이터베이스의 구현 범위, 사용자의 범주 결정. 예비 사용자들로부터 요구사항 수집. 업무 처리를 위해 필요한 데이터 분석
    기존 문서 조사, 인터뷰, 설문 조사
    요구사항 지식 기반으로 관련 있는 엔티티, 애트리뷰트, 엔티티들 간의 관계 파악
    전형적인 연산, 연산 의미, 접근 데이터 양 분석
  • 요구사항 명세서: 위에서 파악한 지식을 문서화
    - 담당자 요구 명확히 파악
    - 명확한 용어 작성
    - 분석가의 자의석 해석, 짐작 X
    - 사용자의 요구사항만을 반영하여 구체적 문장 형태로 서술
    - 사용자에게 최종 컨펌

  1. 개념적 설계
    : 한 조직체에서 사용되는 정보 모델 구축
    요구사항 명세 => 개념적 스키마
    대표적 데이터 모델: ER 모델
  • 엔티티 타입, 관계 타입, 애트리뷰트 식별
  • 애트리뷰트 도메인 결정
  • 후보 키와 기본 키 애트리뷰트 결정
    ER 스키마 => ER 다이어그램으로 표현
  1. DBMS 선정
    : 여러 가지 요인 검토 후 DBMS 선정
  • 기술적 요인: DBMS가 제공하는 데이터 모델, 저장 구조, 인터페이스, 질의어, 도구, 제공되는 서비스
  • 경제적 요인: DBMS 구입 비용, 하드웨어 구입 비용, 유지 보수 비용, 기존 시스템을 새로운 DBMS에 맞게 변환하는 비용, 인건비, 교육비
  1. 논리적 설계
    : DBMS 데이터 모델 사용하여 논리적 스키마 생성
    개념적 스키마에 알고리즘 적용하여 논리적 스키마 생성
    ER 모델로 표현된 개념적 스키마 -> 관계 데이터베이스 스키마 사상
  • 정규화: ER 스키마를 변환하여 얻게 되는 관계 스키마를 분석함으로써 더 정제. 관계 스키마의 중복과 갱신 이상이 발생하는지 확인
  1. 물리적 설계
    : 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등 결정
  • 성능 상의 주요 기준
    - 응답 시간: 질의와 갱신 소요 시간
    - 트랜잭션 처리율: 1초 당 얼마나 많은 트랜잭션들이 처리되는가
  1. 트랜잭션 설계
    : 완성될 데이터베이스에서 동작할 응용 프로그램(트랜잭션) 설계
    트랜잭션에서 요구하는 모든 정보 => 데이터베이스 스키마에 포함
    검색, 갱신, 혼합 유형으로 구분하여 입력, 출력, 동작 식별

ER 모델

실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 그래픽하게 표현한 모델

관계 데이터 모델로 사상.
(+): 쉽게 배울 수 있고, 이해하기 쉬우며, 자연어보다 정형적, 구현에 독립적
=> 데이터베이스 설계자들이 최종 사용자들과 의사소통하는 데 적합

ER 모델 기반으로 만들어진 도구 존재 a lot.

ER 스키마를 관계 모델 릴레이션으로 사상

  1. 정규 엔티티 타입, 단일 값 애트리뷰트
  • 단순 애트리뷰트: 릴레이션에 모두 포함
  • 복합 애트리뷰트: 복합 애트리뷰트를 구성하는 단순 애트리뷰트만 릴레이션에 포함
  • 기본 키 그대로 유지
  • 다치 애트리뷰트 포함 x
EMPLOYEE(EMPNO, EMPNAME, TITLE, SALARY, CITY, KU, DONG)
DEPARTMENT(DEPTNO, DEPTNAME, FLOOR)
PROJECT(PROJNO, PROJNAME, BUDGET)
PART(PARTNO, PARTNAME, PRICE)
SUPPLIER(SUPPNO, SUPPNAME, CREDIT)
  1. 약한 엔티티 타입, 단일 값 애트리뷰트
  • 단순 애트리뷰트: 릴레이션에 모두 포함
  • 소유 엔티티 타입에 해당하는 릴레이션의 기본 키를 약한 엔티티 타입에 해당하는 릴레이션에 외래 키로 포함
  • 기본 키: 부분 키 + 참조하는 외래 키
DEPENDENT(EMPNO, DEPNAME, SEX) // EMPNO, DEPNAME 조합: 기본키
  1. 2진 1:1 관계 타입
  • 각각에 대응하는 릴레이션 중에 하나 선택하여 E1의 기본 키를 E2의 외래 키로 포함
  • 완전하게 참여하는 릴레이션 선택
  • 단순 애트리뷰트: E2에 대응되는 릴레이션에 포함
PROJECT(PROJNO, PROJNAME, BUDGET, STARTDATE, MANAGER)
  1. 정규 2진 1:N 관계 타입
  • E1의 기본키를 N측의 참여 엔티티 타입 E2에 외래 키로 포함
  • 반대로 하면 애트리뷰트에 값들의 집합이 들어가거나 정보 중복 많이 발생
  • 단순 애트리뷰트 E2 릴레이션에 포함
EMPLOYEE(EMPNO, EMPNAME, TITLE, CITY, KU, DONG, SALARY, DNO)
PART(PARTNO, PARTNAME, PRICE, SUBPARTNO)
  1. 2진 M:N 관계 타입
  • 참여 엔티티 타입 해당 릴레이션 기본 키 -> 릴레이션 R의 외래 키로 포함. 이들의 조합이 릴레이션 R의 기본 키
  • 단순 애트리뷰트 모두 R에 포함
WORKS_FOR(EMPNO, PROJNO, DURATION, RESPONSIBILITY)	// EMPNO, PROJNO 조합 => 기본키
  1. 3진 이상의 관계 타입
  • 참여하는 모든 엔티티 타입 기본 키들을 R에 외래 키로 포함
  • 외래 키들의 조합 => 기본 키
  • 1:N:N이라면 카디널리티가 1인 릴레이션의 기본 키를 참조하는 외래 키를 제외한 나머지 외래 키들의 조합이 릴레이션 R의 기본 키
SUPPLY(SUPPNO, PROJNO, PARTNO, QUANTITY)	// SUPPNO, PROJNO, PARTNO 조합 => 기본 키
  1. 다치 애트리뷰트
  • 다치 애트리뷰트에 해당하는 릴레이션 R 생성
  • 다치 애트리뷰트를 애트리뷰트로 갖는 엔티티 타입이나 관계 타입에 해당하는 릴레이션의 기본 키를 릴레이션 R의 외래 키로 포함
  • R의 기본 키는 다치 애트리뷰트와 외래 키 조합
PJOC_LOC(PROJNO, LOCATION)	// PROJNO, LOCATION 조합 => 기본키
profile
Hello, World!

0개의 댓글