● 데이터 모델의 이해
[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 등 |