자격증 공부/SQLD

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

PaperDrop 2025. 12. 31. 12:02

● 데이터 모델의 이해

[1] 데이터 모델링의 개념과 특징

 

   1. 데이터 모델링 개념

      : 현실 세계에서 다루는 복잡한 데이터를 단순하고 이해하기 쉬운 구조로 표현하는 과정

        → 데이터를 저장, 관리, 활용하기 위한 청사진

 

   2. 데이터 모델링 특징 ★

      1) 추상화(Abstraction) : (=모형화) 데이터의 필요한 부분만 저장

      2) 단순화(Simplification) : 데이터를 이해하기 쉬운 구조로 표현

      3) 명확화(Clarification) : 데이터 구조와 관계를 명확하게 표현

    ★ 구체화, 복잡화, 일반화 등의 표현이 오답으로 빈출

 

   3. 데이터 모델링이 잘 이뤄지지 않는 경우 : 중복성, 비유연성, 비일관성

 

[2] 데이터 모델링 관점

 

   1. 데이터 관점 (What)

      : 저장하고 관리하는 데이터에 초점을 맞춘 관점, 어떤 데이터인지가 중요

 

   2. 프로세스 관점 (How) 

      : 어떻게 데이터를 처리할지에 초점을 맞춘 관점, 업무의 흐름과 절차를 고려

 

   3. 데이터와 프로세스의 상관 관점 (Interaction)

      : 데이터와 프로세스가 밀접한 관련이 있음을 강조, 상호 의존적인 관계 고려

 

[3] 데이터 모델링 3단계

 

   1. 데이터 모델링 3단계 

      1) 개념적 데이터 모델링 : 현실세계 데이터를 개념적 구조로 설계

      2) 논리적 데이터 모델링 : 개념적 구조를 바탕으로 논리적 구조를 설계 (데이터 속성 등을 정의)

      3) 물리적 데이터 모델링 : 논리적 구조를 바탕으로 물리적 구조를 설계 (데이터를 저장할 구체적 방식 정의)

 

   2. 세계 종류

      1) 개념 세계 : 개념적 구조, 물리적 구조 

      2) 물리 세계 : 논리적 구조, 물리적 구조

      3) 현실 세계 : 개체, 저장 데이터 베이스

 

[4] 데이터 독립성

      : 데이터와 응용 프로그램을 분리 설계/관리 하여 효율성을 높이는 특징

 

   1. 파일 시스템의 구조와 문제점

      → 프로그램 별로 파일을 따로 저장해서 문제점이 발생

      1) 데이터 중복 관리 : 각기 다른 파일에 데이터가 중복 저장

      2) 데이터 불일치 문제 : 다른 파일에서 수정한 내용이 반영되지 않아 데이터가 불일치함

 

   2. 데이터베이스 시스템

      → 이를 해결하기 위해 데이터베이스 시스템 설계

      1) 데이터 통합 관리 : 중복 관리 x

      2) 데이터 공유, 일관성 유지 : 데이터 일관성 유지 가능

 

[5] 데이터베이스 3단계 구조

 

   1. 외부 스키마(External Schema) : 응용 프로그램이나 사용자 관점에서 데이터를 표현한 것 (ex. '내 급여는 얼마인가?')

        ↕ (논리적 데이터 독립성)

   2. 개념 스키마(Conceptual Schema) : 외부 스키마에서 요구된 데이터를 통합해 설계한 데이터의 논리적 구조

        ↕ (물리적 데이터 독립성)

   3. 내부 스키마(Internal Schema) : 개념 스키마를 물리적으로 저장하는 구조를 의미 (저장 방식, 최적화 구조 등)

 

[6] 데이터 종속성과 독립성

 

   1. 데이터 종속성 : 응용 프로그램과 데이터 간 상호 의존 관계 의미

      →  주로 파일 시스템에서 발생하는 문제

 

   2. 데이터 독립성 : 데이터 구조 변경이 응용 프로그램에 영향을 주지 않는 특성

      1) 논리적 독립성 : 개념 스키마가 변경되어도, 외부 스키마가 영향 받지 않음

      2) 물리적 독립성 : 내부 스키마가 변경되어도, 개념 스키마가 영향 받지 않음

 

   3. 데이터 독립성이 유지되지 않으면

      ① 데이터 중복성과 복잡도가 증가한다. (데이터의 수정과 관리가 어려워짐)

      ② 요구사항 대응이 어려워져, 데이터 유지보수 비용이 증가한다. (유연성과 효율성 저하)

 

[7] 데이터 모델링 요소

 

   1. 데이터 모델링 3가지 구성요소

      1) 엔터티(Entity) : 업무에서 관리해야 할 개체 또는 대상 (ex. 고객, 상품, 주문 등)

      2) 속성(Attribute) : 엔티티가 가지는 특성이나 정보 (ex. 고객의 이름/연락처/주소 등)

      3) 관계(Relationship) : 엔티티 간 연결 또는 상호작용 (ex. 고객이 주문을 한다. 등)

 

   2. 스키마 vs. 인스턴스

      ① 스키마(Schema) : 데이터베이스의 구조와 설계를 의미

         → 데이터 모델링 대상, DB의 구조/타입/제약 명시

      ② 인스턴스(Instance) : 스키마에 따라 특정 시점에 저장된 실제 데이터를 의미

         → 실제 저장된 데이터, 변경 빈번

 

[8] 데이터 모델 표기법 및 ERD 작성 순서

 

   1. 데이터 모델 표기법 

      1) Peter Chen : 대학에서 많이 사용

      2) IE/Crow's Foot : 까마귀발 모양 표기법, 실무 사용 ★

      3) IDEF1X : 마름모와 원을 이용한 표기법, 실무 사용

      4) Min-Max/ISO : 기수성을 더욱 정교하게 표현

      5) UML : 데이터 모델링과 프로세스 모델링을 동시 다룸

      6) Case's Method/Barker's Notation : Crow's Foot과 유사 ★

 

   2. ERD 작성 순서 ★

      ① 엔터티를 도출하고 그린다. (데이터 정의를 위한 엔티티 정의)

      ② 엔터티를 적절하게 배치한다. (선이 교차하거나 꼬이지 않도록)

      ③ 엔터티 간 관계를 설정한다. (식별자 관계 우선 설정)

        ★ 식별자 관계 : 부모 엔터티의 기본키가 자식 엔터티의 기본키의 일부가 되는 관계

      ④ 관계명을 서술한다. (양 방향)

      ⑤ 관계 참여도를 표현한다. (한 엔티티와 다른 엔티티 간 참여 관계 수를 의미)

      ⑥ 관계의 필수 여부를 확인한다. (필수 관계, 선택 관계를 명시)

 

   3. 좋은 데이터 모델 요건

      1) 완전성 : 업무에 필요로 하는 모든 데이터를 정의해야 함

      2) 업무규칙 : 업무 규칙 반영을 위해서는 모든 데이터가 정의되어야 함

      3) 중복배제 : 동일한 사실은 반드시 한 번만 기록

      4) 데이터 재사용 : 전사가 공통 데이터를 도출하고, 이를 전 영역에서 사용가능 해야 함

      5) 통합성 : 동일한 데이터는 조직 전체에 한 번만 정의, 다른 영역에서 참조/활용해야 함

 

● 엔터티

[1] 엔터티 개념

 

   1. 엔터티 정의

      : 업무에 필요한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)

 

   2. 엔터티 분류 ★

      1) 물리적 형태 존재 여부에 따른 분류

        ① 유형 엔터티 : 물리적 형태가 있고 안정적/지속적으로 활용됨 (ex. 교수, 강의실, 학생 등)

        ② 개념 엔터티 : 물리적으론 존재하지 않지만, 관리해야 할 개념적 정보 (ex. 수업, 보험상품 등)

        ③ 사건 엔터티 : 업무 수행 과정에서 발생하며 비교적 발생량이 많음 (ex. 수강신청, 주문, 입금 등)

      2) 발생시점 및 상속 관계에 따른 분류 

        ① 기본 엔터티 : 독립적으로 생성되며, 스스로 주식별자를 갖음

        ② 중심 엔터티 : 기본 엔터티로부터 주식별자를 상속 받아 생성됨

        ③ 행위 엔터티 : 특정 사건이나 활동의 결과로 생성되는 데이터 

 

   3. 엔터티와 인스턴스 ★

      1) 엔터티 : 데이터베이스에서 관리하고자 하는 객체, 둘 이상의 인스턴스 보유 (ex. 그룹 이름)

      2) 인스턴스 : 이를 구성하는 개별 데이터 행, 다수의 속성을 보유 (ex. 입력된 개별 데이터)

      3) 속성 : 엔터티의 구체적인 데이터 요소를 표현하는 단위, 각 속성은 하나의 속성값 (ex. 그룹 세부 단위)

      4) 속성값 : 각 인스턴스에 대입되는 실제 데이터 값

 

[2] 엔터티의 특징

 

   1. 엔터티는 업무에서 관리할 필요가 있는 정보를 포함해야 한다.

   2. 유일한 식별자(주식별자, PK)에 의해 식별 가능해야 한다.

   3. 영속적(↔일시적)으로 존재하는 다수의 인스턴스의 집합이여야 한다. 

   4. 업무 프로세스에 의해 이용되어야 한다. (CRUD 연산 발생)

   5. 반드시 속성을 가져야 한다.

   6. 주식별자만 존재하고 일반 속성은 없는 경우 바람직하지 않다. (=엔터티로 존재할 필요가 없다.)

   7. 다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다.

 

[3] 엔터티의 명명 원칙

 

   1. 실제 업무에 사용하는 용어를 사용한다.

   2. 약어는 가급적 사용하지 않는다.

   3. 단수 명사를 사용한다.

   4. 이름이 동일한 엔터티가 중복 존재할 수 없다.

 

● 관계

[1] 관계의 개요

 

   1. 관계와 페어링

      1) 관계(Relationship) : 두 개 이상의 엔터티 간에 존재하는 논리적 연관성

      2) 페어링(Pairing) : 두 개 이상의 인스턴스가 서로 연결된 상태를 표현

         → 이러한 페어링의 집합이 관계를 구성

 

   2. 관계의 분류

      1) 존재에 의한 관계 : 존재 자체로 형성되는 관계

      2) 행위에 의한 관계 : 이벤트 발생을 통해 연관성이 형성되는 관계

 

[2] 관계 표기법

 

   1. 관계명(Relationship Membership) : 읽는 방향에 따른 관계를 정의하는 이름

   2. 관계 차수(Degree) : 관계를 통해 엔터티 간 참조 가능한 인스턴스 수를 의미

      1) 1:1 관계 : 한 계체가 다른 계체 하나와만 연결되는 경우

      2) 1:N 관계 : 한 개체가 여러 개체와 연결될 수 있는 경우

      3) M:N 관계 : 하나의 개체가 여러 개체와 연결될 수 있으며, 동시에 다른 개체도 여러 개체와 연결 가능한 관계

   3. 관계 선택성(Optionality) : 관계 참여가 필수인지 여부를 표현

      1) 필수 참여 : 한 쪽 엔터티의 인스턴스에 대응되는 인스턴스가 반대편 엔터티에 반드시 존재해야 함

      2) 선택 참여 : 한 쪽 엔터티의 인스턴스에 대응되는 인스턴스가 반대편 엔터티에 하나도 존재하지 않아도 부방함

   4. 관계 읽기 

      → "각 (기준 엔터티)는 (관계 차수)의 (대상 엔터티)를 (반드시/선택적으로) (관계명)한다."

 

● 속성

[1] 속성(Attribute) 개요

 

   1. 속성의 정의 

     : 엔터티를 구성하는 가장 기본적인 정보 단위, 엔터티의 고유 성질과 특징을 구체화함

      1) 엔터티의 특징 혹은 성질

      2) 최소의 데이터 단위

      3) 인스턴스 성격 구체화

 

   2. 속성의 특징

      ① 업무에서 관리해야 할 의미있는 정보를 표현

      ② 모든 속성은 엔터티의 주식별자에 함수적으로 종속되어야 함

      ③ 하나의 속성은 단 하나의 값을 가짐 (다중값을 가진다면 별도의 엔터티로 분리하는 것이 바람직)

 

[2] 속성의 표기

 

   1. 속성의 명명 원칙

      ① 실제 업무에 사용하는 용어 기반

      ② 모든 관계자가 공감하고 이해하는 약어 외에 약어 사용 자제

      ③ 서술적 표현대신 명사형으로 표현

      ④ 수식어와 소유격 표현 자제

      ⑤ 전체 데이터 모델 내에서 유일하게 정의

 

   2. 속성의 표기

      : 엔터티를 사각형으로 표현, 그 사각현 내부를 가로선으로 구분해 '식별자 속성'과 '일반 속성'으로 구분

 

[3] 속성 도메인(Domain)

      : 속성이 가질 수 있는 값의 범위와 유형을 정의하는 개념

    → 이를 통해 데이터 무결성 보장, 잘못된 값을 사전 차단 가능

 

[4] 속성의 분류

 

   1. 속성의 특성에 따른 분류

      1) 기본 속성 : 업무에서 도출된 가장 일반적 속성

      2) 설계 속성 : 데이터 모델링 과정에서 필요에 의해 새로 정의한 속성

        → 기본 속성과 구분이 매우 어려움

      3) 파생 속성 : 다른 속성들로부터 유도된 속성

 

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

      1) PK 속성 : 엔터티의 각 인스턴스를 유일하게 식별 가능한 속성

      2) FK 속성 : 다른 엔터티의 PK를 참조하는 속성

      3) 일반 속성 : PK, FK를 제외한 나머지 속성

 

   3. 분리 가능성에 따른 분류 

      1) 복합 속성 : 분해 가능한 하위 속성들로 나눌 수 있는 속성

      2) 단순 속성 : 더 이상 분해할 수 없는 원자적 속성

 

   4. 속성값의 수에 따른 분류

      1) 다중값 속성 : 하나의 속성이 여러 값을 동시에 가질 수 있는 경우

      2) 단일값 속성 : 하나의 속성이 하나의 값을 갖는 경우

 

● 식별자

[1] 식별자(Identifier)의 개요

 

   1. 식별자의 정의

       : 데이터 모델링에서 각 엔터티 내의 개별 인스턴스를 고유하게 구별할 수 있는 속성을 의미

 

   2. 식별자의 분류

분류 기준 식별자 종류 설명
대표성 주식별자 • 엔터티 내에서 각 인스턴스를 구분할 수 있음
• 타 엔터티와 참조 관계를 연결할 수 있음→ Primary Key
• 한 번 지정되면 생명주기 동안 변경되지 않아야 함
보조식별자 • 엔터티 내 인스턴스 구분 가능
• 대표성이 없어 참조 관계 연결에는 사용되지 않음→ Candidate Key
목적 내부식별자 엔터티 내부에서 스스로 만들어지는 식별자
외부식별자 • 관계를 통해 유입되는 타 엔터티의 식별자
• 주식별자 속성 또는 일반 속성으로 포함 가능→ Foreign Key
속성 수 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 둘 이상의 속성으로 구성된 식별자
본질 본질(원조)식별자 업무상 이미 존재하는 속성으로 만들어진 식별자→ 기본 속성
인조(대리)식별자 데이터베이스 설계 과정에서 필요에 의해 인위적으로 만든 식별자→ 설계 속성

 

   3. 식별자 특징 ★

      1) 유일성 : 주식별자에 의해 엔터티 내 각 인스턴스를 모두 유일하게 구분 가능해야 함

      2) 최소성 : 주식별자 구성 속성 수는 유일성을 만족하는 최소의 수여야 함

      3) 불변성 : 주식별자로 지정되면 해당 식별자 값은 변하지 않아야 함

      4) 존재성 : 주식별자의 값은 NULL이 될 수 없음

 

[2] 주식별자 도출 기분

 

   1. 업무 활용도가 높은 속성 선택

   2. 명칭 기반 속성 지양

   3. 복합식별자 구성 시 과도한 속성 포함 방지 

 

[3] 식별자/비식별자 관계

 

   1. 식별자 관계 : 부모 엔터티의 주식별자 속성을 자식 엔터티의 주식별자로 상속 받는 경우

      → 부모 엔터티 없이 자식 엔터티 존재 불가

 

   2. 비식별자 관계 : 부모 엔터티의 주식별자 속성을 자식 엔터티의 일반 속성에 포함하는 경우

      → 부모 엔터티 없이도 자식 엔터티 생성 가능

 

[4] 식별자/비식별자 관계 남용 시 문제

 

   1. 식별자 관계 남용 시 : 주식별자가 점점 늘어남

   2. 비식별자 관계 남용 시 : 데이터 조회 시 조인(JOIN) 횟수 증가라는 문제 발생 가능 (=데이터 구조 복잡해짐)

   3. 비식별자 관계를 고려해야 하는 경우

      1) 부모-자식 관계 강도가 약할 때

      2) 자식 엔터티가 독립적인 주식별자를 갖는 경우

      3) PK 속성의 단순화 필요성

   4. 식별자 관계와 비식별자 관계 비교

구분 식별자 관계 비식별자 관계
관계 강도 강한 연결관계 표현 약한 연결관계 표현
상속 위치 자식 엔티티의 주식별자(PK) 에 포함됨 자식 엔티티의 비식별자 속성(FK) 에 포함됨
표기법 실선 표현 점선 표현
연결 고려사항 • 자식 엔티티가 부모 엔티티에 종속됨• 상속받은 주식별자 속성을 타 엔티티에 전달할 필요가 있는 경우 • 자식 주식별자를 독립적으로 구성함• 상속받은 주식별자 속성을 타 엔티티에 전달하지 않고 차단하고자 하는 경우

 

● 본질식별자 vs. 인조식별자

[1] 본질식별자

 

   1. 개념 : 엔터티 고유성을 나타내는 본질적인 속성을 식별자로 사용하는 것

 

   2. 특징 

      1) 엔터티 속성에서 도출된 실제 데이터로 구성되어 데이터 해석이 쉽다.

      2) 데이터의 고유성을 보장, 중복 데이터 방지 가능

      3) 본질식별자가 여러 속성이거나 데이터 구조가 복잡할 경우, 관리와 인덱싱이 어려울 수 있다.

 

[2] 인조식별자

 

   1. 개념 : 시스템에서 고유성을 보장하기 위해 인위적으로 생성된 값을 식별자로 사용하는 것

 

   2. 특징

      1) 단일 속성으로 구성되어 본질식별자보다 관리가 단순하다.

      2) 본질적 고유성을  나타내지 않으므로, 추가적인 인덱스나 제약 조건이 필요하다.

      3) 데이터 해석에 어려움이 있을 수 있다.

      4) 단순한 관리와 성능 최적화로 개발 편의성을 높일 수 있으나, 매번 바람직한 것은 아니다.

 

[3] 본질식별자와 인조식별자 비교

구분 본질식별자 인조식별자
정의 엔티티의 고유성을 나타내는 본질적인 속성을 식별자로 사용함 시스템에서 인위적으로 생성된 값을 식별자로 사용함
구성 요소 실제 데이터에서 도출된 속성(주민등록번호, 차량번호 등) 시스템에서 생성된 값(ID, Auto Increment, UUID 등)
해석 데이터의 의미를 포함하여 해석이 용이함 데이터의 본질적 의미를 포함하지 않아 해석이 어려움
고유성 데이터의 본질적 고유성을 보장함 본질적 고유성을 보장하지 않으며, 추가 제약 조건이 필요할 수 있음
관리 복잡성 여러 속성으로 구성되거나 복잡한 경우 관리·인덱싱이 어려울 수 있음 단일 속성으로 구성되어 관리와 인덱싱이 단순함
중복 방지 데이터 자체로 고유성을 보장하여 중복 데이터 방지 가능 추가적인 인덱스나 제약 조건을 통해 중복 방지 필요
사용 목적 데이터의 고유성과 의미를 유지해야 할 때 적합 본질식별자가 복잡하거나 관리가 어려울 때 대체용으로 사용
예시 주민등록번호, 차량번호, ISBN 등 주문번호, 시스템 생성 ID 등