데이터베이스 모델링

2022. 5. 6. 02:04·방통대 컴퓨터과학과/3학년1학기
반응형

 

출처 : 픽사베이

 

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

  • 데이터베이스 모델링이란 데이터의 의미를 파악하고 데이터와 관여하는 업무 프로세스를 개념적으로 정의하고 분석하는 작업이다.
  • 데이터베이스 모델링 과정은 데이터에 초점을 맞추어 개별적 데이터의 특징을 분리하는 개념적 데이터 모델링이 이뤄지고
  • 이후 특정 상용 DBMS에 맞추어 데이터를 표현하는 논리적 데이터 모델링을 거친다.
  • 그다음 데이터베이스와 관련되는 프로그램이 개발된다.
  • 즉 개념적 데이터 모델링 → 논리적 데이터 모델링 → DBMS 관련 프로그램 개발
  • 데이터 모델 : 의미, 데이터 타입, 연산 등을 명시하기 위해 사용할 수 있는 개념들의 집합
  • 데이터 모델링 : 실세계의 일부분을 DBMS가 지원하는 데이터 모델의 형태로 나타내는 과정

사용자 요구사항 분석 단계

  • 사용자 요구사항 분석
    • 실제 데이터베이스 애플리케이션을 사용할 실무자와 문서를 교환하거나 인터뷰를 통해 데이터에 대한 상세한 요구사항을 수집하고 결정한다.
    • 이 단계에서는 데이터를 활용하는 시스템의 목표를 수립하고 그 목표를 달성하기 위한 여러 단계의 문서화 작업이 동반된다. → 명세서(specification)
      • 명세서는 업무 및 업무 간의 데이터 흐름을 가능한 한 상세하고 내용적으로 완벽하게 기술하는 것이 목표이다.
  • 요구사항 분석 단계
    • 요구사항 도출 단계 : 데이터베이스를 구축하기 위한 목표, 범위를 기준으로 조사범위를 결정한다. 다양한 자료를 수집하고 분석하거나 업무 관계자와 인터뷰를 통하여 요구사항 명세서를 도출한다.
    • 요구사항 분석 단계 : 도출된 요구사항이 명확한지, 완전한지, 모호하지 않은지를 판단. 만약 불완전한 경우 이전 단계로 돌아가 다시 조사하여 요구사항을 도출한다. 도출된 요구사항들을 기능별로 세분화하고 서로 중복되거나 유사한 사항이 있다면 하나로 통합하는 등 기능별로 요구를 상세화 한 요구사항 정의서를 작성한다.
    • 요구사항 기록 단계 : 분석한 요구사항 목록을 정리하여 문서화 작업 후 관리자의 승인을 받고 프로젝트가 종료될 때까지 각 요구사항의 반영 여부를 지속적으로 확인 및 관리한다.

데이터 모델링 단계

  • 데이터 모델링 : 데이터에 대한 요구사항을 정의하고 분석하여 추상화하는 과정
  • 시스템의 대상이 되는 업무를 분석하여 데이터베이스 시스템을 구축하기 위해 요구되는 업무의 내용을 적절한 표기법으로 표현하여 모델링을 수행한다.
  • 표현 대상
    • 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지, 데이터 간의 관계는 어떠한지
    • 프로세스 관점 : 업무를 통해 어떤 일(연산)을 처리하는지, 무엇을 해야 하는지를 표현
    • 데이터-프로세스 상관 관점 : 업무에서 일을 처리하는 방법에 따라 어떤 데이터가 어떻게 영향을 받는지
  • 사용자 요구사항에 대한 명세서는 데이터 흐름도, 순서 다이어그램, 시나리오 등 다양한 형태로 기술되고 정리된다.
  • 데이터베이스 모델링은 개념적 데이터 모델링, 논리적 데이터 모델링, 물리적 데이터 모델링의 세 단계를 거쳐 진행된다.

데이터베이스 모델링 과정 요약도

개념적 데이터 모델링

  • 실제 DBMS와는 무관한 단계이다.
  • 사용자 요구사항을 바탕으로 프로그램 개발자와 의사소통을 할 때 요구사항이 잘못 해석되는 오류를 피하기 위해 공통된 표기법을 사용한 추상화(abstraction) 기법이 사용된다.
  • 추상화 : 실세계의 데이터들을 개념적으로 일반화시킨 데이터 타입, 속성, 관계, 제약조건들을 이끌어 내는 과정
  • 대표적으로 ER(개체-관계) 모델이 사용된다.

논리적 데이터 모델링

  • 개념적 데이터 모델을 특정 상용 DBMS의 데이터베이스로 작성하기 위해서 DBMS에 맞는 구현 데이터 모델인 스키마(schema)로 변환하는 작업
  • 데이터의 구조와 데이터 간 관계가 목표 DBMS의 데이터 표현 방법에 맞게 변환
  • 구현 데이터 모델은 관계형 모델, 객체지향형 모델, 객체-관계형 모델 등이 있다.
  • 최근에는 NoSQL에서 사용하는 Key/Value 모델, Document 모델 등이 있음
  • 일반적으로 관계형 모델을 사용
  • 이 단계의 최종적으로 목표 DBMS의 데이터 정의 언어(DDL)로 기술된 논리 스키마 생성

물리적 데이터 모델링

  • 데이터베이스 파일의 내부 저장구조, 파일 구성, 인덱스, 접근 경로 등을 결정 → DBMS의 전체적 성능에 영향을 미침
  • DBMS 및 하드웨어의 특징을 고려하여 처리능력을 향상시키고 요구사항을 최대한 만족시킬 수 있는 접근 방법을 선택

  • 위의 단계들을 끝내면 최종적으로 내부 스키마가 완성된다.
반응형

사용자 요구사항 분석 과정

  • DB 구조가 점차 복잡해지고, 수명 주기가 단축되고, DB의 효율적 운용에 초점을 두어 데이터에 대한 충분한 사전 분석이 필요하다.
  • 사용자 요구사항 분석 과적은 도출, 분석, 기록 단계로 수행이 되며 국제 표준화는 IEEE-std-830이다.
  • 제안 요청서(RFP : Request for Proposal) : 데이터베이스의 시스템 설계, 개발, 도입 과정은 사업의 목표, 사용자의 요구 기능, 관리하는 데이터의 보안 수준 등 시스템의 기능과 성능에 대한 다양한 요구사항들을 기술
  • 사용자의 요구 명세서가 없으면 결과물의 완성도 저하 및 신뢰도가 추락하고 개발 후 발생하는 에러 수정에 추가 비용 지출이 생긴다.
  • 요구사항 분석 마지막에는 최종적으로 분석한 요구사항 목록을 정리하여 문서화 작업을 한 후 관리자 승인을 받고 프로젝트가 종료될 때까지 반영 여부를 지속적으로 확인 및 관리한다.
반응형

ER 모델

  • ER(Entity-Relationship) 모델 또는 개체-관계 모델은 1976년 첸(P. Chen) 박사가 제안
  • 전체적인 데이터베이스의 논리적인 구조를 표현하는 데이터 모델링 도구
  • 실세계의 속성들로 이루어진 개체(Entity) 집합과 이들 사이의 관계(Relationship)를 정형화시킨 모델
  • 대다수의 데이터베이스 설계 도구가 ER 모델을 지원한다.
  • ER 모델은 크게 개체 집합, 관계 집합, 그리고 속성으로 구성된다.
  • 데이터 구조와 단계를 ER 다이어그램(ERD)으로 표현한다.

개체 집합

  • 개체 : ER 모델의 가장 기본적인 요소, 실세계에 존재하는 다른 모든 개체와 구별되는 유•무형의 대상을 표현
    • ex) 학생이라는 개체의 학생 번호, 성별, 나이, 이름 등의 속성이 존재한다. 이 속성들은 여러 학생 중 특정한 학생을 유일하게 구별하는 속성이다.
  • 개체 집합 : 개체들의 모임, 같은 속성을 공유하는 개체들로 구성된다.
  • 개체는 개체 집합의 각 구성원들이 가지는 기술적 특성인 속성(attribute)들의 집합으로 표현된다.
  • 속성 : 개체 집합에 속한 개체들이 공통적으로 가지는 특성
  • 각 개체는 각 속성에 대한 값(value)을 갖는다.

  • ER 표기법은 현재 대규모 데이터베이스 모델링에는 높은 복잡성으로 업무 현상에서는 잘 사용되지 않고 대신 UML(Unofied Modeling Language, 통합 모델링 언어) 표기법을 사용한다.
  • UML 형식에서는 모든 개체를 고유하게 구분하는 키(Key)가 존재하며, 속성에는 속성이 가질 수 있는 모든 가능한 값들의 범위를 의미하는 도메인(domain)이 존재한다.

관계 집합

  • 여러 개체들은 그들 사이에 연관성을 가지며 이를 ER 모델에서는 관계라고 표현한다.
  • 개체를 연결 시키는 특정 관계를 관계 인스턴스라 한다.
  • 관계는 실세계를 표현하는 가장 중요한 추상적 개념이다.
  • 관계 집합 : 같은 유형의 관계 인스턴스들의 집합. 2개 이상의 개체 집합 간의 수학적인 연결 관계를 나타낸다.
    한 개체 집합이 다른 개체 집합과 연관성을 가지는 것을 관계 집합에 참가한다고 표현한다.
  • 차수(degree) : 관계 집합에 참여하는 개체 집합의 수
  • 관계 집합의 차수가 2일 경우 이항관계 집합이라 정의한다.
  • 관계에 참가하는 개체의 기능을 개체의 역할(role)이라 한다. 이러한 역할은 묵시적으로 정해진다.
  • 동일한 개체 집합이 재귀적으로 서로 다른 역할로 참가하여 생성되는 재귀적 관계 집합의 경우 역할을 명시해 주어야 한다.
  • 재귀적 관계 집합 : 어떤 개체 집합이 자기 자신과 관계를 형성하는 관계 집합을 말한다.

속성

  • 속성 : 개체를 구체적으로 설명하는 특성. 속성은 속성에 포함될 수 있는 값의 특성에 따라 단순 속성과 복합 속성, 단일값 속성과 다중값 속성, 유도 속성과 저장 속성 등의 유형으로 분류된다.

단순 속성과 복합 속성

  • 단순 속성 : 더 이상 작은 구성요소로 나눌 수 없는 속성
    • ex) 성별, 나이 등
  • 복합 속성 : 더 작은 의미단위로 나누어질 수 있는 속성
    • ex) 생일 : 년+월+일 조합
  • 데이터 모델링 과정에서 작은 구성단위가 빈번하게 사용될 경우 복합 속성을 모델링상에 중복하여 포함시키도 한다.
  • 복합 속성의 경우 들여 쓰기 형태로 표현한다.
    • 생일
         년
         월
         일

단일값 속성과 다중값 속성

  • 단일값 속성 : 한 개체가 특정 속성에 단 하나의 값을 가질 경우
    • ex) 한 학생의 경우 고유한 하나의 학생 번호를 가짐
  • 다중값 속성 : 속성값으로 여러 개의 값을 가질 경우
    • ex) 전화번호는 휴대폰 번호, 집전화번호, 회사 전화번호 등이 존재
  • 다중값 속성의 경우 집합 기호 '{ }'를 사용하여 표현 ex){전화번호}

유도 속성과 저장 속성

  • 유도 속성 : 다른 속성 값으로부터 유도되어 결정되는 속성 값
    • ex) 나이는 생일로부터 연산 가능한 정보이다.
  • 저장 속성 : 실제 값을 저장해야만 의미가 유지되는 속성
  • 유도 속성은 '( )'를 이용해 표현한다. ex) 나이( )

제약조건

  • 관계 집합은 한 개체 집합에서 다른 개체 집합으로 개체 간 대응성, 곧 사상을 의미
  • ER 모델링은 관계 집합에 대한 상세 표현을 위해 데이터베이스가 준수해야 되는 제약조건을 부가할 수 있다.
  • 대표적 제약조건 : 사상수, 참가 제약조건, 키 속성

사상수

  • 관계 집합에 참가한 개체 집합들에 대해 각각의 개체가 얼마만큼의 관계를 맺을 수 있는지 명시한다.
  • 일대일(1:1) 관계 : 개체 집합 A와 개체 집합 B가 서로 일대일 대응 관계.
    화살표가 있는 실선이 일(1)을 의미한다.

  • 일대다(1:N) 관계 : 개체 집합 A의 개체 1개와 개체 집합 B의 개체 여러 개가 서로 대응 관계.
    일(1) 쪽은 화살표가 있는 실선, 다(N) 쪽은 화살표가 없는 실선으로 표시

  • 다대일(N:1) 관계 : 개체 집합 A의 개체 여러 개와 개체 집합 B의 개체 1개가 서로 대응 관계.
  • 다대다(N:N) 관계 : 개체 집합 A의 개체 여러 개와 개체 집합 Y의 개체 여러 개가 서로 대응 관계.
    두 개체 집합을 모두 화살표가 없는 실선으로 표현

참가 제약조건

  • 관계에 참여하는 개체 집합의 범위를 나타낸다.
  • 전체적 참가 :  개체 집합의 모든 개체가 관계에 참가, 이중 실선으로 표현
  • 부분적 참가 : 개체 집합의 일부만 참가, 실선으로 표현

키 속성

  • 키 : 개체 집합의 각 개체마다 서로 다른 값을 가지는 속성의 집합
  • 어떤 개체의 키 값은 각각의 개체들을 서로 구별하는 데 사용
  • 관계 집합의 특정한 관계를 찾는 데에도 사용
  • ER 모델에서는 속성의 이름에 밑줄로 표현

반응형

ER 모델의 기호

  • ER 모델로 표현된 데이터베이스 전체의 논리적인 구조는 ER 다이어그램(ERD)이라는 도식으로 표현
  • 이분 직사각형 : 개체 집합을 표현, 윗부분은 개체 집합의 이름, 아랫부분은 개체 집합을 구성하는 속성들의 이름. 기본키는 밑줄로 표현
  • 이중 이분 직사각형 : 약한 개채 집합
  • 다이아몬드 : 관계 집합을 나타냄
  • 단일 직사각형 : 관계 집합의 속성들을 나타냄
  • 실선 : 개체 집합과 관계 집합 연결. 또한 부분 참여를 나타냄
  • 점선 : 관계 집합의 속성들을 관계 집합에 연결
  • 이중선 : 관계 집합 내에 개체의 전체 참여를 나타냄
  • 이중 다이아몬드 : 약한 관계 집합을 나타냄
  • 관계 집합의 속성 : 두 개체의 집합 관계에서 생성되는 값을 저장하는 속성
  • 재귀적 관계 집합 : 한 개체 집합과 관계 집합 사이에 두 개의 실선으로 표현, 역할 기술

  • 약한 개체 집합은 개체의 존재 유무가 관계를 맺고 있는 개체의 존재에 종속되는 개체 집합
    • ex) 학생과 학생 계좌의 경우 학생이 자퇴나 퇴학하면 학생 계좌도 없어진다.
    • 일대다 관계 사상수를 가지며, 이를 통해 강한 개체 집합과 연결되어야 함. 약한 개체 집합의 개체를 구별하는 키는 강한 개체 집합의 키와 결합하여 구성하며 점선으로 밑줄을 삽입
    • 약한 개체 집합과 연결된 관계 집합은 이중선으로 표기

반응형
저작자표시 비영리 변경금지 (새창열림)
'방통대 컴퓨터과학과/3학년1학기' 카테고리의 다른 글
  • [C언어] 자료형과 선행처리기
  • [JAVA] JAVA 기본 문법
  • [운영체제] 프로세스 개요
  • [Java] Java와 객체지향 프로그래밍
데부한
데부한
어차피 할 거면 긍정적으로 하고 싶은 개발자
    반응형
  • 데부한
    동동이개발바닥
    데부한
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • 방통대 컴퓨터과학과 (27)
        • 잡담 (9)
        • 3학년1학기 (17)
      • 프로젝트 및 컨퍼런스 회고 (1)
        • 프로젝트 (4)
        • 한이음 프로젝트 (0)
        • 회고 (3)
      • 공부 (165)
        • Spring (37)
        • JPA (71)
        • 인프런 워밍업 클럽_BE (10)
        • Java (6)
        • React.js (27)
        • 넥사크로 (11)
        • 기타 (3)
      • 알고리즘 (85)
        • 알고리즘 유형 (10)
        • 알고리즘 풀이 (57)
        • SQL 풀이 (18)
      • 에러 해결 (13)
      • 잡담 (7)
        • 국비교육 (2)
        • 구매후기 (5)
        • 진짜 잡담 (0)
  • 블로그 메뉴

    • Github
    • Linkedin
    • 홈
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    RESTful
    알고리즘
    기출문제
    방통대
    토비의스프링부트
    인프런
    oracle
    프론트엔드
    에러해결
    JPA
    SQL
    백준
    운영체제
    전자정부프레임워크
    토이프로젝트
    SpringBoot를 이용한 RESTful Web Service 개발
    egov
    Java
    프로그래머스
    자바스크립트
    IT
    QueryDSL
    넥사크로
    스프링부트
    개발자
    Spring
    react
    MSA
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
데부한
데이터베이스 모델링
상단으로

티스토리툴바