SQLD 1과목(1) | 데이터 모델링의 이해

2025. 2. 18. 17:55기반기술/Database

목차

1. 데이터 모델의 이해

1-1. 모델링이란?

1-2. 모델링의 특징 : 추상화, 단순화, 명확화 

1-3. 모델링의 세 가지 관점 : 데이터, 프로세스, 데이터vs프로세스 관점 

1-4. 모델링의 세 가지 단계 : 개념적 > 논리적 > 물리적  

1-5. 데이터의 독립성 : 외부 스키마-논리적 독립성-개념 스키마-물리적 독립성-내부 스키마

1-6. ERD (Entitiy Relationshop Diagram)

2. 엔터티 (Entity)

2-1. 엔터티란? 식별이 가능한 객체

2-2. 엔터티의 특징 

2-3. 엔터티의 분류 : 유형/무형, 발생시점에 따라

3. 속성 (Attribute)

3-1. 속성이란? 엔터티의 특징을 나타내는 최소의 데이터 단위

3-2. 속성값 : 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터

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

3-4. 속성의 분류 : 특성, 구성방식에 따라 

3-5. 도메인 : 속성이 가질 수 있는 속성값의 범위

4. 관계 (Relationship)

4-1. 관계란? 엔터티와 엔터티 간의 연관성

4-2. 관계의 분류 : 존재관계, 행위관계 

4-3. 표기법 : 관계명, 관계차수, 관계선택사양  

5. 식별자 (Identifiers)

5-1. 식별자란? 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성

5-2. 주식별자 :기본키 (Primary key)에 해당하는 속성, 유일성/최소성/불변성/존재성 

5-3. 식별자 분류  : 대표성여부, 스스로생성여부, 단일속성여부, 대체여부 

5-4. 식별자 관계 vs. 비식별자 관계 


 

1. 데이터 모델의 이해

1-1. 모델링이란?

  • 모델링: 현실세계를 단순화하여 표현하는 기법
  • 모델링이 갖춰야 할 조건: 현실 세계를 반영, 단순화 표현, 관리하고자 하는 데이터를 모델로 설계  

1-2. 모델링의 특징

  • 추상화: 현실세계의 아이디어나 개념을 일정한 형식으로 간략하게 표현
  • 단순화: 복잡한 현실세계를 단순하고 쉽게 표현
  • 명확화: 불분명함을 제거하고 명확하게 표현  

1-3. 모델링의 세 가지 관점

  • 데이터 관점 (What) 
  • 프로세스 관점 (How)
  • 데이터와 프로세스의 상관 관점: 프로세스 흐름에 따라 데이터가 어떤 영향을 받는지 모델링 

1-4. 모델링의 세 가지 단계

  • 개념적 데이터 모델링 (Conceptual Data Modeling)
    • 비즈니스 개념과 관계를 정의하는 단계
    • ERD에서 엔터티(개체)와 관계를 정의
    • 아직 구체적인 데이터 타입이나 키, 정규화 등을 고려하지 않음
  • 논리적 데이터 모델링 (Logical Data Modeling)
    • 개념적 모델을 좀 더 체계적으로 정리, 재사용성이 높다. 
    • 정규화(Normalization)를 고려하고, 속성을 정의하며, 키를 설정
    • 논리적 모델링은 어떤 데이터 모델(RDB, NoSQL, Graph DB 등)을 사용할지 반영하여 설계하지만, 어떤 구체적으로 어떤 DBMS를 사용할지에 대한 결정을 반영하지 않는다. 예를 들어 관계형 모델을 따른다고 가정하지만, 특정 DBMS의 문법이나 기능(예: MySQL, PostgreSQL의 특정 기능 등)은 고려하지 않음. 즉, 이 단계까지는 어떤 RDBMS를 사용할지 결정되지 않았을 수도 있다. 
  • 물리적 데이터 모델링 (Physical Data Modeling)
    • 논리적 모델을 실제 사용할 DBMS에 맞게 설계
    • 특정 DBMS의 특성을 반영 (예: MySQL InnoDB 사용, PostgreSQL의 JSONB 컬럼 활용 등)
    • 인덱스, 파티셔닝, 스토리지 엔진 같은 DBMS별 최적화 작업 수행

1-5. 데이터의 독립성

외부 스키마 - 논리적 독립성 - 개념 스키마 - 물리적 독립성 - 내부 스키마

  • 3단계 스키마 구조
    • 외부 스키마 : 사용자의 관점   
    • 개념 스키마 : 통합된 관점 (모든 사용자의 관점)  
    • 내부 스키마 : 물리적 관점 (실직적인 데이터 저장구조, 컬럼 정의, 인덱스 등)
  • 데이터 독립성
    • 논리적 독립성: 개념 스키마가 변경 되어도 외부 스키마는 영향 받지 않는다. 
    • 물리적 독립성: 내부 스키마가 변경 되어도 외부/개념 스키마는 영향 받지 않는다. 

1-6. ERD 

  • ERD (Entitiy Relationshop Diagram): 시스템에 어떤 엔터티들이 존재하며 그들 간에 어떤 관계가 있는지를 나타내는 다이어그램
  • ERD 작성 순서: 엔터티 도출 > 엔터티 배치 > 엔터티 간 관계 설정 > 관계명 > 관계 참여도 > 관계 필수 여부 기입   
  • ERD 표기 방식: Peter Chen, IE/Crow's Foot, UML, Case Method/Baker 등 

 

2. 엔터티 (Entity)

2-1. 엔터티란?

  • 식별이 가능한 객체
  • 업무에서 쓰이는 데이터를 용도별로 분류한 그룹 
  • 예: 회원, 배송지, 상품, 상품가격 등..
  • 엔터티-Table, 인스턴스-Row, 속성-Column 

2-2. 엔터티의 특징 

  • 업무에 쓰이는 정보여야 함
  • 유니크함을 보장할 수 있는 식별자가 있어야 함
  • 2개 이상의 인스턴스를 가지고 있어야 함
  • 반드시 속성을 가지고 있어야 함
  • 다른 엔터티와 1개 이상의 관계를 가지고 있어야 함

2-3. 엔터티의 분류

분류 기준 속성 분류 설명 예시 속성명
유형/무형 유형 엔터티 물리적인 형태 존재 상품, 회원 
개념 엔터티 물리적인 형태 없음 부서, 학과
사건 엔터티 행위를 함으로써 발생 주문, 이벤트응모
발생시점  기본 엔터티 업무에 원래 존재하는 정보, 독립적 상품, 회원, 사원, 부서
중심 엔터티 기본 엔터티로부터 파생되고, 행위 엔터티를 생성 주문, 매출, 계약
행위 엔터티 2개 이상의 엔터티로부터 파생 주문 내역, 이벤트 응모

 

 

3. 속성 (Attribute)

3-1. 속성이란?

  • 속성: 엔터티의 특징을 나타내는 최소의 데이터 단위
  • 사물이나 개념의 특징을 설명해줄 수 있는 항목들
  • 속성은 더 이상 쪼개지지 않는 레벨이어야 하고, 프로세스에 필요한 항목이어야 한다. 

3-2. 속성값

  • 속성값: 엔터티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터
  • 하나의 속성은 하나의 속성값만 가질 수 있다. 만약 하나의 속성이 여러개의 속성값을 가지면 별도의 엔터티로 분류.
  • 예: 가수 엔터티(테이블) - 이름, 생년월일, 소속사 (속성) - 아이유, 930516, SM (속성값)

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

  • 한 개의 엔터티는 두 개 이상의 인스턴스를 갖는다. 
  • 한 개의 인스턴스는 두 개 이상의 속성을 갖는다. 
  • 한 개의 속성은 한 개의 속성값을 갖는다. 

3-4. 속성의 분류 

분류 기준 속성 분류 설명 예시 속성명
특성  기본속성 업무 프로세스 분석을 통해 바로 정의가 가능한 속성 상품명, 상품가격
설계속성 업무에 존재하지는 않지만 설계하다보니 필요하다고 판단되어 도출해낸 속 상품번호
파생속성  다른 속성의 속성값을 계산하거나 특정한 규칙으로 변형하여 생성한 속성 재고개수
구성방식  PK속성 엔터티의 인스턴스들을 식별할 수 있는 속성 회원번호
FK속성 다른 엔터티의 속성에서 가져온 속성 회원등급코드
일반속성 PK, FK를 제외한 속성 회원명, 아이디

 

3-5. 도메인 

  • 도메인: 속성이 가질 수 있는 속성값의 범위 (예: 학점 속성의 도메인 - 0.1~4.5, 우편번호 - 다섯자리 숫자) 
  • 용어사전: 속성명을 정의할 때 명확한 의미의 이름을 부여하고 다른 엔터티와의 혼란을 예방하기 위해 이용 
  • 시스템 카탈로그: 사용자 테이블과는 별개로 시스템 자체에 관련이 있는 데이터를 담고 있는 DB, SELECT만 가능

 

4. 관계 (Relationship)

4-1. 관계란?

  • 관계: 엔터티와 엔터티 간의 연관성

4-2. 관계의 분류

  • 존재 관계: 엔터티 존재 자체로 연관성이 있는 관계 (학생-학과) 
  • 행위 관계: 특정한 행위를 함으로써 연관성이 생기는 관계 (학생-출석부) 

4-3. 표기법

  • 관계명: 관계의 이름 (주문한다, 소속된다, 출석한다)
  • 관계차수: 관계에 참여하는 수
    • 1:1 : 회원-회원상세 
    • 1:M : 상품-상품가격이력 
    • M:N : 학생-수강생 
  • 관계선택사양: 필수인지 선택인지 여부
    • 필수적 관계: 참여자가 반드시 존재해야하는 관계 (주문-주문상품)
    • 선택적 관계: 참여자가 없을 수도 있는 관계 (학생-출석부)

 

5. 식별자 (Identifiers)

5-1. 식별자란?

  • 식별자: 각각의 인스턴스를 구분 가능하게 만들어주는 대표격인 속성
  • 예: 학번, 상품번호

5-2. 주식별자

  • 주식별자: 기본키 (Primary key)에 해당하는 속성
  • 하나의 속성 또는 여러 개의 속성이 조합되어 주식별자가 될 수 있다. 
  • 특징
    • 유일성: 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 해야한다. 
    • 최소성: 유일성을 보장하는 최소 개수의 속성이어야 한다. 
    • 불변성: 속성값이 되도록 변하지 않아야 한다. 
    • 존재성: 속성값이 NULL일 수 없다. 

5-3. 식별자 분류 

분류 기준 식별자 분류 설명
대표성 여부 주식별자 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자
다른 엔터티와 참조관계로 연결 
보조식별자 인스턴스를 식별할 수는 있지만 대표 식별자가 아님
다른 엔터티와 참조관계로 연결되지 않음
스스로 생성됐는지 여부 내부식별자 엔터티 내부에서 스스로 생성된 식별자
외부식별자 다른 엔터티 내부에서 온 식별자, 연결고리 역할
단일 속성 여부 단일식별자 하나의 속성으로 구성된 식별자
복합식별자 두 개 이상의 속성으로 구성된 식별자
대체 여부  본질식별자 업무 프로세스에 존재하는 식별자, 원조식별자
인조식별자 주식별자 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자, 대리 식별자 (~번호) 

 

5-4. 식별자 관계 vs. 비식별자 관계

식별자 관계 비식별자 관계
부모엔터티의 식별자가
자식엔터티의 주식별자가 되는 관계 (PFK)
부모엔터티의 식별자가
자식엔터티의 일반속성이 되는 관계
주식별자는 NULL이 될 수 없으므로
부모엔터티가 있어야 자식엔터티가 존재할 수 있다
일반속성은 NULL이될 수 있으므로
부모 엔터티가 없는 자식 엔터티 생성이 가능하다
게시글(게시글번호)-댓글(게시글번호, 댓글순번) 상품(상품번호)-주문(주문번호, 순번)  

 

 

<데이터베이스 모델링시 관계 설정에서 고려해야할 사항 정리>

1. 카디널리티: 1:1, 1:N, M:N

2. 관계 선택사양 / ERD 내 관계의 참여도: 엔티티가 관계에 반드시 참여해야 하는지 여부

- 필수 참여: 모든 엔티티가 반드시 관계에 참여해야 함, 주문-주문상품 

- 선택적 참여: 어떤 엔티티는 관계에 참여하지 않을 수도 있음, 학생-학생출석여부 

- 따라서 카디널리티까지 고려하면 1:1, 1:N, M:N, 1:1(o, 선택적 참여), 1:N(o)의 관계가 있을 수 있는 것

- ERD 표기 방식: 필수 참여 테이블 쪽→ 두 줄(║), 선택적 참여 테이블 쪽→ 한 줄 + 동그라미(─○)

 

3. 식별/비식별 관계: PFK 여부

- 부모의 키를 자식에서 PK로 사용하는지 일반 속성으로 사용하는지 

- ERD 표기방식: 식별→실선(강한 연결관계), 비식별→점선(약한 연결관계)

 

4. 옵셔널리티: 자식 테이블에서 부모 FK 컬럼 값의 NULL 허용여부 

- Optional: nullable, Mendatory: not null

- 식별관계인 경우 부모는 당연히 mendatory이고, 비식별 관계인 경우 optional, mendatory 선택이 가능해진다. 

- ERD 표기방식: 부모 컬럼에 not null 설정 (논리적 ERD에서 컬럼앞에 *로 표현되는 등)