[SQLD] 1과목 - 데이터 모델링의 이해 요약
한국데이터산업진흥원 게시자료에 기반한 요약 정리
1과목 SQLD시험 50문제 중 10문제 출제
과락할 확률 높음
개념위주 출제
1과목. 데이터 모델링의 이해
제1장 데이터 모델의 이해
1절 데이터 모델의 이해
모델링 정의
복잡한 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법 의해 표현 하는 기법
현실세계 ㅡ 추상화, 단순화, 명확화 ㅡ> 모델(MODEL)
추상화: 일정한 형식에 맞춰 표현함
단순화: 제한된 표기법이나 언어로 표현함
명확성: 이해가 쉽게 표현함
모델링 관점
데이터 관점(What, Data), 프로세스 관점(How, Process), 데이터와 프로세스의 상관관점
데이터 관점: 업무와 데이터 및 데이터 사이의 관계
프로세스 관점: 진행되고 있거나 진행되어야 하는 업무
상관 관점: 데이터에 대한 업무 처리 방식의 영향
데이터 모델링
- 정보 시스템을 구축하기 위한 데이터관점의 업무 분석 기법
- 현실세계의 데이터(What)에 대해 약속된 표기법에 의해 표현하는 과정
- 데이터베이스를 구축하기 위한 분석/설계의 과정
데이터 모델이 제공하는 기능 : 가시화, 명세화, 구조화, 문서화
데이터 모델링이 중요성
1. 파급효과 (Leverage)
2. 복잡한 정보 요구사항의 간결한 표현 (Conciseness) : 정보 요구사항과 한계를 간결하게 표현하는 도구
3. 데이터 품질 (Data Quality)
데이터 모델링 유의점 ⭐
1. 중복 (Dupication) : 유일성, 데이터 중복(Duplication) 저장 방지
2. 비유연 (Inflexibility) : 데이터 정의와 데이터 사용 프로세스 분리
3. 비일관성 (Inconsistency) : 데이터의 중복이 없더라도 비일관성은 발생함
이해관계자
1. 개발자
2. DBA
3. 모델러
4. 현업 업무 전문가, 완성된 모델을 정확히 해석할 수 있어야 함
데이터 모델링 3단계 ⭐⭐
시간에 따라 진행되는 과정으로서 추상화 수준에 따라 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
1. 개념적 모델링
- 추상화 수준이 높다
- 업무중심적이고 포괄적인 수준의 모델링 진행
- 전사적 데이터 모델링
- EA 수립시 많이 이용
- 엔터티와 속성을 도출하고 ERD를 작성함
2. 논리적 모델링
- 시스템으로 구축하고자 하는 업무에 대해 Key, 속성, 관계등을 정확하게 표현
- 재사용성이 높다
- 식별자를 도출하고 속성과 관계 등을 정의한다
- 정규화를 수행하여 데이터 모델의 독립성과 재사용성 확보
- 논리 데이터 모델은 데이터 모델링 완료 상태
3. 물리적 모델링
- 실제로 데이터베이스에서 이식할 수 있도록 성능, 저장 등 물리적인 성격을 고려하여 설계한다.
- DB를 구축한다
- 성능 및 보안 등 물리적인 성격 고려
프로젝트 생명주기(Life Cycle)
계획 > 분석 > 설계 > 개발 > 테스트 > 전환/이행 단계
계획과 분석 단계 ▶ 개념적 모델링
분석 단계 ▶ 논리적 모델링
설계 단계 ▶ 물리적 모델링
데이터 독립성의 필요성
아래와 같은 이유 때문에 . . .
1. 유지보수 비용증가
2. 데이터 중복성 증가
3. 데이터복잡도 증가
4. 요구사항 대응 저하
데이터 독립성 확보 효과
- 각 VIEW의 독립성을 유지하고, 계층별 VIEW에 영향을 주지 않고 변경이 가능
- 단게별 Schema에 따라 데이터 정의어(DDL)와 데이터 조작어(DML)가 다름을 제공
데이터베이스의 3단계 구조 ⭐
데이터 독립성 확보를 목표로 함
구조, 독립성, 사상
1. 구조
- 외부 단계 : 사용자와 가까운 단계
- 개념적 단계
- 내부적 단계 : 데이터가 물리적으로 저장된 방법에 대한 스키마 구조
🔍 3층 스키마 (3-level Schema)
외부 스키마: 각 사용자 단계의 개인적 DB 스키마, 사용자 관점, 응용 프로그램이 접근하는 DB를 정의함
개념 스키마: 조직 전체의 통합된 DB 스키마, 설계자 관점 데이터 모델링의 지향점
내부 스키마: 물리적으로 데이터가 저장되는 방법을 표현하는 스키마, 개발자 관점, 물리적 저장 구조임
2. 데이터 독립성
논리적 독립성: 외부 스키마가 개념 스키마의 변화에 무관함, 논리적 사상 없음
물리적 독립성: 개념 스키마가 내부 스키마의 변화에 무관함, 물리적 사상 없음
3. 속성(Mapping)
상호 독립적인 개념을 연결시켜주는 다리
- 외부적/개념적 사상(논리적 사상)
- 개념적/내부적 사상(물리적 사상)
데이터 모델링 3요소
엔터티, 관계, 속성
- 업무가 관여하는 어떤 것 (Things) ▶ 엔터티
- 어떤 것이 가지는 성격 (Attributes) ▶ 관계
- 업무가 관여하는 어떤 것 간의 관계 (Relationships) ▶ 속성
데이터 모델 표기법 ERD(Entity Relationship Diagram)
업무분석에서 도출된 엔터티와 엔터티 관계를 이해하기 쉽게 도식화된 다이어그램으로 표시하는 방법
데이터의 흐름과 프로세스와의 연관성을 이야기하는데 가장 중요한 표기법이자 산출물
1) 엔터티는 사각형 2) 관계는 마름모 3) 속성은 타원형으로 표현, 현실의 데이터 모두 표현 가능
ERD 작업 순서
1. 엔터티를 그린다
2. 엔터티를 적절하게 배치
3. 엔터티 간 관계 설정
4. 관계명 기술
5. 관계의 참여도 기술
관계차수 표현 ( 1:1, 1:N, M:N )
6. 관계의 필수여부 기술
관계선택사양 표현 (필수, 선택)
ERD 배치
사람의 눈에 따라, 가장 중요한 엔터티를 왼쪽 상단에 배치하고
이것을 중심으로 다른 엔터티를 나열하면서 전개하면
사람의 눈이 따라가기에 편리한 데이터 모델링을 전개할 수 있다.
좋은 모델링의 요건
1. 완전성
2. 중복 배제
3. 업무 규칙
4. 데이터 재사용
5. 의사소통
6. 통합성
2절 엔터티 (Entity)
엔터티 정의
- 업무에서 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것
- 명사형 (ex. 과목, 강사, 사건)
- 인스턴스의 집합
엔터티 특징 ⭐
- 업무에서 필요로 하고 관리하고자 하는 정보.
- 유일한 식별자에 의해 식별이 가능 해야 한다.
- 2개 이상의 인스턴스를 포함한다. (영속적으로 존재하는 인스턴스의 집합)
- 업무 프로세스에 의해 이용되어야 함
- 속성을 가져야 함 : 속성이 존재하지 않는 오브젝트는 엔터티가 될 수 없다.
- 엔터티는 다른 엔터티와 최소 한 개 이상의 관계를 가진다 : 엔터티가 관계가 없으면, 잘못된 엔터티거나 관계가 누락 되었을 가능성이 높다.
엔터티 분류
1. 유무형에 따른 분류 : 유형, 개념, 사건 엔터티
- 유형 엔터티 : 물리적 형태가 있고 지속적으로 활용되는 엔터티
- 개념 엔터티 : 물리적 형태가 없는 엔터티
2. 발생시점에 따른 분류 :기본, 중심, 행위 엔터티
- 기본 엔터티(Key Entity)
독립적으로 생성되는 엔터티
- 중심 엔터티(Main Entity)
기본 엔터티와 행위 엔터티의 중간에 존재하는 엔터티
- 행위 엔터티(Active Entity, 사건 엔터티)
2개 이상의 부모 엔터티로부터 발생함,
비즈니스 프로세스를 실행하면서 생성되는 엔터티,
지속적으로 정보가 추가되고 변경되어 데이터양이 가장 많음
엔티티 명명(Naming) 규칙
1. 업무에서 사용하는 용어
2. 약어 사용 지양
3. 단수 명사
4. 유일성 보장 - 모든 엔터티에서 유일하게 이름이 부여 되어야 함
5. 명확성 - 생성의미대로 이름을 부여
3절 속성 (Attribute)
속성 정의 ⭐
- 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위
- 엔터티를 설명하고, 인스턴스의 구성요소가 된다.
엔터티와 인스턴스 및 속성과 속성값 간의 관계
- 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다.
- 한 개의 엔터티는 두 개 이상의 속성을 갖는다.
- 한 개의 속성은 한 개의 속성값을 갖는다.
속성 표기법
엔터티 내에 이름을 포함하여 포함하면 안된다.
- IE 표기법
- Barker 표기법
속성 특징
- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보
- 정규화 이론 : 주식별자에 함수적 종속성을 가져야 함
- 속성 값 하나만 가진다.
여러 개의 값이 있는 다중값이면, 별도의 엔터티를 이용하여 분리
속성 종류
1. 특성에 따른 분류 ⭐
- 기본속성
비즈니스 프로세스에서 도출되는 본래의 속성
예) 회원ID, 이름, 계좌번호, 주문일자 등
- 설계속성
데이터 모델링 과정에서 업무 규칙화를 위해 발생하는 속성,
유일한 값을 부여함
예) 상품코드, 지점코드 등
- 파생속성
다른 속성에 의해 만들어지는 속성
(↔ 저장 속성은 유도 속성을 생성하는 데 사용되는 속성)
예) 합계, 평균 등
2. 분해 가능 여부에 따른 분류
- 단일 속성 : 하나의 의미, 더 이상 다른 속성들로 구성될 수 없는 단순한 속성
- 복합 속성 : 여러의 의미, 여러 세부 속성 들로 구성, 단일 속성으로 분해 가능
- 단일값 : 하나의 값, 속성 하나에 한 개의 값을 가지는 경우
- 다중값 : 여러 값, 여러 개의 값을 가지는 경우, 엔터티로 분해 가능
3. 엔터티 구성방식에 따른 분류
- PK속성 : 기본키, 엔터티를 식별할 수 있는 속성
- FK속성 : 외래키, 다른 엔터티와의 관계에서 포함된 속성
-일반 속성 : 엔터티에 포함되어 있고 PK, FK에 포함되지 않은 속성
도메인(Domain) ⭐
속성이 가질 수 있는 값의 범위
엔터티 내에서 속성에 대한 데이터타입, 크기, 제약사항을 지정하는 것
속성의 명명(Naming)
1. 업무에서 사용하는 이름
2. 명사형 사용 - 서술식 속성명 사용 X
3. 약어 사용 지양
4. 전체 데이터모델에서 유일성 확보
4절 관계 (Relationship)
관계 정의
- 엔터티와 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태
- 엔터티 간의 논리적인 관련성
- 동사형
관계의 페어링
인스턴스 간 개별적 관계
관계 표기법 ⭐
관계명, 관계차수, 관계선택사양
1. 관계명
- 관계의 이름
- 애매한 동사 사용 X
- 현재형 표현 사용
2. 관계차수
- 1:1, 1:M (One To Many), M:N (Many TO Many)
- 관계 내 튜플의 전체 개수
튜플이란?
- 1은 직선 多는 삼발로 표시
O = or (있을수도 있고 or 없을수도 있다.)
3. 관계선택사양
필수관계, 선택관계
필수는 I 선택은 O로 표시
관계 종류
1. ERD 기준: 표기구분 안함
- 존재 관계: 엔터티 간의 상태
- 행위 관계: 엔터티 간에 발생하는 행위
2. UML(Unified Modeling Language) 기준
- 연관 관계(Association): 실선 표기
- 의존 관계(Dependency): 점선 표기
3. 식별자에 따른 분류 ⭐
- 식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 주식별자로 사용
🔍약한 엔터티 : 부모 엔터티에 종속되어 존재 (↔ 강한 엔터티는 독립적으로 존재함)
- 비식별 관계 : 부모 엔터티의 식별자를 자식 엔터티에서 일반 컬럼으로 참조 사용, 약한 종속 관계
🔍 식별 관계만으로 연결되면 주식별자 수가 많아질 수밖에 없으므로
1) 관계 강약 분석
2) 자식 엔터티의 독립 PK 필요성
3) SQL 복잡성과 개발 생산성 고려 필요
관계 읽기
기준엔터티를 한 개One또는 각Each로 읽는다.
대상 엔터티의 관계참여도 즉 개수를 읽는다.
관계선택사양과 관계명을 읽는다.
각각의/하나의 > 기준 엔터티 > 관계차수 > 대상 엔터티 > 관계선택사양 > 관계명
5절 식별자
식별자 정의
엔터티를 대표할 수 있는 유일성을 만족하는 속성
식별자와 비식별자관계 비교
식별자 종류 ⭐
1. 대표성 여부에 따른 분류
엔터티내에서 대표성을 가지는가?
주식별자
대표성을 만족하는 식별자
주식별자의 특징
유일성 - 주식별자는 모든 인스턴스를 유일하게 구분가능 해야한다.
최소성 - 주식별자를 구성하는 속성 수는 1개이어야 한다.
불변성 - 주식별자는 자주 변경되지 않아야 한다.
존재성 - 주식별자는 항상 데이터 값이 있어야 한다.
대표성 - 주식별자는 엔터티를 대표 할 수 있어야 한다 .
주식별자 도출 기준
1. 해당 업무에서 자주 이용되는 속성을 주식별자로 정의한다.
2. 명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
3. 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
보조 식별자
유일성과 최소성만 만족하는 식별자, 참조 관계 연결에 사용할 수 없음
* DB 키의 종류 *
기본키(PK) : 엔터티를 대표하는 키, 후보키 중 선정됨
후보키 : 유일성과 최소성을 만족하는 키
슈퍼키 : 유일성만 만족하는 키
대체키 : 기본키를 제외한 나머지 후보키
외래키(FK) : 여러 테이블의 기본 키 필드,
참조 무결성(Referential Integrity)을 확인하기 위해 사용됨
허용된 데이터 값만 저장하기 위함
2. 생성 여부에 따른 분류
엔터티내에서 스스로 생성되었는가?
- 내부 식별자 : 자연스럽게 존재하는 식별자 (~ 본질식별자)
- 외부 식별자 : 다른 엔터티와의 관계를 통해 생성되는 식별자
3. 속성 수에 따른 분류
단일 속성으로 식별이 되는가?
- 단일 식별자 : 하나의 속성
- 복합 식별자 : 여러 속성
4. 대체 여부에 따른 분류
원래 업무적으로 의미가 있던 식별자 속성을 대체하여
일련번호와 같이 새롭게 만든 식별자를 구분짓기 위한
- 본질 식별자
대체될 수 없는 식별자
- 인조 식별자
인위적으로 만들어지는 대체가능한 식별자 (순서번호(Sequence Number)를 사용하여 생성된 식별자)
1) 후보 식별자 중 주식별자로 선정할 것이 없거나 2) 주식별자가 너무 많은 칼럼으로 구성되어 있을 때 사용
주식별자 도출 기준
업무에서 자주 이용되는 속성, 이름 명명 지양, 복합 식별자 지양
식별자 관계 | 비식별자 관계 | |
목적 | 부모 테이블의 기본키 또는 유니크 키를 자식 테이블이 자신의 기본키로 사용하는 관계입니다. 부모 테이블의 키가 자신의 기본키에 포함되기 때문에 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있습니다. 즉, 부모 데이터가 없다면 자식 데이터는 생길 수 없습니다. (강한 연결관계) |
부모 테이블의 기본키 또는 유니크 키를 자신의 기본키로 사용하지 않고, 외래 키로 사용하는 관계 (약한 연결관계) |
기본키 (Pk) |
부모 릴레이션의 기본키가 자식 릴레이션의 기본키로 사용됨 |
부모 릴레이션의 기본키가 자식 릴레이션의 일반 속성으로 사용됨 |
표기법 | 실선표현 | 점선표현 |