SQLP/SQLD 1과목 : 데이터 모델링의 이해

jinsung·2025년 10월 23일

SQL

목록 보기
2/46

📘 데이터 모델링의 이해

SQL이란?

SQL이란 Structured Query Language로 데이터베이스를 직접 액세스 할 수 있는 언어를 말한다

모델링 이란?

복잡한 현실세계를 추상화, 단순화, 명확화해 표현하는 것을 말한다

모델링의 3대 특징

  • 추상화 : 현실세계를 일정한 형식에 맞춰 표현
  • 단순화 : 현실세계를 약속한 규약에 의해 언어로 쉽게 표현
  • 명확화 : 누구나 이해하기 쉽게 표현

모델링의 3대 관점

  • 데이터 관점 : 업무가 어떤 데이터와 관련이 있고, 데이터간의 관계는 무엇인지에 대해 모델링하는 방법 (Data, What)
  • 프로세스 관점 : 실제하고 있는 업무가 무엇인지, 무엇을 해야하는지 모델링하는 방법 (Process, How)
  • 데이터와 프로세스의 상관관계 : 업무가 처리하느 일의 방법에 따라 데이터는 어떻게 영향을 받고 있는지 모델링하는 방법 (Data vs Process) - interaction

데이터 모델링 이란?

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법
  • 현실세계의 데이터에 대해 약속된 표기법에 의해 표현하는 과정
  • 데이터 베이스를 구축하기 위한 분석·설계의 과정

데이터 모델링이 제공하는 기능

  • 시스템을 현재 또는 원하는 모습으로 가시화
  • 시스템의 구조와 행동을 명세화
  • 시스템을 구축하는 구조화된 틀을 제공
  • 시스템 구축 과정에서 결정한 것을 문서화

데이터 모델링의 중요성

  • 파급효과 : Leverage
  • 복잡한 정보 요구 사항의 간결한 표현 : Conciseness
  • 데이터 품질 : Data Quality

데이터 모델링의 유의점

  • 중복
  • 비유연성 : 데이터 정의를 데이터의 사용 프로세스와 분리
  • 비일관성 : 데이터와 데이터간 상호 연관 관계에 대한 명확한 정의

데이터 모델링 3단계

1. 개념적 데이터 모델링 (ERD 생성)

추상화 수준이 높고 업무 중심적이고 포괄적인 수준의 모델링 진행한다
전사적인 데이터 모델링으로, EA 수집 시 많이 사용한다 -> 더 상위 수준인 개괄적인 데이터 모델링을 먼저 수행한다

2. 논리적 데이터 모델링 (식별자 확정, 정규화, M:M관계 해소, 참조 무결성 규칙 정의)

시스템을 구축하고자 하는 업무에 대해 key, 속성, 관계들을 정확하게 표현한다
재사용성이 높다

3. 물리적 데이터 모델링

실제로 데이터 베이스에 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려해 설계한다

데이터 모델링 생명주기

데이터 독립성의 필요성

  • 유지보수 비용 감소
  • 데이터 복잡도 감소
  • 데이터 중복성 감소
  • 요구사항 비용 x

미국 표준협회(ANSI)의 3단계

1. 구조

  • 외부 스키마 : 개개인 사용자 단계로 개인적 DB스키마 (사용자 관점)
  • 개념 스키마 : 개념 단계 하나의 개념적 스키마로 구성, 모든 사용자 관점을 통합한 전체 DB기술 (통합 관점)
  • 내부 스키마 : 내부 단계와 내부 스키마로 구성, DB가 물리적으로 저장된 형식 (물리적 저장 구조)

2. 독립성

  • 논리적 독립성
    • 개념 스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원
    • 논리적 구조가 변경되어도 AP에는 영향 없음 -> 사용자 특성에 맞게 변경가능
  • 물리적 독립성
    • 내부 스키마가 변경되어도 외부·개념 스키마에 영향을 미치지 않도록 지원
    • 저장 장치의 구조 변경은 응용 프로그램과 개념 스키마에 영향 없음
    • 물리적 구조 영향없이 개념 구조 변경 가능
    • 개념 구조 영향없이 물리적 구조 변경 가능

3. 사상(Mapping)

  • 외부·개념적 사상(논리적 사상)
    • 외부적 뷰와 개념적 뷰의 상호 관련성 정의
  • 개념·내부적 사상(물리적 사상)
    • 개념적 뷰와 저장된 데이터 베이스의 상호 관련성 정의

ERD(Entity-Relationship-Diagram)

  • 대표적으로 IE 표기법 / Barker 표기법
  • 각 업무 분석에서 도출된 엔터티와 엔터티간의 관계를 이해하기 쉽게 도식화된 다이어그램으로 표시
  • 작업 순서
    1. 엔터티를 그린다
    • 엔터티와 엔터티의 관계를 나타내므로 두 개를 이용해 작성한다
    • PK와 FK 규칙에 따라 기술한다
    • 엔터티는 사각형으로 나타낸다
    1. 엔터티 배치
    2. ERD 관계의 연결
    • 중복 x
    • Cycle x
    • PK로 상속되는 식별자 관계 설정
    1. ERD 관계명 표시
    2. ERD 관계 관계차수와 관계선택성 표시
    • 관계의 참여도 기술
    • 관계의 필수여부 기술

좋은 데이터 모델

  • 완전성
  • 중복 배제
  • 업무 규칙
  • 데이터 재사용
  • 의사소통
  • 통합성

🐶 엔터티(Entity)

  • 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것 (테이블)
  • 특징
    • 업무에서 필요로 하는 정보
    • 식별 가능
    • 인스턴스의 집합 (인스턴스 두 개 이상)
    • 업무 프로세스에 의해 이용돼야함
    • 속성 포함
    • 관계의 존재 - 다른 엔터티와 최소 한 개 이상 관계를 맺어야함
  • 분류
    • 유무형
      • 유형 엔터티 : 물리적인 형태가 있고, 지속적으로 활용되는 엔터티
      • 개념 엔터티 : 물리적인 형태가 없고, 관리해야할 개념적 정보로 구분되는 엔터티
      • 사건 엔터티 : 업무를 수행함에 따라 발생하는 엔터티, 각종 통계자료에 사용되고 비교적 발생량이 많음
    • 발생 시점
      • 기본 엔터티 : 그 업무에 원래 존재하는 정보를 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성가능하고 자신은 타 엔터티의 부모 역할
        다른 엔터티로부터 주 식별자를 상속받기 불가, 자신의 고유한 주 식별자를 가짐
      • 중심 엔터티 : 기본 엔터티로부터 발생되고 그 업무에서 중심적인 역할, 데이터의 양이 많이 발생하고 다른 엔터티와 관계를 통해 행위 엔터티를 생성
      • 행위 엔터티 : 두 개 이상의 부모 엔터티로부터 발생하고 내용이 자주 바뀌고 데이터양 증가, 분석초기에는 x, 상세 설계나 프로세스와 상관 모델링을 진행하면서 도출
  • 명명
    • 현업 업무에서 사용하는 용어 사용
    • 가능한 약어 사용 x
    • 단수 명사 사용
    • 모든 엔터티에서 유일하게 이름 부여
    • 엔터티 생성 의미대로 이름 부여

🐸 속성 (Attribute)

  • 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위이고 엔터티를 설명하고 인스턴스의 구성요소가 됨
  • 특징
    • 해당 업무에서 필요하고 관리하고자 하는 정보
    • 정규화 이론에 근거하여 정해진 주 식별자에 함수적 종속성을 가짐
    • 하나의 속성은 하나의 값만을 가진다. 하나의 속성에 여러 개의 값이 있는 다중값일 경우 별도의 엔터티를 이용해 분리
  • 분류
    • 특성
      • 기본 속성 : 업무로부터 추출한 모든 속성
      • 설계 속성 : 업무상 필요한 데이터 이외에 데이터 모델링을 위해, 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성
      • 파생 속성 : 다른 속성에 영향을 받아 발생하는 속성, 보통 계산된 값들
    • 엔터티 구성방식
      • PK 속성 : 엔터티를 식별할 수 있는 속성
      • FK 속성 : 다른 엔터티와의 관계에서 포함된 속성
      • 일반 속성 : 엔터티에 포함, PK/FK에 포함 x
    • 세부의미 쪼개기
      • 복합 속성 : 여러 세부속성들로 구성
      • 단순 속성 : 더 이상 다른 속성들로 구성될 수 없는 단순한 속성
  • 명명
    • 해당 업무에서 사용하는 이름 부여
    • 서술식 속성명 사용 x
    • 약어 사용은 자제
    • 전체 데이터 모델에서 유일성 확보>

단일 값 : 속성 하나에 한 개의 값을 가짐
다중 값 : 여러개의 값을 가짐
단일 값 속성 : 반드시 하나의 값만 존재 / ex) 주민등록번호
다중 값 속성 : 1차 정규화나 별도의 엔터티를 만들어 관계로 연결

엔터티, 인스턴스, 속성, 속성값의 관계

  1. 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야한다
  2. 한 개의 엔터티는 두 개 이상의 속성을 갖는다
  3. 한 개의 속성은 한 개의 속성값을 갖는다

🐵 관계 (Relationship)

  • 인스턴스 사이의 논리적인 연관성으로서 존재 또는 행위로서 서로에게 연관성이 부여된 상태
  • 관계의 패어링
    • 인스턴스 각각은 자신의 연관성을 가지고 있을 수 있음
      -> 이것을 집합해 관계 도출
  • 분류
    • 존재에 의한 관계
    • 행위에 의한 관계
  • 표기법
    • 관계명 : 관계의 이름
      -> 현재형으로 표기, 애매한 동사 x
    • 관계차수 : 두 개의 엔터티간 관계에서 참여자의 수 (1:M, M:M, 1:1)
    • 관계선택사양
      • 필수 관계 : 반드시 포함
      • 선택 관계 : ~가 될 수도 있다
  • 체크 사항
    • 두 개의 엔터티 사이에 관심 있는 연관 규칙이 존재하는가?
    • 두 개의 엔터티 사이에 정보의 조합이 발생하는가?
    • 업무기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
    • 업무기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는가?
  • 관계 읽기
    • 기준(Source) 엔터티를 한 개 또는 각각으로 읽는다
    • 대상(Target) 엔터티의 참여관계도, 즉 개수(하나, 하나 이상)을 읽는다
    • 관계선택사양과 관계명을 읽는다

🌈 식별자 (Identifier)

  • 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자
    여러개의 속성 중 엔터티를 대표 할 수 있는 속성
  • 주 식별자의 특징
    • 유일성 : 주 식별자에 의해 엔터티 내에 모든 인스턴스를 유일하게 구분
    • 최소성 : 주 식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다
    • 불변성 : 주 식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야한다
    • 존재성 : 주 식별자가 지정되면 반드시 데이터 값이 존재 (Not Null)
  • 분류
    • 대표성 여부
      • 주 식별자 : 대표성을 가지는 식별자
      • 보조 식별자 : 대표성을 가지지 않는 식별자
    • 스스로 생성
      • 내부 식별자 : 자신의 엔터티 내부 속성만으로 식별이 가능한 식별자
      • 외부 식별자 : 다른 엔터티(부모 엔터티)의 식별자를 포함해야만 유일하게 식별되는 식별자
    • 속성 수
      • 단일 식별자 : 속성 수가 하나
      • 복합 식별자 : 속성 수가 둘 이상
    • 대체 여부
      • 본질 식별자 : 업무에 의해 만들어진 식별자
      • 인조 식별자 : 인위적으로 만들어진 식별자
  • 도출 기준
    • 해당 업무에서 자주 이용되는 속성
    • 명칭, 내역등과 같이 이름으로 기술되는 것은 x
    • 복합으로 주 식별자를 구성 할 경우 너무 많이 속성을 포함하지 않는다

식별자 관계와 비식별자 관계

  • 식별자 관계 : 자식 엔터티의 주 식별자로 부모의 주 식별자가 상속되는 경우 (실선)
  • 비식별자 관계 : 부모 엔터티로부터 속성을 상속받았지만 자식 엔터티의 주 식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우 (점선)
    1. 부모 없는 자식이 생성 될 수 있는 경우
    2. 엔터티 별로 데이터의 생명주기를 다르게 관리하는 경우
    3. 여러 개의 엔터티가 하나의 엔터티로 통합되었는데, 각각의 엔터티가 별도의 관계를 가질 경우
    4. 자식 엔터티에서 별도의 주 식별자를 생성하는 것이 더 유리하다고 판단 될 경우

식별자 관계와 비 식별자 관계의 결정

엔터티 사이 관계유형은 업무 특징, 자식 엔터티의 주 식별자 구성, SQL 전략에 의해 구분

식별자 관계로만 설정 시 문제점

PK속성 수가 데이터 흐름이 길어질수록 증가할 수 밖에 없는 구조
-> 개발 복잡성, 오류 유발의 원인

비식별자 관계로만 설정 시 문제점

불 필요한 조인이 다량 유발 -> SQL 구문이 길어짐, 성능 저하

  • 해결법 : 기본적으로 식별자 관계로 모든 관계 연결
    -> 아래 조건이 해당되면 비 식별자 관계로 조정
    1. 관계의 강약 분석 시 약한 관계
    2. 자식 테이블 독립 PK 필요
    3. SQL 복잡도 증가, 개발 생산성 증가 -> PK 속성 단순화

=> 업무의 특징에 따라 식별자 관계와 비식별자 관계를 적절히 선택해 데이터 모델의 균형감을 갖춰야함

정규화 <-> 반정규화(비정규화)

  • 데이터 모델링에서 가장 기초적이지만 필수적으로 이뤄져야 하는 작업
  • 함수 종속성 : 데이터들이 어떤 기준값에 의해 종속되는 현상
    • 기준 : 결정자
    • 종속되는 자 : 종속자
  • 정규형
    • 제 1정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다
      => 도메인 원자성
    • 제 2정규형 : 엔터티의 일반 속성은 주 식별자 전체에 종속적이어야 한다
      => 부분적 함수 종속의 배제
    • 제 3정규형 : 엔터티의 일반 속성 간에는 서로 종속적이지 않다
      => 이행적 함수 종속성 배제
    • BCNF 정규형, 제 4정규형, 제 5정규형등
  • 반정규화는 꼭 필요할 때만 적용
    => 데이터 불일치로 인한 정합성 문제뿐아니라, 불필요한 트랜잭션으로 인한 성능 문제도 많음

관계란 식별자를 상속하고, 상속된 속성을 매핑 키로 활용하여 데이터를 결합해 볼 수 있다는 의미이다 => SQL에서는 조인을 뜻한다

트랜잭션이란 데이터베이스의 논리적 연산 단위를 말한다

NULL 속성의 이해 : 아직 정의되지 않은 미지의 값 (공백이 아님, 0이 아님)

  • NULL 값의 연산은 언제나 NULL이다
  • 집계함수는 NULL 값을 제외하고 처리한다

외부 식별자 사용의 문제점

  1. 중복 데이터로 인한 품질 문제 -> 최대한 본질 식별자 지향
  2. 불필요한 인덱스 생성
profile
Data Engineer

0개의 댓글