모델링
현실세계를 단순화하여 표현하는 것
-
특징
- 추상화 : 일정한 형식에 맞춰 표현
- 단순화 : 제한된 표기법이나 언어로 표현
- 명확성 : 이해가 쉽게 표현
-
관점
- 데이터 관점 : 업무와 데이터 및 데이터 사이의 관계
- 프로세스 관점 : 진행되고 있거나 진행되어야 하는 업무
- 상관 관점 : 데이터에 대한 업무 처리 방식의 영향
데이터 모델링
정보시스템(DB)을 구축하기 위한 데이터 관점의 업무분석 기법
목적
- 정보에 대한 표기법을 통일하여 업무 내용 분석 및 정확도 증대
- 데이터 모델을 기초로 DB 생성
=> 시스템 구현, 업무분석, 업무 형상화
유의사항
- 중복 : 여러 장소에 같은 정보를 저장하면 안된다.
- 비유연성 : 데이터 정의 /= 데이터 사용 프로세스, 작은 변화가 중대한 변화를 일으키지 않도록 한다.
- 비일관성 : 연계성이 높으면 안된다.
ex) 신용상태를 갱신 안하고 납부이력을 변경
기능
- 가시화
- 명세화
- 구조화된 틀 제공
- 문서화
- 다양한 관점 제공
- 구체화
중요성
- 파급효과(Leverage)
- 간결한 표현(Conciseness)
- 데이터 품질 : 유일성, 유연성, 일관성
이해관계자
데이터 모델링 3단계
개념적 모델링
- 엔터티와 속성을 도출하고 ERD를 작성
- 업무 중심적이고 포괄적인 수준의 모델링
- 가장 추상적이다
논리적 모델링
- 식별자를 도출하고 속성과 관계 등을 정의
- 데이터 정규화를 수행하여 데이터 모델의 독립성과 재사용성 확보
- 논리 데이터 모델은 데이터 모델링 완료 상태
물리적 모델링
- DB구축
- 성능 및 보안 등 물리적인 성격 고려
- 추상화가 가장 낮다(가장 구체적이다)
스키마 3단계
외부 스키마
개념 스키마
내부 스키마
- 물리적으로 데이터가 저장되는 방법
- 개발자 관점
- 물리적 저장 구조
데이터 독립성
논리적 독립성
외부 스키마가 개념 스키마의 변화에 무관
(= 개념 스키마가 변경되어도 영향이 없다)
물리적 독립성
개념 스키마가 내부 스키마의 변화에 무관
(= 내무 스키마가 변경되어도 영향이 없다)

데이터 모델링 3요소
엔터티(Entity)
저장할 가치가 있는 객체나 개념(=객체)
인스턴스
DB에 저장된 데이터 내용의 전체 집합
특징
- 유일한 식별자를 가진다
- 2개이상의 인스턴스를 포함
- 반드시 업무에서 필요하고 관리하고자 하는 정보
- 업무 프로세스에 의해 이용되어야 한다
- 속성을 가진다
- 다른 엔터티와 최소 1개 이상 관계를 가진다
종류
-
유무형에 따라
- 유형 엔터티 : 물리적 형태가 있고 지속적으로 활용되는 엔터티
- 개념 엔터티 : 물리적 형태가 없는 엔터티
-
발생시점에 따른 분류
- 기본 엔터티(Key Entity) : 독립적으로 생성되는 엔터티
- 중심 엔터티(Main Entity) : 기본 엔터티와 행위 엔터티의 중간에 존재하는 엔터티
- 행위 엔터티(Active Entity) : 2개 이상의 부모 엔터티로부터 발생, 지속적으로 정보가 추가되고 변경되어 데이터 양이 가장 많음
명명규칙
- 현업에서 사용하는 용어
- 약어 지양
- 단수 명사
- 유일성
- 명확성
속성(Attribute)
엔터티가 가지는 특성이나 정보, 인스턴스의 구성요소
도메인
속성이 가질 수 있는 값의 범위
데이터 타입, 크기, 제약사항 지정
특징

- 업무에서 필요로 하는 고유한 성질
- 인스턴스(하나의 행) => 더 이상 분리되지 않는 최소의 데이터 단위
- 주식별자에 함수적 종속성을 가져야 한다 (원자성)
- 속성값을 하나만 가져야 한다 => 하나 이상이면 정규화 필요
종류
-
특성에 따라
- 기본 속성 : 비즈니스 프로세스에서 도출되는 본래의 속성
=> 모호하지 않게 하기 위해 반정규화, 통합 등 사용
- 설계 속성 : 데이터 모델링 과정에서 업무 규칙화를 위해 발생하는 속성
- 파생 속성 : 다른 속성에 의해 만들어지는 속성
=> 원래 속성값을 계산해서 저장
-
분해 가능 여부에 따라
- 단일 속성 : 하나의 의미
- 복합 속성 : 여러 의미, 단일 속성으로 분해 가능
- 다중값
-
엔터티 구성방식에 따라
- 기본키 속성 : 엔터티를 식별할 수 있는 속성
- 외래키 속성 : 다른 엔터티와의 관계에서 포함된 속성
- 일반 속성 : 엔터티에 포함되고 PK나 FK 속성이 아닌 속성
엔터티 사이 관계 도출 시 확인해야 할 것
1) 두 개의 엔터티 사이에 관심있는 연관규칙이 존재하는가?
2) 두 개의 엔터티 사이에 정보의 조합이 발생되는가?
3) 업무기술서, 장표에 관계연결에 대ㄷ한 규칙이 서술되어 있는가?
4) 업무기술서, 장표에 관계 연결을 가능하게 하는 동사가 있는가?
관계(Relationship)
엔터티 간의 논리적인 연관성(동사형)
관계 표기법
1) 관계명
2) 관계차수(Cardinality) : 관계 내 튜플의 전체 개수
3) 관계선택사양(Optionality) : 필수는 |, 선택은 O
종류
관계 읽기
각각의/하나의 > 기준 엔터티 > 관계차수 > 대상엔터티 > 관계선택사양 > 관계명
함수적 종속성
A에 의해 다른 속성 B도 유일하게 결정 된다면?
A -> B
완전 함수적 종속
PK를 구성하는 컬럼이 2개 이상일 경우 PK값 모두에 의한 종속관계
ex) 주문번호(PK) + 제품번호 에 의해 수량 컬럼 값이 결정
부분 함수적 종속
기본키 일부에 대해 종속
ex) 수강기록 Table 에서 학생번호 + 과목이 PK라 했을 때, 과목에 의해서도 강사가 결정
=> 학생번호+과목 ->(일부 영향) 강사
정규화
테이블 분리, 중복제거, 논리 데이터 모델링 기준 이상현상 방지 (삽입, 삭제, 갱신)
제 1 정규화(1NF)
속성은 반드시 1개 => 원자성
제 2 정규화(2NF)
완전 함수 종속으로 만듦
-> 기본키가 2개 1:1 관계
제 3 정규화(3NF)
제 2정규화를 진행한 테이블 + 이행적 종속을 없앰
A -> B, B -> C 이며 A -> C 인 것
A, B 와 B, C 로 분리 한 것
BCNF
모든 결정자가 후보키
제 4 정규화
여러 칼럼들이 하나의 컬럼을 종속 시키는 경우 분해
제 5 정규화
JOIN에 의해 종속성이 발생되는 경우 분해
트랜잭션
하나의 연속적인 업무 단위
=> 필수적인 관계 형태
특징
- All or Nothing (모두 성공하거나 모두 취소되거나)
- 서로 독립적이면 안된다
- 부분 COMMIT은 안된다 => ROLLBACK, 동시 COMMMIT
IE 표기법
- 원으로 필수적 관계와 선택적 관계를 구분
- 필수 관계 : 원이 X
- 선택 관계 : 끝에 원을 그린다
바커 표기법
실선과 점선으로 구분
NULL의 특성
연산에서 NULL이 포함되면 결과가 NULL
NULL 치환하여 계산이 가능
ex) NVL(COMM, 0)
그룹 함수는 NULL을 제외하고 연산한다
- SUM, AVG, MIN, MAX
- COUNT는 NULL이 아닌것만 센다
- COUNT(*)은 NULL이랑 상관없이 전부 센다
ERD 표기법
IE 표기법에서는 알 수 없다
바커 표기법에서는 속성 앞 동그라미로 NULL 여부를 알 수 있다
식별자(Identifier)
엔터티 내에서 각 인스턴스를 고유하게 구별하는 속성
특징
DB 키 종류
- 기본키(PK) : 엔터티를 대표하는 키, 후보키 중 하나
- 후보키 : 유일성과 최소성을 만족
- 슈퍼키 : 유일성만 만족
- 대체키: 기본키를 제외한 나머지 후보키
- 외래키 : 여러 테이블의 기본 키 필드, 참조 무결성을 확인하기 위해 사용(허용된 데이터 값만 저장)
식별자 종류
-
대표성 여부에 따라
- 주식별자 : 대표성을 만족(유일성, 최소성, 불변성, 존재성)
- 보조 식별자 : 유일성과 최소성만 만족하는 식별자, 참조 관계 연결에 사용 불가
-
생성 여부에 따라
- 내부 식별자 : 자연스럽게 존재하는 식별자(~본질식별자)
- 외부 식별자 : 다른 엔터티와의 관계를 통해 생성되는 식별자
-
속성 수에 따라
- 단일 식별자 : 하나의 속성
- 복합 식별자 : 여러 속성
-
대체 여부에 따라
- 본질 식별자 : 대체될 수 없는 식별자
- 인조 식별자 : 인위적으로 만들어지는 대체 가능한 식별자
주식별자 도출 기준
- 업무에서 자주 이용되는 속성
- 이름 명명 지양
- 복합 식별자 지양
인조 식별자의 단점
- 중복 데이터가 발생할 가능성이 있다
- 불필요한 인덱스 -> 인덱스는 DML에 취약하며
INDEX SPLIT 현상이 발생할 가능성이 있다