5장 데이터베이스 설계와 ER 모델1

Song Chae Won·2023년 4월 14일
0

DATABASE_STUDY

목록 보기
9/19
post-thumbnail

데이터베이스 설계의 개요

데이터베이스 설계

  • 개념적 데이터베이스 설계 과정에서 조직체(실세계)의 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델을 구축
  • 엔티티는 서로 구분이 되면서 독립적으로 존재하는 조직체에서 데이터베이스에 나타내려는 객체를 의미
    EX) 이화여대 데이터베이스에서는 엔티티: 학생, 교수, 과목 등의 엔티티가 필요.
  • 관계 두 개 이상의 엔티티 간의 연관 나타냄
  • 프로세스는 관련된 활동
  • 무결성 제약조건은 데이터의 정확성과 비즈니스 규칙 의미

개념적 모델

  • 데이터베이스의 구조나 스키마를 개발할 수 있게 하는 프레임워크 제공
  • ER 모델(엔티티-관계 모델) 가장 많이 사용, 구현 모델 중에는 관계 데이터 모델(구현 단계에서 사용), 네트워크 모델, 계층형 모델 등이 있음

데이터베이스 설계의 개요

  • 데이터베이스를 생성하는 과정
  • 데이터, 데이터 간의 관계를 표현
  • 데이터 항목의 중복 최소화, 무결성 제공, 효율적 접근 제공

데이터베이스 설계 과정

  • 요구사항 분석 단계
  • 설계 단계 ➡️ 개념적 설계, DBMS의 선정, 논리적 설계, 스키마 정제(중복이나 갱신 이상을 한번 더 체크하는 과정), 물리적 설계(성능상의 문제 고려), 보안 설계(사용자들의 그룹과 접근 제한)
  • 구현 단계 (구축과 튜닝)
    데이터를 적재하거나 변환, 기존의 응용 변환
  • ppt 7/37 꼭 확인!
    - 1) 요구사항 수집과 분석 ➡️ 2) 개념적 설계(ER 스키마가 나옴) ➡️ 3) DBMS 선정 ➡️ 4) 논리적 설계 ➡️ 5) 정규화 ➡️ 6) 물리적 설계(저장구조, 인덱스 등을 설계)

1) 요구사항 수집과 분석

  • 요구사항 명세서 만들기
  • 엔티티들과 이들의 애트리뷰트들이 무엇인지, 엔티티들 간의 관계가 무엇인지 파악하기
  • 전형적인 연산(SQL 개념: 어떤 데이터를 삽입, 삭제, 수정하는지, 어떤 데이터를 검색할지)

2) 개념적 설계(ER 스키마가 나옴)

  • 요구사항 명세로부터 개념적 스키마를 만들기
  • 대표적인 데이터 모델이 ER 모델
  • 엔티티 관계, 관계 타입, 애트리뷰트들을 식별하고 도메인 결정하고, 후보 키와 기본 키 애트리뷰드들을 결정함
  • ER 스키마, ER 다이어그램으로 표현됨

3) DBMS 선정

  • 기술적인 요인: DBMS가 제공하는 데이터 모델, 저장 구조, 인터페이스, 질의어, 도구, 제공되는 서비스
  • 경제적인 요인: DBMS 구입 비용, 하드웨어 구입 비용, 유지 보수 비용, 기존의 시스템을 새로운 DBMS에 맞게 변환하는데 소요되는 비용, 인건비, 교육비 등

4) 논리적 설계

  • DBMS의 데이터 모델(EX. 관계형 데이터베이스) 사용하여 논리적 스키마 생성
  • 개념적 스키마에 알고리즘을 적용하여 논리적 스키마 생성
  • ER 모델로 표현된 개념적 스키마를 관계 데이터베이스 스키마로 사상
    (ERD 모형 기억하면 됨!), (다음시간에 배움)
  • 정규화 과정을 적용

➕ 정규화 (5월에 배울 예정)

  • 논리적 설계에서 수정, 갱신 이상등을 체크

5) 물리적 설계 (중간 이후에)

  • 저장 구조와 접근 경로 결정
  • 성능상의 주요 기준: 응답 시간, 트랜잭션 처리율, 보고서 생성 시간

6) 트랜잭션 설계 표에는 없음

EX) 수강신청 프로그램

  • 요구사항 수집과 분석 후에 데이터베이스 설계 과정과 별도로 트랜잭션 설계를 진행할 수 있음
  • 응용 프로그램의 설계
  • 데이터베이스 스키마는 모든 정보를 포함해야함
  • 검색, 갱신, 혼합 등 세 가지 유형으로 구분하여 입력과 출력, 동작 등을 식별

ER 모델

  • 엔티티, 애트리뷰트, 엔티티들의 관계로 그래픽하게 표현
  • 쉽게 관계 데이터 모델로 사상됨
  • ER 모델을 기반으로 만들어진 다수의 CASE 도구(ERWin 등) 들이 존재
    : 이러한 도구들은 ER 설계를 자동으로 오라클, SQL Server 등 데이터 정의어로 변환하고, 어떤 도구는 XML로 변환
    EX) 회사의 ER 스키마 다이어그램: 타원, 직사각형, 마름모 3가지 구분

엔티티

  • 엔티티: 독립적으로 존재하면서 고유하게 식별 가능한 실세계의 객체
  • 실체가 아니어도 과목, 부서와 같은 생각, 개념과 같이 추상적인 것도 있음
    (구분이 되면 됨!)

엔티티 타입

  • 엔티티 타입: 동일한 애트리뷰트들을 가진 엔티티들의 틀, 릴레이션의 내포
  • 엔티티 집합: 동일한 애트리뷰트들을 가진 엔티티들의 모임, 릴레이션의 외연
    ⭐ 타입과 집합 구분하기!

애트리뷰트

  • 하나의 엔티티는 연관된 애트리뷰트들의 집합으로 설명
  • 애트리뷰트의 도메인은 모든 가능한 값들의 집합, 여러 애트리뷰트가 동일한 도메인 공유 가능
  • 키 애트리뷰트는 엔티티타입 내에서 각 엔티티를 고유하게 식별함
  • ER 다이어그램에서 기본 키에 속하는 애트리뷰트는 밑줄을 그어 표시
  • ER 다이어그램에서 타원형

단순 애트리뷰트 <-> 복합 애트리뷰트

  • 단순 애트리뷰트: 더 이상 다른 애트리뷰트로 나눌 수 없음
    EX) 학생의 이름, 학번 등

  • 실선 타원으로 표현

  • 대부분은 단순 애트리뷰트

  • 복합 애트리뷰트: 두 개 이상의 애트리뷰트로 이루어짐
    EX) Address라는 복합 애트리뷰트 안에는 시, 구, 동, 집코드 등의 애트리뷰트로 나눌 수 있음

  • 동일한 엔티티 타입이나 관계 타입에 속하는 애트리뷰트들 중에서 밀접하게 연관된 것을 모아 놓은 것

단일 값 애트리뷰트 <-> 다치 애트리뷰트

  • 단일 값 애트리뷰트: 정확하게 하나의 값을 갖는 애트리뷰트

  • ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현
    EX) 이름, 학번 등

  • 다치 애트리뷰트: 여러 개의 값을 가질 수 있음
    EX) 취미, 특기

  • ER 다이어그램에서 이중선 타원으로 표현

저장된 애트리뷰트 <-> 유도된 애트리뷰트

  • 저장된 애트립뷰트: 독립적을 존재
    EX) 고객의 ID, 이름

  • ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현

  • 유도된 애트리뷰트: 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
    EX) AGE

  • 릴레이션의 애트리뷰트로 포함시키지 않는 것이 좋음

  • ER 다이어그램에서 점선 타원을 표현

강한/약한 엔티티 타입

  • 강한 엔티티 타입: 자신의 키 애트리뷰트들 사용하여 고유하게 엔티티 식별
  • 약한 엔티티 타입: 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입, 소유 엔티티 타입이 있어야함
    : 소유 엔티티 타입의 키 애트리뷰트를 결합해야만 고유하게 약한 엔티티 타입의 엔티티를 식별 가능
    EX) 사원(EMPLOYEE)들의 보험 관리를 위해 사원들의 부양가족들 리스트업, 여기서 동명 이인이 있을 때, 고유하게 식별은 어렵기에 약한 엔티티 타입이라고함. 여기서 소유 엔티티 타입은 사원(EMPLOYEE)임

부분 키: 부양가족의 이름 처럼 한 사원에 속한 가족 내에서는 서로 다르지만, 회사 전체 사원들의 부양가족들 전체에서는 같은 경우가 생길 수 있는 애트리뷰트

  • 강한 엔티티 타입과 약한 엔티티 타입 사이는 두 줄 밑줄로 표시

관계와 관계 타입

  • 관계는 엔티티들 사이에 존재하는 연관이나 연결
  • ER 다이어그램에서 다이아몬드로 표기
  • 관계 집합: 동질의 관계들의 집합
  • 관계 타입: 동질의 관계들의 틀
  • 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입에 실선으로 연결

관계의 애트리뷰트

  • 관계 타입은 특징을 기술하는 애트리뷰트들을 가질수 있음
  • 키 애트리뷰트는 갖지 않음

차수(degree)

  • 관계로 연결된 엔티티 타입들의 개수를 의미
    EX) 1진관계: employee - supervises
    2진관계: employee - workd_for - department
    3진관계: project - supplies - part
    |
    supplier

카디날리티

  • 한 엔티티 타입의 몇 개의 엔티티가 다른 엔티티 타입의 몇 개의 엔티티와 연관되는가를 나타냄
  • 1:1, 1:N, M:N으로 구분
    - 1:1 관계: EX) 사원에 대해 최대 한 개의 PC, PC에 대해 최대 한의 사원, 이때 PC와 사원간의 관계
    ⭐ (min1,max1) = (0,1), (min2,max2) = (0,1)
    • 1:N 관계: EX) 사원에 대해 최대 한 개의 PC, PC에 대해 여러 명의 사원이 있을 때, 이때 PC와 사원간의 관계 (가장 흔한 관계)
      ⭐ (min1,max1) = (0,*), (min2,max2) = (0,1)
    • M:N 관계: EX) 사원에 대해 여러 대의 PC, PC에 대해 여러 명의 사원이 있을 때, 이때 PC와 사원간의 관계
      ⭐ (min1,max1) = (0,*), (min2,max2) = (0,*)
  • EX) 카디날리티가 명시된 3진 관계 타입
    CAR (0,1): 차는 최소 0대, 최대 1대 팔린다
    SALESPER (0,N): 판매자는 최소 0대, 최대 N대 팔 수 있음
    CUSTOMER (0,M): 구매자는 최소 0대, 최대 N대 살 수 있음

카디날리티 비율의 최소값과 최대값

  • 적어도 min번 관계에 참여함
  • 최대한 max번 관계에 참여함
  • min = 0 : 반드시 관계에 참여해야할 필요 없음
  • max = * : 임의의 수만큼 (무한하게) 참여할 수 있음
profile
@chhaewxn

0개의 댓글