본문 바로가기
SQLD

[SQLD 개념 요약] 데이터 모델링 이해

by 하부루 2024. 11. 9.

SQLD 시험을 준비하며, 공부한 내용을 요약정리 해보았습니다.

개인적으로 생각하는 시험에 자주 출제될 만한 부분들은 노란색으로 강조하였습니다!

 

정규화에 대한 내용은 해당 글을 참조 해주세요

 

[DB] 데이터베이스 정규화 / 반정규화의 개념

1. 정규화(Normalization) 란?정규화(Normaliztion): 이상 현상이 있는 테이블을 분해하여 이상 현상을 없애는 방법테이블을 분해하는 정규형 단계가 높아질수록 이상 현상이 줄어든다.정규화의 목적데

haburu23.tistory.com

 

트랜잭션에 대한 내용은 해당 글을 참조 해주세요

 

[DB] 트랜잭션(Transaction) 개념 및 동작원리

스프링 DB 1편 - 데이터 접근 핵심 원리 강의 | 김영한 - 인프런김영한 | 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조

haburu23.tistory.com


모델링의 개념

  • 비즈니스 프로세스 및 데이터 요구 사항을 추상적이고 구조화 된 형태로 표현하는 과정
  • 데이터베이스의 구조와 관계를 정의하고, 데이터의 저장, 조작, 관리를 명확하게 정의

모델링의 특징

  • 단순화
    • 핵심요소에 집중하고 불필요한 세부 사항을 제거
  • 추상화
    • 간략하게 대략적으로 표현을 의미
  • 명확화
    • 애매모호한 점을 최대한 제거하고 정확하게 현상을 기술하는 과정

데이터 모델링의 3가지 관점

  • 데이터 관점
    • 데이터가 어떻게 저장, 접근, 관리 되는지 정의하는 단계
  • 프로세스 관점
    • 데이터가 시스템 내에서 어떻게 흐르고 변환되는지를 확인
  • 데이터와 프로세스 관점
    • 특정 프로세스가 어떤 데이터를 사용하고, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의

데이터 모델링 유의점

  • 중복
    • 테이블에 같은 정보를 저장하지 않도록 설계
  • 비유연성
    • 업무 변화에도 잦은 모델변경이 되지 않도록 주의
  • 비일관성
    • 데이터간 상호연관 관계를 명확히 정의
    • 데이터 중복이 없더라도 비일관성은 발생할 수 있음.

데이터 모델링의 3단계

  • 대상(Entity) : 업무가 관리하고자 하는 대상
  • 속성(Attribute) : 대상들이 갖는 속성
  • 관계(Relationship) : 대상들의 관계

데이터 모델링 3가지 요소

  • 개념적 모델링
    • 추상화 수준이 가장 높음
    • 업무의 핵심 엔티티를 추출하는 단계
  • 논리적 모델링
    • 세부속성, 식별자 ,관계 등을 표현하는 단계
    • 데이터 정규화 수행
  • 물리적 모델링
    • 논리적 모델링을 거친 후 이를 직접 물리적으로 생성하는 과정
    • 가장 구체적인 데이터 모델링(추상화 수준은 가장 낮다)

스키마의 3단계 구조

  • 스키마 : 데이터베이스의 구조와 제약 조건등을 나열한 메타데이터 집합
  • 외부, 개념, 내부 스키마로 분리된다.
  • 외부 스키마
    • 사용자가 보는 관점에서 스키마를 정의
  • 개념 스키마
    • 데이터베이스의 전체 논리적 구조를 정의
    • 데이터베이스의 개체, 속성, 관계, 데이터 타입 등을 정의
  • 내부 스키마
    • 데이터가 물리적으로 어떻게 저장되는지 정의
    • 데이터의 저장 구조, 컬럼, 인덱스를 정의

[3단계 스키마의 독립성]

  • 논리적 독립성
    • 논리적 데이터 구조가 변경 되어도 개념 스키마에 영향을 주지않는 특성
  • 물리적 독립성
    • 물리적 구조가 변경 되어도 내부 스키마에 영향을 주지않는 특성

데이터 모델의 표기법

  • 엔티티와 엔티티 간의 관계를 시각적으로 표현한 다이어그램
  • 1976년 피터 첸이 만든 표기법

ERD 작성 절차(6단계)

  • 엔티티 도출 -> 엔티티 배치 ->  엔티티 관계 설정 -> 관계명 서술 -> 관계 참여도 기술 -> 관계 필수 여부 확인

엔티티의 개념

  • 독립적으로 식별 가능한 객체나 사물
  • 업무에서 분석해야 하는 대상들로 이루어진 집합
  • 인스턴스는 엔티티의 특정 속성 값들로 구성되며, 엔티티의 개념을 구체적으로 나타낸 것

[예시]

  • 엔티티: 학생
  • 속성: 학번, 이름, 학과 등
  • 식별자: 학번(고유한 학번으로 학생 식별)
  • 인스턴스: 특정 학생의 데이터
    • 학번: 20251311
    • 이름: 김나라
    • 학과: 컴퓨터 공학

엔티티의 특징

  • 유일한 식별자에 의해 식별 가능
    • 유일한 식별자는 그 엔티티 인스턴스의 고유 이름
  • 해당업무에 필요하고 관리하고자 하는 정보
    • 업무 시스템 구축에 필요한 정보여야 한다.
  • 인스턴스들의 집합
    • 2개 이상의 인스턴스 집합
  • 엔티티는 반드시 속성을 가진다
    • 각 엔티티는 2개 이상의 속성을 가짐
  • 엔티티는 업무 프로세스에 의해 이용
    • 사용되지 않는 고립 엔티티는 제거 필요
  • 다른 엔티티와 최소 1개 이상의 관계 성립
    • 관계가 없는 엔티티는 부적절한 엔티티

엔티티의 분류

[유형과 무형에 따른 분류]

  • 유형 엔티티
    • 물리적 형태가 있음
    • ex) 사원, 물품 등
  • 개념 엔티티
    • 물리적 형태가 없음
    • ex) 조직, 보험상품 등
  • 사건 엔티티
    • 업무를 수행함에 따라 발생하는 엔티티
    • ex) 주문, 청구, 미납 등

[발생 시점에 따른 분류]

  • 기본 엔티티
    • 업무에서 기본적으로 존재하는 정보
    • 독립적으로 생성되고 자신의 고유한 식별자를 가진다.
    • ex) 사원, 부서, 고객, 상품 등
  • 중심 엔티티
    • 기본 엔티티로 부터 발생되고 업무에서 중심적인 역할
    • ex) 계약, 사고, 주문, 청구 등
  • 행위 엔티티
    • 2개 이상의 부모 엔티티로 부터 발생
    • ex) 변경이력, 주문내역 등

엔티티 주의 사항

  • 현업에서 사용하는 용어 사용
  • 줄임말 사용 자제
  • 단수 명사 사용
  • 모든 엔티티에서 유일하게 이름 부여
  • 엔티티 생성 의미대로 이름 부여

엔티티와 인스턴스 표기법

  • 엔티티들의 관계를 선으로 표현
  • 속성을 IE 표기법, Baker 표기법 각각 표현 방법이 다름
  • 바커 표기법의 동그라미는 NULL 허용을 의미

속성의 개념

  • 속성은 더 이상 분리되지 않는 최소의 데이터 단위

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

  • 1개의 엔티티는 2개 이상의 인스턴스 집합이어야 한다(1개의 테이블은 2개 이상의 행을 가진다)
  • 1개의 엔티티는 2개 이상의 속성을 갖는다(1개의 테이블은 2개 이상의 컬럼으로 구성된다)
  • 각 속성은 구체적인 값을 가진다

속성의 특징

  • 주 식별자에 함수적 종속성을 가져야 한다
  • 속성은 1개의 속성 값을 갖는다.
  • 원자성이란 인스턴스가 해당 속성에 대해서 단일하고 명확한 값을 가지는것.

함수적 종속성

  • 한 속성의 값이 다른 속성의 값에 종속적인 관계를 갖는 특징
  • 속성 A의 값에 의해 속성 B의 값도 유일하게 결정된다면 B는 A에 함수적 종속 되었다고 한다
  • 완전 함수적 종속 : 특정 컬럼이 기본키에 대해 완전히 종속 될 때를 말한다.
  • 부분 함수적 종속 : 기본키 전체가 아니라 기본키 일부에 대해 종속 될 때를 말한다.

속성의 분류

[속성의 특성에 따른 분류]

  • 기본 속성
    • 업무로부터 추출된 모든 속성
    • 엔티티에서 일반적으로 가장 많이 존재하는 속성
    • ex) 원금, 예치기간 등
  • 설계 속성
    • 기본 속성 외에 업무를 규칙화 하기 위해 새로 만드는 속성
    • ex) 상품코드, 지점코드 등
  • 파생 속성
    • 다른 속성에 의해서 만들어지는 속성
    • 일반적으로 계산된 값들이 해당됨
    • ex) 합계, 평균, 이자 등

[엔티티 구성 방식에 따른 분류]

  • 기본키(PK)
    • 인스턴스를 식별할 수 있는 속성
  • 외래키(FK)
    • 다른 엔티티와의 관계에서 포함된 속성
  • 일반 속성
    • PK또는 FK에 포함되지 않은 기본 속성 

[분해 여부에 따른 속성]

  • 단일 속성
    • 하나의 의미로 구성된 경우
    • ex) 회원 ID, 이름 등
  • 복합 속성
    • 여러개의 의미로 구성된 경우
    • ex) 주소(시, 구, 동 등으로 분해)
  • 다중 값 속성
    • 속성에 여러 개의 값을 가질 수 있는 경우
    • ex) 상품의 목록 등

속성의 규칙

  • 해당 업무에서 사용하는 이름을 부여
  • 서술식 속성명은 사용하지 않음
  • 줄임말 사용을 가급적 제한
  • 전체 데이터 모델에서 유일한 명칭

도메인

  • 도메인은 각 속성이 가질 수 있는 값의 범위를 의미
  • 엔티티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것

관계의 개념

  • 관계는 엔티티간의 연관성을 나타낸 개념
  • 관계를 정의할 때는 인스턴스 간의 논리적인 연관성을 파악하여 정의

관계의 종류

  • 존재적 관계
    • 한 엔티티의 존재가 다른 엔티티의 존재에 영향을 미치는 관계
    • ex) 부서 엔티티는 사원 엔티티에 영향을 미침
  • 행위적 관계
    • 엔티티 간의 어떤 행위가 있는 것을 의미
    • ex) 고객 엔티티를 통해 주문 엔티티가 발생

관계의 구성

  • 관계명
  • 차수(1:1, 1:N)
  • 선택성

관계의 차수

  • 1:1 관계
    • 완전 1:1 관계
      • 하나의 엔티티에 관계되는 엔티티가 반드시 하나로 존재하는 경우
    • 선택적 1:1 관계
      • 하나의 엔티티에 관계되는 엔티티가 하나이거나 없을 수 있는 경우
      • ex) 사원은 하나의 소속 부서가 있거나 아직 없을 수도 있음
  • 1:N 관계
    • 엔티티에 하나의 행에 따른 엔티티의 값이 여러 개 있는 관계
    • ex) 고객은 여러 개의 물건을 주문할 수 있음
  • N:N 관계
    • 두 엔티티가 다대다 연결 관계를 가진다.
    • 두 엔티티를 연결하는 연결 엔티티를 추가로 만들어서 1:N 관계를 해소할 필요가 있다.

관계의 페어링

  • 엔티티 안에 인스턴스가 개별적으로 관계를 가지는 것
  • 차수는 하나의 엔티티와 다른 엔티티 간의 레코드 연결 방식을 의미
  • 페어링은 두 엔티티 간의 특정 연결을 의미

식별자 개념

  • 엔티티를 대표하는 속성을 나타냄
  • 유일한 식별자가 존재해야 한다.
  • 식별자는 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키(Key)라고 표현

주 식별자 특징

  • 유일성 : 모든 인스턴스를 유일하게 구분
  • 최소성 : 최소한의 속성으로 구성
  • 불변성 : 주 식별자의 값은 변하지 않아야 함
  • 존재성 : 주 식별자는 반드시 값이 존재해야 하며 NULL 허용을 하지 않음

식별자 분류

[대표성 여부에 따른 식별자 종류]

  • 주 식별자
    • 유일성과 최소성을 만족하는 엔티티를 대표하는 식별자
    • 엔티티 내에서 유일하게 구분할 수 있는 식별자
  • 보조 식별자
    • 엔티티 내에서 대표성을 가지지 못한 식별자

[생성 여부에 따른 식별자 종류]

  • 내부 식별자
    • 다른 엔티티 참조 없이 내부에서 스스로 생성되는 식별자
  • 외부 식별자
    • 다른 엔티티와의 관계로 인해 만들어지는 식별자(외래키)

[속성 수에 따른 식별자 종류]

  • 단일 식별자
    • 하나의 속성으로 구성
  • 복합 식별자
    • 2개 이상의 속성으로 구성

[대체 여부에 따른 식별자 종류]

  • 본질 식별자
    • 비즈니스 프로세스에서 만들어지는 식별자
  • 인조 식별자
    • 인위적으로 만들어지는 식별자

주 식별자 도출기준

  • 자주 사용되는 속성을 주 식별자로 지정
  • 이름 같이 변할 수 있는 것을 주 식별자로 사용하면 안됨
  • 속성 수를 최대한 적게 구성하여 조인으로 인한 성능저하 방지

관계간 엔티티 구분

  • 강한 개체
    • 독립적으로 존재할 수 있는 엔티티
    • ex) 고객과 계좌 엔티티 중, 고객은 독립적으로 존재 가능
  • 약한 개체
    • 독립적으로 존재할 수 없는 엔티티
    • ex) 고객과 계좌 엔티티 중, 계좌는 독립적으로 존재 할 수 없음(파생 엔티티)

식별 관계와 비식별 관계

  • 식별 관계
    • 하나의 엔티티의 기본키를 다른 엔티티가 기본키로 가지는 관계
    • 식별 관계는 ERD에서 실선으로 표시
  • 비식별 관계
    • 강한 개체의 기본키를 다른 엔티티의 기본키가 아닌 일반 속성으로 가지는 관계
    • 비식별 관계는 ERD에서 점선으로 표시

관계의 개념

  • 엔티티의 인스턴스 사이의 논리적인 연관성
  • 관계를 맺는다는 의미는 부모의 식별자를 자식에 상속하고, 상속된 속성을 조인키로 활용

관계의 분류

  • 존재 관계는 엔티티 간의 상태를 의미
  • 행위 관계는 엔티티간의 어떤 행위가 있는것을 의미

조인의 의미

  • 정규화에 의해 분리된 두 테이블의 데이터를 같이 출력하기 위해 데이터를 연결하는 과정

[JOIN SQL]

SELECT A.계좌번호, B.관리점
FROM 계좌 A, 관리점 B
WHERE A.관리점코드 = B.관리점코드
AND A.계좌번호 = ‘100111’

계층형 데이터 모델

  • 자기 자신끼리 관계가 발생하는것
  • 계층 구조를 갖는 인스턴스 끼리 연결하는 방식을 셀프 조인이라고 한다

트랜잭션이란

  • 하나의 연속적인 업무 단위를 말함
  • 트랜잭션에 의한 관계는 필수적인 관계 형태를 가짐

트랜잭션 특성

  • 원자성 : 트랜잭션에서 정의된 연산은 모두 성공하거나 변하지 않은 상태로 남아야 한다
  • 일관성 : 트랜잭션이 실행되기 전의 데이터에 문제가 없다면 트랜잭션 실행 후에도 문제가 없어야 한다
  • 고립성 : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받으면 안된다
  • 지속성 : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장

필수적, 선택적 관계와 ERD

  • IE 표기법
    • 원을 사용하여 필수적 관계와 선택적 관계를 구분
    • 필수적 관계에는 원을 그리지 않는다
    • 선택적 관계에는 관계선 끝에 원을 그린다
  • Baker 표기법
    • 실선과 점선으로 구분
    • 필수적 관계에는 관계선을 신선으로 표기
    • 선택적 관계에는 관계선을 점선으로 표기

NULL 이란

  • DBMS에서 아직 정해지지 않은 값을 의미
  • 0과 공백("")과는 다른 개념
  • Oracle에서의 공백은 NULL, SQL Server에서의 공백은 공백

NULL의 특성

  • NULL을 포함한 연산 결과는 항상 NULL
  • 집계합수는 NULL을 제외한 연산 결과를 리턴
    • sum, avg, min, max 등의 함수는 항상 NULL을 무시

식별자 구분

  • 본질 식별자
    • 업무에 의해 만들어지는 식별자
  • 인조 식별자
    • 인위적으로 만들어지는 식별자
    • 불필요한 인덱스 생성 -> 데이터베이스 성능 저하 야기
    • 중복 데이터 발생 가능 -> 데이터 품질 저하