[SQLD] 1과목-1. 데이터 모델링

seon·2025년 5월 26일

데이터분석

목록 보기
8/10
post-thumbnail

시험 정보

  • 객관식 50문항 (1시간 30분 응시)
  • 총점 60점 이상 합격
  • 1과목: 데이터 모델링의 이해 (10문항, 20점, 과락:8점)
  • 2과목: SQL 기본 및 활용 (40문항, 80점, 과락: 32점)
  • 계) 50문항, 100점

출제항목

  • 1️⃣ 데이터모델의 이해
  • 2️⃣ 엔터티
  • 3️⃣ 속성
  • 4️⃣ 관계
  • 5️⃣ 식별자

용어 정리

  • 엔터티 (Entity) : 테이블
  • 속성 (Attribute) : 컬럼 (ex. 학번, 이름, 전화번호, 주소, 학과번호, 지도교수번호)
  • 인스턴스 (Instance) : 행 (ex. 1000, 홍길동, 서울시, 101, 100001 ..)

1️⃣ 데이터 모델의 이해

모델링의 개념

현실 세계의 비즈니스 프로세스와 데이터 요구 사항을 추상적이고 구조화된 형태로 표현하는 과정

모델링의 특징

  1. 단순화(Simplification)
  2. 추상화(Abstraction)
  3. 명확화(Clarity)

데이터 모델링 유의점

  1. 중복(Duplication)
  2. 비유연성(Inflexibility)
  3. 비일관성(Inconsistency)

데이터 모델링 3가지 요소

  • 대상(Entity)
  • 속성(Attribute)
  • 관계(Relationship)

데이터 모델링의 3단계

  1. 개념적 모델링
  2. 논리적 모델링
  3. 물리적 모델링

데이터 모델의 표기법(ERD)

  • 엔터티(Entity)와 엔터티 간의 관계(Relationship)를 시각적으로 표현한 다이어그램

ERD 작성 절차

  1. 엔터티를 도출한 후 그린다.
  2. 엔터티 배치
  3. 엔터티 간의 관계를 설정
  4. 관계명을 서술
  5. 관계의 참여도 기술
  6. 관계의 필수 여부를 확인

2️⃣ 엔터티

엔터티의 개념

  • 현실 세계에서 독립적으로 식별 가능한 객체나 사물을 나타냄
  • 대상(Instance)들로 이루어진 집합
  • 인스턴스 = 엔터티의 특정한 속성 값들로 구성됨. 엔터티의 개념을 현실에서 구체적으로 나타낸 것.

    · 엔터티(Entity) : 학생
    · 속성(Attribute) : 학번, 이름, 학과 등.
    · 식별자(Identifier) : 학번 (고유한 학번으로 각 학생을 식별)
    · 인스턴스 : 특정 학생의 데이터 (학번: 2021001, 이름: 홍길동, 학과: 컴퓨터 공학)

엔터티의 특징

  1. 유일한 식별자에 의해 식별 가능
  2. 해당 업무에 필요하고 관리하고자 하는 정보
  3. 인스턴스들의 집합
  4. 엔터티는 반드시 속성을 가짐
  5. 엔터티는 업무 프로세스에 의해 이용
  6. 다른 엔터티와 최소 1개 이상의 관계 성립

엔터티의 분류

  1. 유형과 무형에 따른 분류
    a. 유형 엔터티
    b. 개념 엔터티
    c. 사건 엔터티
  2. 발생 시점에 따른 분류
    a. 기본 엔터티
    b. 중심 엔터티
    c. 행위 엔터티

엔터티의 명명

  1. 현업에서 사용하는 용어 사용
  2. 가능하면 약자 사용은 자제
  3. 단수 명사 사용
  4. 모든 엔터티에서 유일하게 이름 부여
  5. 엔터티 생성 의미대로 이름 부여

엔터티와 인스턴스 표기법

  • 엔터티는 사각형으로 표현, 속성은 조금씩 다름

3️⃣ 속성

속성의 개념

  • 속성은 업무에서 필요로 하는 고유한 성질, 특징을 의미(관찰 대상) -> 컬럼으로 표현할 수 있는 단위!
  • 더 이상 분리되지 않는 최소의 데이터 단위
    ex) 학생 엔터티 - 이름,학번,학과번호 속성

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

  • 1개 엔터티 - 2개 이상의 인스턴스
  • 1개 엔터티 - 2개 이상의 속성
  • 1개 속성 - 1개의 속성값
  • 속성은 엔터티에 속함

속성의 특징

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함
  • 정해진 주식별자에 함수적 종속성을 가져야 한다.
  • 각 속성이 하나의 값을 갖고 있음(속성의 원자성)
    • 원자성: 각 엔터티의 인스턴스가 해당 속성에 대해 단일하고 명확한 값을 가지는 것

함수적 종속성

  • 어떤 속성 A의 값에 의해 다른 속성 B도 유일하게 결정된다면, B는 A에 함수적으로 종속됐다고 함 A -> B
  1. 완전 함수적 종속: 특정 컬럼이 기본키에 대해 완전히 종속될 때를 말함
  2. 부분 함수적 종속: 기본키 전체가 아니라, 기본키 일부에 대해 종속될 때를 말함

속성의 분류

  1. 속성의 특성에 따른 분류
    a. 기본 속성 (ex. 원금, 예치기간)
    b. 설계 속성 (ex. 상품코드, 지점코드, 예금분류)
    c. 파생 속성 (ex. 합계, 평균, 이자)
  2. 엔터티 구성방식에 따른 분류
    a. PK (Primary Key, 기본키)
    b. FK (Foreign Key, 외래키)
    c. 일반 속성
  3. 분해 여부에 따른 속성
    a. 단일 속성 (ex. 회원 ID, 이름)
    b. 복합 속성 (ex. 주소 - 시, 구, 동 등으로 분해 가능)
    c. 다중값 속성 (ex. 상품 리스트)

속성의 명명규칙

  1. 해당 업무에서 사용하는 이름을 부여
  2. 서술식 속성명은 사용하지 않음
  3. 약어의 사용은 가급적 제한
  4. 전체 데이터 모델에서 유일한 명칭

도메인

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

4️⃣ 관계

관계의 개념

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

관계의 종류

  1. 존재적 관계
  • 한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계
  • 엔터티 간의 연관된 상태를 의미
  1. 행위적 관계
  • 엔터티 간의 어떤 행위가 있는 것을 의미
    ex) 고객 엔터티의 행동에 의해 주문 엔터티가 발생

c.f) ERD에서는 존재관계와 행위관계를 구분하지 않는다.

관계의 구성

  1. 관계명
  2. 차수(Cardinality)
  3. 선택성(Optionality)

관계의 차수

  • 한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드(인스턴스)와 어떻게 연결되는지를 나타내는 표현
  • 주로 1:1, 1:N, N:M 등으로 표현
  1. 1 대 1 관계

    a. 완전 1 대 1 관계

    • 사원은 반드시 소속 부서가 있어야 함

    b. 선택적 1 대 1 관계

    • 사원하나의 소속 부서가 있거나 아직 발령전이면 없을 수 있음
  2. 1 대 N 관계

  • 엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계
  • 고객은 여러 개의 계좌를 소유할 수 있음
  1. M 대 N 관계
  • 두 엔터티가 다대다의 연결 관계를 가지고 있음
  • 조인 시 카테시안 곱이 발생하므로 두 엔터티를 연결하는 연결엔터티의 추가로 1 대 N 관계로 해소할 필요가 있음
  • 한 학생이 여러 강의를 수강할 수 있고, 한 강의 기준으로도 여러 학생이 보유할 수 있음
    => 이 두 엔터티의 연결엔터티로는 구매이력 엔터티가 필요함

관계의 페어링

  • 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것
  • 관계란 페어링의 집합
  • 관계 vs 차수 vs 페어링
    • 학생과 강의 엔터티는 관계를 가짐
    • M:N 관계, "학생 A가 강의 B를 2023년 1학기에 수강했고 성적은 A+를 받았다"와 같은 특정한 페어링이 형성
    • 이런식으로 관계의 차수는 하나의 엔터티와 다른 엔터티 간의 레코드 연결 방식을 나타내는 반면, 관계의 페어링은 두 엔터티 간의 특정 연결을 설명하고 추가 정보를 제공하는 용도로 사용

5️⃣ 식별자

식별자 개념

  • 하나의 엔터티에 구성된 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성
  • 하나의 유일한 식별자가 존재해야 함
  • 논리 모델링에서 사용하는 용어, 물리 모델링에서는 키(key)라고 표현

주식별자 특징

  1. 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
  2. 최소성 : 주식별자를 구성하는 속성은 유일성을 만족하는 최소한의 속성으로 구성
  3. 불변성 : 주식별자가 한번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
  4. 존재성 : 주식별자가 지정되면 반드시 값이 존재해야 하며 NULL 은 허용 안됨

식별자 분류

  1. 대표성 여부에 따른 식별자의 종류 (주식별자, 보조식별자)
  2. 생성 여부에 따른 식별자의 종류 (내부식별자, 외부식별자)
  3. 속성 수에 따른 식별자의 종류 (단일식별자, 복합식별자)
  4. 대체 여부에 따른 식별자의 종류 (본질식별자, 인조식별자)

식별자 표기법

주식별자 도출기준

  1. 해당 업무에서 자주 이용되는 속성 => 주식별자로 지정
    ex) 학생번호/주민번호 중에 학생번호=주식별자, 주민번호=보조식별자
  2. 명칭이나 내역등과 같은 이름은 피함
    ex) 부서명보다는 부서코드를 부여하여 부서코드로 주식별자로 사용
  3. 속성의 수를 최대한 적게 구성
  • 주식별자를 너무 많은 속성 => 조인으로 인한 성능저하 발생 우려
  • 일반적으로 7~8개 이상의 주식별자 구성 => 새로운 인조식별자 생성 => 모델 단순화 good
    ex) 주문 엔터티에 대해 주문일자 + 주문상품코드 + 고객번호 + .. 등으로 구성 => 주문번호 속성 추가~!

관계간 엔터티 구분

  1. 강한 개체
  • 독립적으로 존재할 수 있는 엔터티
    ex) 고객과 계좌 엔터티 중, 고객은 독립적으로 존재할 수 있음
  1. 약한 개체
  • 독립적으로 존재할 수 없는 엔터티
    ex) 고객과 계좌 엔터티 중, 계좌는 독립적으로 존재할 수 없음
  • 고객에 의해 파생되는 엔터티이므로

식별 관계와 비식별관계

  1. 식별 관계 (Identification Relationship)
  • 하나의 엔터티의 기본키를 다른 엔터티가 기본키의 하나로 공유하는 관계
  • 식별관계는 ERD에서 실선으로 표시
    ex) 사원과 교육이력 엔터티에서 양쪽 모두 기본키 중 일부가 사원번호임
  1. 비식별 관계 (Non-identification Relationship)
  • 강한 개체의 기본키를 다른 엔터티의 기본키가 아닌 일반 속성으로 관계를 가지는 것
  • 비식별관계는 ERD에서 점선으로 표시
    ex) 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔터티에서는 일반키로 가짐
    (사원에서는 사원번호가 기본키)

Reference

profile
🌻

0개의 댓글