SQLD 1과목
데이터 모델링의 이해
변동 - 정규화 / 관계와 조인의 이해/ 트랜잭션 / Null / 본질 vs 인조
제외 - 반정규화/ 대용량 데이터/ DB 구조와 성능 / 분산DB
테이블 =엔터티
컬럼 = 속성
행 = 인스턴스
카디널리티 = 선택도 * 전체레코드 수
1. 모델링
#글로 풀어냈을 때 알아낼 수 있어야 함
특징
- 단순화 2. 추상화 3. 명확화
유의점
- 중복 2. 비유연성 : 데이터 정의를 프로세스와 분리 3. 비일관성
3가지 요소
- 대상(Entity) 2. 속성(Attribute) 3. 관계(Relationship)
3단계
개념적 모델링 : 추상화, 엔터티 추출, ERD
논리적 모델링 : 세부속성, 식별자, 관계, 정규화, 재사용 가능
물리적 모델링 : 성능, 구체적
3가지 관점
- 데이터 : 업무가 어떤 데이터와 관련이 있는 지, 데이터 간의 관계는 무엇인지
- 프로세스 : 실제로 하는 일이 무엇인지, 무엇을 해야 하는지
- 데이터와 프로세스 간의 상관 관계 : 업무가 처리하는 일의 방법에 따라 데이터가 어떻게 영향을 받고 있는 지 모델링
3가지 중요 개념
- 어떤 것(Things) 2. 관계(Relationship) 3. 성격(Attribute)
3층 스키마
- 외부 스키마 : 사용자, 업무상 데이터 접근, 일부만 표시(view)
- 개념 스키마 : 사용자 전체, 모든 데이터 규칙&의미 등
- 내부 스키마 : 물리적 저장구조, 운영체제 & 하드웨어에 종속적
ERD
- 도출, 그림 → 2.배치 → 3.관계 설정 → 4.관계명 서술 → 5.참여도 기술 → 6.필수 여부
2. 엔터티
현실 세계에서 독립적으로 식별 가능한 객체나 사물의 집합
- 대상(인스턴스)들로 이루어진 집합
특징
유일한 식별자에 의해 식별
업무 정보
인스턴스들의 집합(2개 이상)
속성
업무 프로세스에 이용 ↔ 고립 엔티티 제거 필요
최소 1개 이상 관계
분류
- 유형 & 무형
- 유형엔터티 : 안정, 지속, 구분용이
- 개념엔터티 : 물리X
- 사건엔터티 : 발생
- 발생 시점
- 기본엔터티 : 원래정보, 독립적, 부모, 주식별자
- 중심엔터티 : 기본엔터티로 발생, 그 업무의 중심
- 행위엔터티 : 2개 이상의 부모 엔터티, 설계-모델링 단계 도출
명명 : 현업용어, 약자X, 단수명사, 유일성, 의미대로
속성
업무에서 필요로 하는 고유한 성질, 특징 → 컬럼으로 표현 가능한 단위
- 최소의 데이터 단위
- 인스턴스의 구성 요소
- 구체적인 값을 가짐
관계
- 1개의 엔터티 : 2개 이상의 인스턴스(행) 집합, 2개 이상의 속성(컬럼)
- 1개의 속성 : 1개의 속성값
특징
- 업무 정보
- 주식별자에 함수적 종속성
- 다중값일 경우에는 별도의 엔터티로 분리
- 하나의 인스턴스는 속성마다 하나의 속성값(원자성)
함수적 종속성 : A값에 의해 B도 유일하게 결정되면, A→B
- 완전 함수적 종속성 : 기본키 완전 종속
- 부분 함수적 종속 : 기본키 일부 종속 예) 2개 중 1개
분류
- 속성의 특성에 따른 분류
- 기본 속성 : 업무로 추출된 모든 속성
- 설계 속성 : 기본 속성 외 새로 만듦, 변형으로 만들어짐 ex) 상품코드
- 파생 속성 : 다른 속성에 의해 만들어짊. ex) 합계, 평균
엔터티 구성방식에 따른 분류
PK, FK, 일반속성
분해 여부에 따른 속성
단일 속성, 복합 속성, 다중값 속성
명명 : 업무사용, 서술식X, 약어X, 유일성
도메인 : 각 속성이 가질 수 있는 값의 범위 ex)데이터타입, 크기, 제약
3. 관계
엔티티간의 연관성
- 어떻게 정의하느냐에 따라 변경됨
종류 1.존재적 관계 : 연관된 상태 2. 행위적 관계
구성 1. 관계명 2. 차수(카디널리티) 3. 선택성
관계 차수(카디널리티)
한 엔터티의 레코드(인스턴스)가 다른 엔터티의 레코드와 어떻게 연결되는지 표현
- 1:1
- 완전 1:1
- 선택적 1:1 : 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수 있는 경우
- 1:N
- M:N : 카테시안 곱 발생 → 연결엔터티의 추가로 1:N관계 해소 필요
페어링 : 인스턴스가 개별적으로 관계를 가지는 것
두 개의 엔터티 사이에 관계 도출 할 때 체크 할 사항
- 연관규칙 2. 정보의 조합 3. 관계연결에 대한 규칙 서술 4. 관계연결을 가능하게 하는 동사(verb)
4. 식별자 = 키
엔터티 대표 속성 , 유일성
주식별자 1. 유일성 2. 최소성 3. 불변성 4. 존재성(null X)
분류
| 대표성 여부 | 생성여부 | 속성수 | 대체여부 | | — | — | — | — | | 주식별자 | 내부식별자 | 단일식별자 | 본질식별자 | | 보조식별자 | 외부식별자 | 복합식별자 | 인조식별자 |
- 대표성 여부에 따른 식별자 종류
- 주식별자 : 유일성, 최소성, 대표성, 타 엔터티와 참조관계 연결
- 보조식별자 : 유일성, 최소성, 대표성X, 참조관계X
- 생성 여부에 따른 식별자 종류
- 내부 식별자 : 스스로
- 외부 식별자 : 외래키
- 속성 수에 따른 식별자 종류
- 단일 식별자 : 하나의 속성
- 복합 식별자 : 2개 이상의 속성
- 대체 여부에 따른 식별자 종류
- 본질 식별자 : 비즈니스 프로세스
- 인조 식별자 : 인위적, 자동 증가하는 일련번호
도출기준 : 업무에 자주 이용, 명칭이나 내역 같은 이름X, 속성 수 최대한 적게(조인 성능 저하)
관계간 엔터티 구분
- 강한 개체 : 독립적
- 약한 개체
식별 vs 비식별 관계
| 식별자 | 비식별자 | |
|---|---|---|
| 목적 | 강한 연결관계 | 약한 연결관계 |
| 영향 | 주식별자의 구성에 포함 | 일반 속성에 포함 |
| 표기법 | 실선 | 점선 |
| 고려사항 | 반드시 부모엔터티 종속 | 약한 종속관계 |
| 부모 주식별자 포함 필요 | 독립적, 부모 주식별자 부분 필요 | |
| 상속받은 주식별자속성을 타 엔터티에 이전 필요 | 상속받은 주식별자속성을 타 엔터티에 차단 필요 | |
| 부모쪽은 관계 참여가 선택 관계 |
5. 정규화
최소한의 데이터만을 하나의 엔터티에 넣는 식으로 데이터 분해하는 과정
- 일관성, 중복X → 독립성 확보, 데이터 유연성을 위한 과정
- 이상 현상 줄이기 위한 설계 기법
- 논리 데이터 모델링 수행 시점
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
**이상현상** 1. 삽입이상 2. 갱신이상 3. 삭제이상
**정규화 단계**
1. 제 1정규화 (1NF) : 원자성(하나의 값)
2. 제 2정규화 (2NF) : 완전 함수 종속 (부분 함수 종속성을 깨는 것이 목표)
(PK 2개 이상일 때 PK일부와 종속되는 관계 분리)
3. 제 3정규화 (3NF) : 이행적 종속 없앰, a-b, b-c, a-c 가 성립 → a-b, b-c로
4. BCNF : 모든 결정자 후보키
5. 제 4정규화 (4NF) : 다중값 종속성 제거
6. 제 5정규화 (5NF) : 조인 종속성 분해
반정규화=역정규화 : 성능향상을 위해 중복 허용, 조인 줄임, 조회향상, 유연성X
- 수행 속도 느림, 다량의 범위 자주, 특정 범위 데이터 자주, 요약/집계 정보
6. 관계 / 조인의 이해
관계 : 엔터티의 인스턴스 사이의 논리적인 연관성
- 부모의 식별자를 자식에 상속, 상속된 속성을 매핑키(조인키)로 활용
분류 : 1. 존재 관계 : 엔터티간의 상태 2. 행위 관계 : 엔터티 간의 어떤 행위
계층형 데이터 모델 : 자기 자신끼리 관계가 발생, 셀프조인
상호배타적 관계 : 두 테이블 중 하나만 가능한 관계
Hash Join
- 인덱스 없이도 가능
- 해시함수 이용 → ‘=’
- 해시테이블은 메모리에 생성 → 적재 크기 높아지면 임시영역에 저장
- 선행테이블 build input / 후행테이블 prove input
슈퍼타입 vs 싱글타입
- OneToOne : 개별, 조인 많음, 관리 어려움, 테이블 많음
- PlusType : 조인 많음, 관리 어려움
- SingleType : 하나의 테이블, 조인 성능 높음. 관리 어려움, 성능 낮음
7. 트랜잭션
하나의 연속적인 업무 단위, 필수적인 관계 형태, All or Nothing
8. null 속성의 이해
아직 정해지지 않은 값
- NULL 연산 = NULL
- NULL 집계함수 = NULL무시
- ERD : IE는 허용여부x , 바커는 옆에 동그라미 하용여부 표시
9. 본질식별자
- 본질 식별자 : 업무에 의해 만들어지는 식별자
- 인조 식별자 : 인위적으로 만들어지는 식별자 (편이성의 이유) , 주로 기본키로 사용(일련번호)
- 중복 데이터 발생 가능성 → 데이터 품질 저하
- 불필요한 인덱스 생성 → 저장공간 낭비 및 DML 성능저하
- 인덱스는 DML시 INDEX SPLIT현상으로 인해 성능 저하됨.

