SQLD

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

하부루 2024. 11. 9. 01:52

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을 무시

식별자 구분

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