[정보처리기사 실기-6] 이것만 보면 합격-데이터모델링, SQL테이블용어, DB정규화단계, 반정규화과정, SQL관계대수, E-R다이어그램, 분포도, 파티셔닝
<7회>
※ 데이터 모델링 절차 : 개논물
- 개념 DM (E-R다이어그램)
↓
- 논리 DM (테이블 정규화)
↓
- 물리 DM (스키마 설계, 테이블 정의서)
※ 데이터 모델 구성요소 : 연구제
- 연산 : 데이터 처리작업에 대한 명세 (DML)
- 구조 : 논리적으로 표현 방법 정의
- 제약조건 : 칼럼에 설정하는 제약
※ 테이블 용어
* T = Table
* A = Attribute
* C = Cardinality (T의 개수)
* De = Degree (A의 개수)
* Do = Domain (A의 대응값)
※ 카티션 프로덕트 : R X S
- 차수(열)는 +, 카디널리티(행)는 X하여 계산 (테이블 구분은 제외)
ex)
테이블 A (2X2)
학번 | 이름 |
2001 | 김씨 |
2002 | 박씨 |
테이블 B(3X3)
교수번호 | 학과 | 과목 |
1 | 컴공 | C언어 |
2 | 전자 | 회로이론 |
3 | 기계 | 정역학 |
=> 카티션프로덕트 A X B = (2X3) X (2+3) = 6X5
학번 | 이름 | 교수번호 | 학과 | 과목 |
2001 | 김씨 | 1 | 컴공 | C언어 |
2001 | 김씨 | 2 | 전자 | 회로이론 |
2001 | 김씨 | 3 | 기계 | 정역학 |
2002 | 박씨 | 1 | 컴공 | C언어 |
2002 | 박씨 | 2 | 전자 | 회로이론 |
2002 | 박씨 | 3 | 기계 | 정역학 |
※ SQL 이상현상 3종류 : 삽삭갱
- 정의 : 데이터 중복성으로 인하여 릴레이션 조작시 발생하는 이상현상 (정규화 필요)
- 삽입 이상
- 삭제 이상
- 갱신 이상
※ DB정규화단계 : 원부이결다조
- 정규화 정의 : 데이터의 중복성을 제거하여 이상현상을 방지하는 작업 (각 단계별로 이전단계의 정규형을 만족해야함)
- (1NF) 원자값 제거
- 모든 속성값은 1개의 값만 갖는다
고객 ID | 이메일 |
1 | A, B, C |
↓
고객 ID | 이메일 |
1 | A |
1 | B |
1 | C |
- (2NF) 부분함수 제거
- A B C → A & B, A & C (AB, AC는 종속적)
고객명 | 서비스 이름 | 서비스 가격 | 서비스 이용 기간 |
김씨 | 헬스 | 5만원 | 1달 |
김씨 | 수영 | 7만원 | 2달 |
박씨 | 헬스 | 5만원 | 2달 |
↓
고객명 | 서비스 이름 | 서비스 이용 기간 |
김씨 | 헬스 | 1달 |
김씨 | 수영 | 2달 |
박씨 | 헬스 | 2달 |
서비스 이름 | 서비스 가격 |
헬스 | 5만원 |
수영 | 7만원 |
- (3NF) 이행함수 제거
- (이행쪼개기) A B C → A & B, B & C
인덱스 | 도서명 | 도서 가격 | 출판사 | 홈페이지 |
1 | A | 3만원 | A미디어 | A 닷컴 |
2 | B | 4만원 | B미디어 | B 닷컴 |
3 | C | 5만원 | C미디어 | C 닷컴 |
↓
인덱스 | 도서명 | 도서 가격 | 출판사 |
1 | A | 3만원 | A미디어 |
2 | B | 4만원 | B미디어 |
3 | C | 5만원 | C미디어 |
출판사 | 홈페이지 |
A미디어 | A 닷컴 |
B미디어 | B 닷컴 |
C미디어 | C 닷컴 |
- (BCNF) 결정자함수 제거
- A B C → A & C, C & B
학번 | 과목명 | 교수명 |
1 | 헬스 | A |
2 | 수영 | B |
3 | 수영 | B |
↓
학번 | 교수명 |
1 | A |
2 | B |
3 | B |
교수명 | 과목명 |
A | 헬스 |
B | 수영 |
B | 수영 |
- (4NF) 다치 제거
- A B C → A & B, A & C (AB, AC는 독립)
이름 | 자격증 | 보유언어 |
김씨 | 정처기 | C |
김씨 | 기계기사 | JAVA |
박씨 | 보안기사 | 파이썬 |
↓
이름 | 자격증 |
김씨 | 정처기 |
김씨 | 기계기사 |
박씨 | 보안기사 |
이름 | 보유언어 |
김씨 | C |
김씨 | JAVA |
박씨 | 파이썬 |
- (5NF) 조인 제거
- A B C → A & B, A & C, B & C (AB, AC, BC는 독립)
이름 | 자격증 | 보유언어 |
김씨 | 정처기 | C |
김씨 | 기계기사 | JAVA |
박씨 | 보안기사 | 파이썬 |
↓
이름 | 자격증 |
김씨 | 정처기 |
김씨 | 기계기사 |
박씨 | 보안기사 |
이름 | 보유언어 |
김씨 | C |
김씨 | JAVA |
박씨 | 파이썬 |
자격증 | 보유언어 |
정처기 | C |
기계기사 | JAVA |
보안기사 | 파이썬 |
※ 반정규화과정 : (=비정규화과정) 정규화된 개체, 속성, 관계를 중복, 통합, 분리하여 개발운영 효율성을 증대시키는 데이터 모델링 기법
※ 반정규화기법 종류 : 3테컬관
- (테이블) 테이블 병합
- (테이블) 테이블 분할
- (테이블) 중복 테이블 추가
- (컬럼) 컬럼 중복화
- (관계) 중복관계 추가
※ SQL 관계대수
- σ : 셀렉트 → 릴레이션 A의 조건 검색
- π : 프로덕트 → 릴레이션 A의 속성 검색
- ▷◁ : 조인 → 릴레이션 A, B의 튜플 합치기
- ÷ : 디비전 → 릴레이션 A,B의 속성 나누기
※ 논리 DM 구성 3요소 : 개속관
- 개체(Entity), 속성(Attribute), 관계(Relation)
※ E-R 다이어그램 (ERD)
- 정의 : 현실세계에 존재하는 데이터(개체)와 그 관계를 도식화한 다이어그램
- 여기서 E-R은 Entity - Relation 모델임
- 다이어그램 기호
- □ (네모) : 개체
- ○ (타원) : 속성
- ◎ (이중타원) : 다중값속성
- ◇ (마름모) : 관계
- ㅡ (선) : 관계-속성 연결
<7.5회>
※ 관계형 DB에서 인덱스란? : 전체 데이터 검색 없이 빠르게 조회 가능한 정도
※ 인덱스 적용 및 컬럼 선정 기준
① 분포도 좋은 컬럼은 단독 생성
② 자주 조합되는 컬럼은 결합 인덱스 생성
※ 분포도 : 특정 컬럼의 데이터가 테이블에 평균적으로 분포되어있는 정도 (10~15%가 이상적)
- 1 / 컬럼종류 X 100
- 컬럼 평균 열 수 / 테이블 총 열 수 X 100
※ 파티셔닝 종류 : 레라리해컴
- 레인지 파티셔닝 : 연속적 숫자,날짜 기준으로 분할
- 라운드로빈 파티셔닝 : 모든 프로세스 조금씩 분할
- 리스트 파티셔닝 : 사용자가 명시적 분할
- 해시 파티셔닝 : 해시 함수값으로 분할
- 컴포짓 파티셔닝 : 레인지 분할 + 해시 분할