[SQLD] 데이터 모델링의 이해(1)

Dahui Kim·2023년 3월 10일
0

데이터베이스

목록 보기
1/5

데이터 모델의 이해

모델링

모델링이란 복잡한 현실 세계를 모두에게 공통적으로 이해되도록 수식이나 그림 등(다이어그램화)의 약속된 방식으로 단순화(추상화)하여 체계적으로 표현하는 작업 또는 방법을 뜻함. 정보시스템 구축에서는 계획/분석/설계 단계에서 업무를 분석하고 설계하는데 이용하거나 구축/운영 단계에서 변경과 관리를 목적으로 모델링을 이용한다.

  • 모델링 특징
    • 추상화 : 현실 세계를 일정한 양식에 맞춰 표기함
    • 단순화 : 복잡한 현실 세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현
    • 명확화 : 이해하기 쉽게 모호한 부분을 제거하여 정확하게 기술
  • 모델링 관점
    • 데이터 관점 : 업무와 데이터나 데이터 사이의 관계(Data, What)
    • 프로세스 관점 : 업무가 실제 하는 일이나 무엇을 해야하는지(Process, How)
    • 상관 관점 : 업무 처리방식에 따라 데이터가 받는 영향(Intraction)

데이터 모델링

데이터 모델링은 통합관점 뷰를 가지는 개념 스키마를 만들어가는 과정이다.

데이터 모델링이란 정보시스템을 구축하기 위한 데이터 관점의 업무 분석기법으로 현실세계 데이터를 약속된 표기법에 의해 표현하는 데이터베이스 구축을 위한 분석/설계 과정을 뜻함.

  • 목적 : 정보에 대한 표기법을 통일하여 업무 내용 분석의 정확도를 증대시키고 데이터 모델을 기초로 DB를 생성하는 것을 목적으로 함
  • 기능
    • 가시화
    • 명세화 : 시스템 구조와 행동
    • 구조화된 틀 제공
    • 문서화
    • 다양한 관점 제공 : 다양한 영역 집중을 위해 다른 영역의 세부사항을 숨김
    • 구체화 : 특정 목표에 따라 구체화된 상세 수준의 표현방법을 제공
  • 중요성
    • 파급효과(Leverage)
    • 간결한 표현(Conciseness)
    • 데이터 품질 유지(Data Quality) : 유일성, 유연성(데이터 정의와 사용 프로세스 분리), 일관성(데이터 상화 연관관계 명확히 정의)
  • 진행 3단계 [추상적 ⇒ 구체적]
    1. 개념 : 엔터티와 속성을 도출하고 ERD 작성, 업무 중심적, 포괄적 수준의 모델링
    2. 논리 : 식별자(key), 속성, 관계 등을 정의하고 정규화를 수행 → 데이터 모델(데이터 모델링 완료 상태)의 독립성과 재 사용성 확보
    3. 물리 : DB를 구축, 성능 및 보안 등 물리적 성격을 고려한다.
  • 프로젝트 생명주기(Life Cycle)
    • 계획 / 분석 [개념적 모델링, 현실에선 보통 생략됨] > 분석 [논리적 모델링] > 설계 [물리적 모델링] > 개발 > 테스트 > 전환 / 이행
    • Waterfall 기반 : 분석과 설계 단계로 구분되어 명확하게 정의
    • 정보공학/구조적 방법론 : 분석(업무 중심의 논리적 모델링), 설계(하드웨어 및 성능 고려한 물리적 모델링)
    • 나선형 모델(RUP, 마르미) : 업무 크기에 따라 분석, 설계 단계 양쪽에서 수행
  • 데이터 모델의 3요소 : 업무가 관여하는 어떤 것(엔터티), 그것이 가지는 성격(속성), 그것들 간의 관계(관계)
  • 좋은 데이터

데이터 독립성

  • 효과 : 각 뷰의 독립성 유지하고 계층별 뷰에 영향 주지 않고 번경 가능, 단계별 스키마에 따라 DDL과 DML의 다름을 제공
  • 필요성: 데이터 중복성과 데이터 복잡도 증가로 인한 유지보수 비용 증가, 요구사항 대응 저하
  • DB 3단계 구조 : ANSI/SPARC 의 3단계 구성의 데이터 독립성 모델
    • 외부/개념/내부 : 각 단계가 서로 간섭하지 않는다.
    • 논리적 독립성 (외부-개념) : 외부 스키마가 개념 스키마의 변화에 영향을 미치지 않는다. 사용자 특성에 맞는 변경이 가능하며 통합 구조를 변경가능하다. 논리적 사상이 없다.
    • 물리적 독립성 (개념-내부) : 개념 스키마가 내부 스키마의 변화에 영향을 미치지 않는다. 물리적 구조와 개념 구조 상호간 영향 없이 서로 변경이 가능하다. 물리적 사상이 없다.

사상(Mapping) : 상호 독립적인 개념을 연결하는 다리. 논리적 사상-외부 화면 및 사용자 인터페이스 스키마 구조는 개념 스키마와 연결된다. 물리적 사상-개념 스키마 구조와 물리적 저장된 구조(테이블 스페이스)와 연결됨

  • 좋은 데이터 모델 요소 6가지
    • 완전성
    • 중복배제
    • 업무 규칙
    • 데이터 재사용
    • 의사소통
    • 통합성
  • ERD(Entity Relationship Diagram) : 엔터티는 사각형, 관계는 마름모, 속성은 타원형으로 표현, 현실의 데이터 모두 표현 가능
    • 엔터티 도출
    • 엔터티 배치
    • 엔터티 간 관계 설정
    • 관계명 기술
    • 관계차수 표현 : 1:1, 1:N, M:N
    • 관계선택사양 표현: 필수, 선택

엔터티

업무상 관리해야 하는 데이터 집합, 명사형, 인스턴스의 집합(관리 필요한 관심사, 저장이 되기 위한 어떤 것(Thing))

  • 특징
    • 업무에 필요한 정보
    • 유일한 식별자를 가짐
    • 2개 이상의 인스턴스 집합
    • 업무 프로세스에 의해 이용됨
    • 반드시 속성을 가짐(주식별자만 존재하고 일반속성이 없어도 적절하지 않다. 관계엔터티는 예외)
    • 관계를 가짐
  • 분류
    • 유무형 : 유형(물리적 형태가 있고 지속적으로 활용), 개념(물리적 형태가 없는 엔터티), 사건
    • 발생 시점 : 기본(독립적으로 생성되는 엔터티) → 중심 → 행위(2개 이상의 부모 엔터티로부터 발생, 비즈니스 프로세스를 실행하면서 생성되는 엔터티, 지속적으로 정보가 추가되고 변경되어 데이터 양이 가장 많음)
  • 명명 규칙 : 현업 업무에서 사용하는 언어, 단수 명사, 유일성 보장, 약어 지양, 명확성

속성

속성이란 엔터티가 가지는 최소 의미 단위를 뜻하며 인스턴스의 구성요소이다.

  • 인스턴스 - 속성 - 엔터티의 관계
    • 1개 엔터티는 2개 이상의 인스턴스 집합이어야 한다.
    • 1개의 인스턴스는 2개 이상의 속성을 가진다.
    • 1개의 속성은 1개의 속성값을 가진다.
  • 속성 표기법 : IE 표기법, Baker 표기법
  • 특징 : 업무에서 필요하고 관리하고자 하는 정보, 정규화 이론에 근간해 정해진 주식별자에 함수적으로 종속되어야한다. 하나의 속성은 한 개의 값만 가지면 다중 값일 경우 정규화가 필요하다.)
  • 분류
    • 특성에 따른 분류
      • 기본 속성 : 비즈니스 프로세스에서 도출되는 속성
      • 설계 속성 : 데이터 모델링 과정에서 업무 규칙화를 위해 발생하는 속성
      • 파생 속성 : 다른 속성에 의해 만들어지는 속성
    • 구성 방식에 따른 분류 : PK(기본키), FK(외래키), 일반 속성
    • 분해 가능 여부에 따른 분류
      • 단일 속성 : 하나의 의미
      • 복합 속성 : 여러 의미, 단일 속성으로 분해 가능
      • 단일값 속성 : 하나의 값
      • 다중값속성 : 여러 값, 엔터티로 분해 가능
  • 도메인 : 속성이 가질 수 있는 값의 범위. 데이터 타입/크기/제약사항을 지정한다.
  • 속성의 명명 : 해당 업무에서 사용하는 이름, 단수 명사, 약어 지양, 유일성 확보

관계

관계는 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 현태로서나 행위로서 서로에게 연관성이 부여된 상태를 뜻한다. 동사형

  • 정의
    • 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가
    • 두 개의 엔터티 사이에 정보의 조합이 발생되는가
    • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어있는가
    • 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는
  • 관계와 페어링 : 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(페어링) 이것의 집합을 논리적으로 표현한 것이 관계
  • 분류와 표기법
    • 관계명 : 엔터티가 관계에 참여하는 형태로 각 관계는 2개의 관계명 및 관점을 가진다.
    • 관계차수 : 1:1, 1:M, M:M (관계 엔터티 이용)
    • 관계선택사양 : 필수참여(Mandatory), 선택참여(Optional)
    • ERD 기준 : 표기 구분을 하지 않는다.
      • 존재에 의한 관계 : 엔터티 간의 상태
      • 행위에 의한 관계 : 엔터티 간에 발생하는 행위
    • UML 기준
      • 연관 관계 : 실선 표기
      • 의존 관계 : 점선 표기
    • 식별자에 따른 분류
      • 식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 주식별자로 사용. 약한 엔터티는 부모 엔터티에 종속되어 존재하며 강한 엔터티는 독립적으로 존재한다.
      • 비식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 일반 칼럼으로 참조해 사용, 약한 종속 관계 ⇒ 식별 관계만으로 연결되면 주식별자 수가 많아질 수 밖에 없어 관계 강약을 분석하고 자식 엔터티의 독립 pk의 필요성, SQL 복잡성과 개발 생산성을 고려할 필요가 있다.
    • 관계의 읽기
      • 각 / 기준엔터티 / 관계차수 / 관련 엔터티 / 필수 or 선택 / 관계명
        • 각각의 / 사원은 / 한 / 부서에 / 때때로 / 속한다.
        • 각 / 부서에는 / 여러 / 사원이 / 항상 / 소속된다.

식별자

식별자는 엔터티를 구분짓는 논리적인 이름으로 엔터티를 대표할 수 있는 속성을 뜻한다. 엔터티에는 반드시 하나의 유일한 식별자가 존재한다.

  • 특징
    • 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스르 유일하게 구분
    • 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
    • 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함
    • 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야한 (null X)
  • 분류
    • 대표성 여부에 따른 분류
      • 주식별자(대표성 만족) / 보조 식별자(유일성과 최소성만 만족, 참조 관계 연결에 사용 불가)
    • 스스로 생성 여부에 따른 분류
      • 내부 식별자(자연스럽게 존재하는 식별자) / 외부 식별자(다른 엔터티와의 관계를 통해 생성되는 식별자)
    • 속성의 수에 따른 분류
      • 단일 식별자(하나의 속성) / 복합 식별자(여러 속성)
    • 대체 여부에 따른 분류
      • 본질 식별자(대체될 수 없는 식별자) / 인조 식별자(인위적으로 만들어지는 대체가능한 식별자)
    • DB 키 종류
      • 후보키 : 유일성과 최소성을 만족하는 키
      • 기본키(Primary Key(PK)) : 엔터티를 대표하는 키, 후보키 중 선정됨
      • 슈퍼키 : 유일성만 만족하는 키
      • 대체키 : 기본키를 제외한 나머지 후보키
      • 외래키(Foreign Key(FK)) : 여러 테이블의 기본 키 필드, 참조 무결성을 확인하기 위해 사용됨
        • 참조 무결성 : 타 테이블과 연관된 데이터가, 입력/수정/삭제 시에도 데이터 간 정확한 참조관계를 유지시킴 ; 기본 키와 외래 키 간의 관계가 항상 정확하게 유지됨을 보장
  • 주식별자 도출 기준 : 업무에서 자주 이용되는 속성을 지정, 명칭/내역 등 이름으로 명명되는 것 지양(구분자가 존재하지 않을 경우 일련번호나 코드 등의 새로운 식별자 생성), 복합 식별자로 구성할 경우 너무 많은 속성 포함 지양(주식별자 개수가 많을 경우 새로운 인조식별자를 생성)
  • 식별자와 비식별자 관계
    • 식별자 관계
      • 부모의 주식별자는 자식의 주식별자로 상속
      • null을 허용하지 않음
      • 1:1 (부모 속성을 자식 엔터티가 모두 사용하고 주식별자로 사용)이나 1:M (부모 속성과 다른 부모 엔터티에서 받은 속성을 포함하거나 스스로 갖는 속성으로 주식별자를 구성) 관계
      • 강한 연결관계로 부모에 종속된다. 상속받은 주식별자는 타 엔터티 이전이 필요하다.
      • 문제 : 주식별자 속성이 지속적으로 증가할 경우 복잡성과 오류를 유발할 수 있다.
    • 비식별자 관계
      • 부모로부터 속성을 받아 일반속성으로 사용하는 약한 종속관계, 상속받은 속성을 타 엔터티에 차단해 부모쪽 관계 참여를 선택하는 관계
      • 사용 경우
        • 부모 없는 자식 생성이 가능한 경우
        • 엔터티별로 데이터 생명주기를 다르게 관리하는 경우
        • 여러개 엔터티가 하나로 통합되어 표현되고 각각이 별도의 관계를 갖는 경우
        • 자식 엔터티에서 별도의 주식별자 생성이 더 유리할 경우
      • 문제 : 속성이 자식에게 상속되지 않아 부모 엔터티가지 조인 현상이 발생하면 불필요한 조인이 발생하여 SQL 구문이 길어져 성능을 저하시킬 수 있다.
profile
긍정적인 생각, 적극적인 생활

0개의 댓글