[데이터 모델]
1. 데이터 모델의 이해
1-1. 모델링
1-1-1. 특징
1-1-2. 유의사항
1-1-3. 관점
1-2. 데이터베이스의 모델링 단계
1-2-1. 개념적 모델링
1-2-2. 논리적 모델링
1-2-3. 물리적 모델링
1-3. ERD
1-3-1. ERD 작성 순서
1-4. ANSI / SPARC 스키마 구조
1-4-1. 스키마의 3계층
1-4-2. 독립성
1-5. 데이터 모델의 구성요소 : 엔터티 (Entity)
1-5-1. 엔터티의 분류
1-6. 데이터 모델의 구성요소 : 속성 (Attribute)
1-6-1. 속성의 분류
1-6-2. 도메인
1-7. 데이터 모델의 구성요소 : 관계 (Relationship)
1-7-1. 관계의 구성
1-7-2. 교차 엔터티
1-7-3. 관계 체크사항
1-8. 식별자
1-8-1. 식별자의 분류
1-8-2. 식별자 관계와 비식별자 관계
1-8-3. 키(Key)
2. 데이터 모델과 SQL
2-1. 정규화
2-1-1. 이상현상
2-2-2. 함수적 종속
2-2-3. 정규화 단계
2-2. 관계와 조인의 이해
2-2-1. 조인
2-2-2. 계층형 데이터 모델
2-2-3. 상호배타적 관계
2-3. 모델이 표현하는 트랜잭션의 이해
2-3-1. 트랜잭션
2-3-2. 트랜잭션의 4대 특성 (ACID)
2-3-3. 트랜잭션의 격리 수준에 따른 문제점
2-4. Null 속성의 이해
2-4-1. Null의 개념
2-4-2. Null의 표기
2-5. 본질식별자와 인조식별자
2-5-1. 본질식별자와 인조식별자의 개념
2-5-2. 인조식별자의 장단점
1. 데이터 모델의 이해
1-1. 모델링
현실 세계의 정보를 약속된 표기법을 활용하여 데이터베이스의 구조로 표현하는 과정
📝 예시로 이해하기
학교에는 학생들이 있고, 학생들은 과목을 수강한다.
그리고 이러한 정보들을 데이터베이스에 저장하게 되는데, 이 때 저장을 위한 구조를 표현하는 과정을 모델링이라고 한다.
💡 즉, 현실 세계의 정보를 데이터베이스에 저장하기 위한 구조를 표현하는 과정이 모델링이라는 것이다.
1️⃣ 특징
🔹 단순화 : 누구나 쉽게 이해 가능 ➜ 단순해야 함
🔹 추상화 : 주요 특징을 간략하게 표현
🔹 명확화 : 모호하게 표현되지 않음 ➜ 컴퓨터에 저장이 되어야 하기 때문에
✔️ "단추명"으로 암기
2️⃣ 유의사항
🔹 유연성 : 변화에 유연한 대응 ➜ 학생이 추가되거나 이름이 변경되는 등의 변화에 유연하게 대응해야 함
🔹 유일성 : 중복 저장 X ➜ 동일한 학생이나 과목이 있으면 안됨
🔹 일관성 : 명확한 관계 ➜ 학생과 과목 간에 수강이라는 명확한 관계가 필요
3️⃣ 관점
🔹 데이터 관점 : 학생, 과목 등을 각각의 데이터로 바라보는 관점
🔹 프로세스 관점 : 업무 흐름 ➜ 학생이 과목을 수강한다. 라는 흐름의 관점
🔹 데이터와 프로세스의 상관 관점 ➜ 데이터와 프로세스를 동시에 바라보는 관점 ( CRUD 분석 기반 )
※ CRUD : Create, Read, Update, Delete
1-2. 데이터베이스의 모델링 단계
개념적 모델링 ➜ 논리적 모델링 ➜ 물리적 모델링
✔️ "개논물"로 암기
1️⃣ 개념적 모델링
🔹 현실 세계에 대한 인식을 추상적 개념으로 표현
🔹 ERD를 작성
※ ERD : 추상적 개념으로 표현하기 위한 "약속된" 표현법
2️⃣ 논리적 모델링
🔹 논리적 자료구조로 변환하며 정규화를 사용
※ 논리적 자료구조 : 행과 열, 테이블의 형태로 만드는 것
🔹 재사용성이 높음
3️⃣ 물리적 모델링
🔹 물리적 구조의 데이터로 변환
✔️ 물리적 모델링으로 갈수록 높은 수준의 구체화(낮은 수준의 추상화) 레벨을 가짐
⭐ 데이터 모델의 필수 구성요소 : 엔터티(Entity), 속성(Attribute), 관계(Relatitionship)
1-3. ERD
피터 첸(Peter Chen)에 의해 ERD 표기법이 고안됨 (IE 표기법, Barker 표기법 )

1️⃣ ERD 작성 순서
🔹엔터티 도출 ➜ 배치 ➜ 관계 설정 ➜ 관계명 기술 ➜ 관계 차수 기술 ➜ 필수여부 기술
- 엔터티 : 학생, 수강 등
- 배치 : 중요한 정보는 왼쪽 상단에 기술
✔️ "도배설명차필" 로 암기 (도배를 설명할 떄는 차가 필요하다)
1-4. ANSI / SPARC 스키마
스키마란 DB의 설계도를 의미한다.
1️⃣ 스키마의 3계층
🔹 외부 스키마 (=서브 스키마, 사용자 뷰)
- 사용자의 입장에서 여러 개의 외부 스키마가 존재함
📝 예시로 이해하기
입출금을 하기 위해 어플, ATM기, 은행 방문 등의 여러 방법을 사용하듯 스키마에도 여러 가지의 외부 스키마가 존재한다.
🔹 개념 스키마
- 여러 개의 외부 스키마는 하나의 전체적인 구조에 의해서 구성된다.
- DB 관리자에 의해 구성된다.
🔹 내부 스키마
- 개념스키마가 저장되는 물리적인 위치
- 물리적 저장장치 입장에서의 구조
2️⃣ 독립성
🔹 논리적 독립성
- 개념 스키마가 변경되어도 외부 스키마에는 영향이 없어야 함
📝 예시로 이해하기
입출금 시스템이 A 은행에서만 작업되다가, B 은행에서도 작업되도록 변경이 될 경우에도, 사용자에게는 영향이 없어야 한다.
🔹 물리적 독립성
- 내부 스키마가 변경되어도 개념 / 외부 스키마에는 영향이 없어야 함
📝 예시로 이해하기
물리적 저장장치가 노화되거나 확장해야 해서 내부 스키마가 변경이 될 경우에도 개념 / 외부 스키마에는 영향이 없어야 한다.
1-5. 데이터 모델의 구성 요소 : 엔터티 (Entity)
현실 세계에 존재하며 명확하게 구분 가능한 존재를 엔터티라 부름
➜ ex) 학생, 과목, 수강, 고객, 상품 등

🔹 특징
- 유일한 식별자를 보유해야 함 (예 : 반장, 학번 등)
- 인스턴스가 2개 이상인 집합 ➜ 데이터가 2개 이상이어야 함
- 2개 이상의 속성을 보유해야 함 (예 : 생년월일, 학번 등)
- 다른 엔터티와의 관계가 필수적입 (예 : 학생은 수강 / 과목 등과 관계가 연결이 되어야 함)
🔹 명명법
- 현업에서 사용하는 용어
- 약어 사용 지양
- 단수 명사
- 중복 없음
- 의미 명확
1️⃣ 엔터티의 분류
🔹 유무형에 따른 분류
- 유형 엔터티 : 물리적 형태가 존재함 (예 : 학생, 책, 고객)
- 개념 엔터티 : 형태는 없지만 개념적으로 구분 (예 : 과목, 학과, 부서)
- 사건 엔터티 : 특정 시점에 발생한 사건 (예 : 수강, 주문, 예약)
✔️ "개사유"로 암기
🔹 발생 시점에 따른 분류
- 기본 엔터티 : 다른 엔터티에 영향을 받지 않고 독립적으로 존재 (예 : 학생, 과목, 고객, 직원 등)
- 중심 엔터티 : 기본 엔터티와 행위 엔터티를 연결함 (예 : 수강신청, 주문 등)
※ 중심 엔터티는 독립적으로 존재할 수 없음
- 행위 엔터티 : 두 개 이상의 엔터티를 상속받아 생성되는 행위 (예 : 수강, 주문내역 등)
※ 행동이기 때문에 수정 사항이 많음
✔️ "기행중" 으로 암기 (기이한 행동을 하는 중)
1-6. 데이터 모델의 구성 요소 : 속성 (Attribute)
더 이상 분리되지 않는 최소의 데이터 단위 (원자성)
📝 예시로 이해하기
A 라는 학생이 수학도 듣고 과학도 듣는 경우
❌ 잘못된 저장 방식
| A | 수학, 과학 |
⭕ 올바른 저장 방식
| A | 수학 |
| A | 과학 |
💡 더 이상 분리되지 않도록 저장해야 한다.
🔹 특징
- 엔터티는 속성의 집합
- 1개의 속성은 1개의 속성 값
- 주식별자에 함수적 종속
※ 함수적 종속 : A 속성에 의해 B가 유일하게 결정됨
📝 예시로 이해하기
학번이라는 A 속성에 의해서 이름이라는 B 속성이 유일하게 결정되어야 한다.
- 업무에서 관리되는 정보
🔹 명명법
- 업무에 사용되는 명칭 사용
- 서술식 표현 금지
- 약어 사용 지양
- 유일성 (중복 X)
1️⃣ 속성의 분류
🔹 특성에 따른 분류
- 기본 속성 : 본래 가지고 있는 속성 (예 : 이름, 학번, 고객ID)
- 설계 속성 : 필요로 인하여 도출된 속성 (예 : 주문번호, 일련번호)
- 파생 속성 : 변형되어 만들어진 속성으로 계산된 값들이 해당됨 (예 : 합계, 평균)
🔹 분해 가능 여부에 따른 분류
- 단일 속성 : 하나의 의미로 구성됨 (예 : 이름, 학번)
- 복합 속성 : 여러 개의 하위 속성으로 나눌 수 있음 (예 : 주소 ➜ 시/도, 도로명, 건물번호)
- 다중값 속성 : 여러 값을 가질 수 있으며 별도 테이블로 분리하여 관리함 (예 : 전화번호, 이메일, 취미)
🔹 구성방식에 따른 분류
- 기본키(PK, Primary Key) 속성 : 인스턴스를 유일하게 구별 가능하게 하는 속성 (예 : 주식별자, 반장)
- 외래키(FK, Foreign Key) 속성 : 다른 엔터티의 관계로 연결된 속성
- 일반 속성 : PK / FK 가 아닌 나머지 속성
💡 자식 엔터티는 부모의 기본키를 외래키로 포함
2️⃣ 도메인
속성이 가질 수 있는 데이터의 타입과 크기에 대한 제한 사항을 정의 ➜ 데이터 무결성 보장
1-7. 데이터 모델의 구성 요소 : 관계 (Relationship)
엔터티와 엔터티 간의 논리적 연관성
🔹 존재적 관계 : 다른 엔터티가 존재해야만 존재할 수 있는 관계 (예 : 사원, 부서)
🔹 행위적 관계 : 행동, 동작, 사건에 의해 발생하는 관계 (예 : 학생 - 수강한다 - 수강)
💡 ERD에서는 존재적 관계와 행위적 관계를 구분하지 않으나 UML에서는 구분함
1️⃣ 관계의 구성
🔹 관계명(Membership) : 관계의 이름
🔹 차수(Cardinality) : 엔터티간의 참여자의 수를 표현 (예 : 1:1, 1:M, M:N)

🔹 선택사항(Optionality) : 엔터티가 관계에 항상 참여하는지의 여부 (예 : O ➜ 선택적 참여)
✔️ "관차선"으로 암기
2️⃣ 교차 엔터티
M:N의 관계를 표현하기 위하여 생성된 엔터티 (관계형 DB는 M:N 관계의 표현이 불가능함)

3️⃣ 관계 체크사항
🔹 두 개의 엔터티 사이에 관심 있는 연관규칙이 있는가?
🔹 두 개의 엔터티 사이에 정보와 조합이 발생하는가?
🔹 관계연결에 대한 규칙이 서술되어 있는가?
🔹 관계연결을 가능하게 하는 동사가 있는가?
1-8. 식별자
인스턴스를 유일하게 구분할 수 있는 속성 또는 속성의 집합
1️⃣ 식별자의 분류
🔹 대표성 여부에 따른 분류
- 주식별자(=기본키, PK) : 대표성, 유일성, 희소성, 불변성, 존재성(Not Null)을 만족
- 보조식별자(=대체키, AK) : 유일하게 구분 가능하지만, 대표성이 없는 식별자
🔹 자가 생성 여부에 따른 분류
- 내부식별자 : 엔터티 내부에서 스스로 생성
- 외부식별자(=외래키, FK) : 다른 엔터티로부터 받아오는 식별자
🔹 속성의 수에 따른 분류
- 단일식별자 : 하나의 속성으로 구성된 식별자
- 복합식별자 : 둘 이상의 속성으로 구성된 식별자
🔹 대체 여부에 따른 분류
- 본질식별자 : 프로세스 상에서 현실로 존재하는 식별자
- 인조식별자 : 인위적으로 생성한 식별자
2️⃣ 식별자 관계와 비식별자 관계
🔹 식별자 관계(= 강한 연결 관계)
- 부모 엔터티로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하며, Null이 있으면 안됨
- 부모 엔터티와 자식 엔터티가 같은 생명주기를 가짐
➜ 부모 엔터티가 사라지면 자식 엔터티도 사라짐
🔹 비식별자 관계(= 약한 연결 관계)
- 부모 엔터티로부터 받은 속성을 일반 속성으로 사용하는 경우
- 부모 엔터티와 자식 엔터티가 서로 다른 생명주기를 가짐
➜ 부모 엔터티가 사라져도 자식 엔터티는 남아있을 수 있다
💡 식별자는 부모와 자식간의 상호작용이 의무이나, 비식별자는 선택사항

💡 IE 표기법에서는 점선, Barker 표기법에서는 Bar(|) 여부로 비식별자 관계 파악
3️⃣ 키(Key)

🔹 후보키(Candidate Key) : 유일성과 최소성을 만족하는 속성 또는 속성들의 조합 (예 : 학번, 주민번호, 과목명)
🔹 기본키(Primary Key) : 후보키 중에서 대표성을 가지는 주 키(Main Key) ➜ 개체무결성 (예 : 학번)
※ 개체무결성 : Null 값이나 중복된 값 저장 불가
🔹 대체키(Alternate Key) : 기본키를 제외한 나머지 후보키 (예 : 주민번호)
🔹 슈퍼키(Super Key) : 유일성은 만족하지만 최소성은 만족시키지 못하는 키 (예 : 학번&주민번호 ➜ 둘 중에 하나만 있어도 유일성 만족)
🔹 외래키(Foreign Key) : 다른 테이블의 기본키를 참조하는 키 ➜ 참조무결성 (예 : 학번)
※ 참조무결성 : 참조할 수 없는 외래키 값을 가질 수 없음
💡 식별자는 논리 모델링 단계에서 사용하고, 키는 물리 모델링 단계에서 사용함
2. 데이터 모델과 SQL
-1. 정규화
데이터베이스의 이상현상을 방지하기 위하여 데이터 중복을 최소화하여 테이블을 분리하는 방법
✔️ 엔터티(Entity) = 테이블(Table) = 릴레이션(Relation)
1️⃣ 이상현상(Anomaly)
🔹 삽입이상 : 데이터 삽입 시, 의도하지 않은 값들도 삽입되는 현상
🔹 삭제이상 : 데이터 삭제 시, 의도하지 않은 값들도 삭제되는 현상
🔹 갱신이상 : 일부 데이터만 갱신되어 모순이 발생하는 현상
2️⃣ 함수적 종속
A 속성에 의해 B가 유일하게 결정됨
➜ A를 결정자라 하고 B를 종속자라 함
🔹 완전 함수적 종속 : 종속자가 기본키의 모든 속성에 종속적인 경우
🔹 부분 함수적 종속 : 종속자가 기본키의 일부 속성에 종속적인 경우

3️⃣ 정규화 단계
제1정규화 ➜ 제2정규화 ➜ 제3정규화 ➜ BCNF ➜ 제4정규화 ➜ 제5정규화

🔹 제1정규화 : 도메인이 원자 값만으로 구성
🔹 제2정규화 : 부분적 함수 종속을 제거하여 완전 함수 종속을 만족
🔹 제3정규화 : 이행 함수 종속 관계를 제거
🔹 BCNF : 결정자가 모두 후보키가 되도록 분해
🔹 제4정규화 : 다치 종속의 제거
🔹 제5정규화 : 조인 종속성을 이용
✔️ "두부이겨다줘 = 도부이결다조"로 암기
🔥 1,2,3 정규화 외 나머지 정규화는 시험에 거의 출제되지 않음
2-2. 관계와 조인의 이해
1️⃣ 조인(Join)
🔹 서로 관계가 있는 테이블을 SQL로 연결해서 데이터를 조회하는 방법
🔹 정규화로 분해가 된 테이블들은 조인 성능이 낮아질 수 있음 ➜ 반정규화를 수행해서 성능을 유지할 수 있음
2️⃣ 계층형 데이터 모델
🔹 같은 테이블들을 참조하여 두 개의 테이블을 조인하는 관계
🔹 계층형 질의 혹은 셀프 조인 활용

3️⃣ 상호배타적 관계
🔹 두 테이블 중 하나의 테이블만 상속될 수 있는 관계

2-3. 모델이 표현하는 트랜잭션의 이해
1️⃣ 트랜잭션
데이터베이스에서의 하나의 논리적인 작업 단위
🔹 Commit : 트랜잭션 성공적으로 끝났음을 알리고 데이터베이스에 저장
🔹 Rollback : 트랜잭션 중 오류가 발생하여 이전 상태로 되돌림
✔️ 트랜잭션의 요구사항들은 논리적 모델링 단계에서 모두 반영되어야 함
2️⃣ 트랜잭션의 4대 특성 (ACID)
🔹 원자성(Atomicity) : 수행되거나 전혀 수행되지 않아야 함(All or Nothing)
🔹 일관성(Consistency) : 트랜잭션 실행 전후로 오류가 없어야 함
🔹 고립성(Isolation) : 트랜잭션끼리 서로 간섭하면 안됨
🔹 지속성(Durability) : 수행된 결과는 영구적으로 저장됨
🔥 1 / 2 과목에 다 출제되는 경우가 있음
3️⃣ 트랜잭션의 격리 수준에 따른 문제점
🔹 Dirty Read : 아직 실행이 완료되지 않은 데이터를 읽는 경우
🔹 Non-Repeatable Read : 같은 쿼리를 두 번 수행하였을 때, 결과가 달라지는 현상
🔹 Phantom Read : 같은 쿼리를 두 번 수행하였을 때, 행의 개수가 바뀌는 현상
2-4. Null 속성의 이해
1️⃣ Null의 개념
🔹 미 정의된 값
🔹 0이나 빈칸과는 다른 개념
🔹 비교 불가
🔹 연산 불가
🔹 집계함수에서 제외
2️⃣ Null의 표기
🔹 IE 표기법 : Null 표현 여부 확인 불가
🔹 Barker 표기법 : Null 허용은 o / Null 비허용은 *

➜ 생년월일과 수강신청일자는 Null 허용, 이름은 null 비허용
2-5. 본질식별자와 인조식별자
1️⃣ 본질식별자와 인조식별자의 개념
🔹 본질식별자 : 프로세스 상에서 현실로 존재하는 식별자
🔹 인조식별자 : 인위적으로 생성한 식별자
2️⃣ 인조식별자의 장단점
🔹 장점 : 추가적 연산 없이 실제 비즈니스와 무관하게 설계 가능 ➜ 개발 및 유지보수성 용이
🔹 단점 : 데이터 중복 가능성 ➜ 불필요한 인덱스 생성
🔗 출처
[SQLD 완벽 요약강의]
'자격증 > SQLD' 카테고리의 다른 글
| [SQLD][아답터] 3과목 - 2. 통계분석 (0) | 2026.05.17 |
|---|---|
| [SQLD][아답터] 3과목 - 1. R 기초와 데이터 마트 (0) | 2026.05.10 |
| [SQLD][아답터] 2과목 - 3. 관리 구문 (2) | 2026.04.24 |
| [SQLD][아답터] 2과목 - 2. SQL 활용 (6) | 2026.04.15 |
| [SQLD][아답터] 2과목 - 1. SQL 기본 (3) | 2026.04.11 |