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

경운·2025년 8월 28일

자격증

목록 보기
1/3
post-thumbnail

🌱 데이터 모델링의 이해

데이터 모델링

  • 정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법 → 비즈니스 프로세스를 이해
  • 현실 세계의 데이터를 약속된 표기법으로 표현하는 과정 → 데이터 모델로 표현
  • DB 구축을 위한 분석 및 설계의 과정 → 규칙을 정의

데이터 모델링의 중요성 및 유의점

  • 중복
    • 같은 정보를 저장 X
  • 비유연성
    • 작은 변화에도 데이터 모델이 자주 변경 X
  • 비일관성
    • 데이터 중복 없어도 비일관성이 발생 가능
    • 상호 연관 관계에 대해 명확하게 정의

데이터 모델링 특징

  • 추상화 - 현실세계를 간략하게 표현
  • 단순화 - 누구나 쉽게 이해 가능
  • 명확성 - 모호하지 않고, 명확한 의미 해석

데이터 모델링의 3단계

  • 개념적 모델링
    • 업무 중심적 & 포괄적(전사적) 관점에서 모델링
    • 업무 분석 후 중요한 부분 위주의 엔터티, 속성 도출하여 ERD 작성
    • 추상화 수준이 가장 높음
  • 논리적 모델링
    • 식별자를 도출, 정의하고 릴레이션, 관계, 속성 등을 표현
    • 정규화를 통해 모델의 독립성, 재사용성 높임
  • 물리적 모델링
    • DB 실제 구축 (테이블, 인덱스 함수) 생성
    • 성능, 보안, 가용성 등을 고려
    • 추상화 수준이 가장 낮음

데이터 모델링 3가지 관점

  • 데이터 관점
    • 데이터가 어떻게 저장되고, 접근되고, 관리되는지를 정의하는 단계
  • 프로세스(업무) 관점
    • 시스템이 어떤 작업을 수행하며, 작업들이 어떻게 조직되고 조정되는지를 정의하는 단계
    • 데이터가 시스템 내에서 어떻게 흐르고 변환되는지에 대한 확인
  • 데이터와 프로세스 관점
    • 데이터 관점과 프로세스 관점을 결합하여 시스템의 전반적인 동작을 이해하는 단계
    • 특정 프로세스가 어떤 데이터를 사용하고, 데이터가 어떻게 생성되고 변경되는지를 명확하게 정의

데이터 모델링 3가지 요소

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

데이터 모델링 요소 (3층 스키마)

  • 외부 스키마 (사용자 관점)
    • 여러 사용자, 응용 프로그램이 필요한 데이터를 정의(View : 사용자가 접근하는 대상)
  • 개념 스키마 (설계자 관점)
    • 사용자 관점의 DB 스키마를 통합하여 DB의 전체 논리적 구조를 정의
    • 전체 DB의 개체, 속성, 관계, 데이터 타입 등을 정의
  • 내부 스키마 (개발자 관점)
    • 데이터가 물리적으로 어떻게 저장되는지를 정의
    • 데이터의 저장 구조, 컬럼, 인덱스 등을 정의

💡3단계 스키마의 독립성
1. 논리적 독립성 - 논리적 데이터 구조가 변경되어도(개념 스키마 변경) 외부 스키마에 영향을 끼치지 않는 특성
2. 물리적 독립성 - 물리적 구조가 변경되어도(내부 스키마 변경) 개념/외부 스키마에 영향을 끼치지 않는 특성

데이터 모델의 표기법 (ERD : Entity Relationship Diagram)

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

ERD 작성 절차

  1. 엔터티 도출 및 그림
  2. 엔터티 배치 - 중요한 엔터티는 왼쪽 상단에 배치
  3. 엔터티 관계 설정
  4. 관계명 서술
  5. 관계 참여도 표현
  6. 관계 필수 여부 표현

🌱 엔터티

엔터티의 개념

  • 현실세계에서 정보가 저장될 수 있는 장소, 사람, 사건, 개념, 물건등 독립적으로 구별이 가능한 집합

엔터티의 특징

  • 식별자 - 유일한 식별자가 있어야 함 / 엔터티의 인스턴스만의 고유 이름
  • 업무 - 업무에서 관리되어야 하는 집합
  • 인스턴스 집합 - 2개 이상의 인스턴스가 있어야 함
  • 속성 - 반드시 속성을 가짐 / 2개 이상의 속성
  • 관계 - 최소 1개 이상의 관계가 있어야 함

엔터티의 종류

유형과 무형에 따른 분류

  • 유형 엔터티
    • 물리적 형태(실체가 있는 대상)
    • 예) 사원, 고객
  • 개념 엔터티
    • 개념적 형태(물리적 형태 X)
    • 예) 조직, 보험 상품
  • 사건 엔터티
    • 실행하면서 생성
    • 주문, 수수료 청구

발생 시점에 따른 분류

  • 기본 엔터티
    • 원래 존재하는 정보
    • 다른 엔터티의 도움없이 독립적으로 생성
    • 예) 고객, 부서, 사원
  • 중심 엔터티
    • 키와 행위의 중간(기본 엔터티 로부터 발생)
    • 예) 계약, 주문
  • 행위 엔터티
    • 2개 이상의 엔터티 로부터 발생
    • 양이 많거나 자주 변경되는 엔터티
    • 예) 주문 이력, 취소 이력

엔티티의 명명 유의사항

  • 약어 사용 금지
  • 현업에서 사용하는 용어 사용
  • 단수명사 사용
  • 유일한 이름 부여
  • 의미가 자연스럽게 부여

🌱 속성

속성의 개념

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

속성의 종류

특성에 따른 분류

  • 기본 속성
    • 업무로부터 추출된 일반적인 속성
    • 예) 이름, 회원ID
  • 설계 속성
    • 업무를 규칙화하기 위해 새로 만들거나 변형된 속성
    • 예) 일련번호, 제품번호
  • 파생 속성
    • 다른 속성에 의해 만들어진 속성
    • 일반적으로 계산된 값들이 해당
    • 예) 합계, 평균

분해 여부에 따른 분류

  • 단일 속성
    • 하나의 의미로 구성
    • 예) 직원 테이블의 이름, 학생 테이블의 학번
  • 복합 속성
    • 여러 의미로 구성
    • 예) 주소 속성은 도시, 우편번호, 도로명으로 나뉠 수 있음
  • 다중값 속성
    • 속성에 여러 값을 가질 수 있음
    • 별도의 엔티티로 분해 가능 (별도의 테이블)

엔터티 구성방식에 따른 분류

  • PK(Primary Key, 기본키)
    • 인스턴스를 식별할 수 있는 속성
  • FK(Foreign Key, 외래키)
    • 다른 엔터티와 관계에서 포함된 속성
  • 일반 속성
    • PK, FK에 해당하지 않는 속성

🌱 관계

관계의 개념

  • 엔터티간의 연관성을 나타낸 개념

💡강사 - 가르친다(관계) - 수강생

관계의 종류

  • 존재 관계
    • 한 개체(엔터티) 가 다른 개체의 존재에 의존
    • 예) 교실, 학생 - 교실이라는 개체가 존재해야 학생이 존재
  • 행위 관계
    • 행위나 동작을 통해 두 개체가 연결
    • 예) 고객은 "주문하는" 행위를 통해 주문을 생성

💡ERD 에서는 존재, 행위 관계를 구분하지 않음

관계의 구성

  • 관계명
  • 차수 (Cardinality)
    • 1 대 1, 1 대 N, N 대 M
  • 선택성 (Optionality)
    • 필요한 관계, 선택적 관계

관계의 차수

  • 1 대 1 관계
    • 완전 1 대 1
      • 1개 엔터티에 관계되는 엔터티 관계가 1개가 반드시 존재
      • Ex) 한 명의 학생은 하나의 학번을 가짐, 하나의 학번 또한 한 명의 학생을 가짐
    • 선택적 1 대 1
      • 관계가 1개 이거나 없을 수 있음
  • 1 대 N 관계
    • 엔터티에 하나의 행에 다른 엔터티에 관련 행이 여러개 있는 경우
    • 예) "고객" 테이블에 고객 한명은 "계좌" 여러 개 보유 가능
  • N 대 M 관계
    • 2개의 엔터티가 서로 여러 개의 관계를 가짐
    • 예) 한 명의 학생은 어러 개의 과목이 수강 가능, 한 개의 과목은 여러 명의 학생이 수강

💡 관계형 DB 에서는 N 대 M(다 대 다) 관계는 직접적으로 표현이 어렵기 떄문에 일대다, 다대일로 분해

차수, 페어링 차이

  • 차수
    • 하나의 엔터티와 다른 엔터티 간의 연결의 패턴이나 규칙
    • 예) 일대다, 다대다
  • 페어링
    • 해당 연결이 구체적으로 어떻게 매핑되었는지 나태내는 인스턴스
    • 예) 학생 A가 강의 B를 수강하고, 성적은 A+ 받았다

🌱 식별자

식별자의 개념

  • 엔터티 내에서 하나의 인스턴스를 다른 인스턴스와 구별해 주는 속성
  • DB 설계 시 기본키(Primary Key, PK) 역할

식별자의 4가지 분류

대표성 여부

  • 주 식별자
    • 타 엔티티와 참조관계를 연결할 수 있는 식별자
    • 예) 부서번호, 사번, 주문번호
  • 보조 식별자
    • 대표성을 갖지 못해 참조관계 연결 불가
    • 예) user table의 email

스스로 생성 여부

  • 내부 식별자
    • 엔터티 내부에서 스스로 만들어지는 식별자
  • 외부 식별자
    • Foreign Key(FK) 외래키 역할

속성의 수

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

대체 여부

  • 본질 식별자
    • 업무로 인해 만들어지는 식별자
  • 인조 식별자
    • 인위적으로 만들어지는 식별자

주 식별자 5가지 특징

유일성

  • 유일하게 구분이 가능해야 함

대표성

  • 엔터티를 대표 할 수 있어야 함

불변성

  • 한 번 지정이 되면 값은 변하면 X

최소성

  • 구성하는 속성 수는 최소

존재성

  • 반드시 값이 존재 해야 함(Not Null)

식별자 관계(강한 연결 관계, 실선 표시)

  • 부모의 주식별자를 자식의 주식별자로 상속되는 경우

비 식별자 관계(약한 연결 관계, 점선 표시)

  • 상속을 받았지만 주식별자가 아닌 일반적인 속성으로 사용되는 경우

DB 키 종류

논리 모델링의 식별자가 물리 모델링을 거쳐서 Key로 된다

1. 기본키 (Primary Key)

  • 엔터티를 대표할 수 있는 키

2. 후보키 (Candidate Key)

  • 유일성과 최소성을 만족하는 키

3. 슈퍼키 (Super Key)

  • 유일성은 만족, 최소성은 불만족

4. 대체키 (Alternate Key)

  • 여러 개의 후보키 중에 기본키가 아닌 키

5. 외래키 (Foreign Kep)

  • 다른 테이블의 기본키를 참조하는 키

2개의 댓글

comment-user-thumbnail
2025년 8월 29일

Sqld 1트 합격 드가자 ~! 🔥

1개의 답글