Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions _algorithms/SQLD/sqld-1.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ ogImage:

## 1.1 데이터 모델의 이해

### 모델링이란
### 1.1.1 모델링이란

- 현실세계의 데이터를 약속된 표기법으로 표현
- 업무의 흐름을 가시화, 명세화하여 정보시스템을 구축하기 위한 분석, 설계 과정의 일환
- 업무 프로세스와 데이터를 분석하여 추상화
- 데이터베이스 구축의 사전작업 및 업무 형상화

### 모델링 특징 - **추단명**
### 1.1.2 모델링 특징 - **추단명**

- 추상화
- 대상의 주요 특징을 추출하여 일정한 형식으로 표현
Expand All @@ -30,7 +30,7 @@ ogImage:
- 비유연성 최소화 : 데이터의 정의와 테이터의 사용 프로세스를 분리하여 데이터, 프로세스의 변화가 프로그램과 DB에 미치는 영향 최소화 해야함
- 비일관성 최소화 : 데이터 간의 상호 연관관계를 명확하게 정의하여 데이터를 일관성있게 유지해야함

### 모델링 3가지 관점 - **데프상**
### 1.1.3 모델링 3가지 관점 - **데프상**

- 데이터 관점 (What)
- 데이터에 집중, 데이터들의 관계를 맺고 사용되는지를 모델링
Expand All @@ -42,7 +42,7 @@ ogImage:
- 데이터와 흐름간의 관계를 맺고 영향을 주고받는지를 모델링
- CRUD분석

### 모델링 3가지 단계 - **개논물**
### 1.1.4 모델링 3가지 단계 - **개논물**

- 개념적 데이터 모델링
- 가장 높은 추상화 레벨, 포괄적 개념
Expand All @@ -57,7 +57,7 @@ ogImage:
- DBMS의 성능, 보안, 가용성 고려하여 설계, 가장 낮은 추상화레벨
- 성능향상을 위한 반정규화 수행 및 테이블, 인덱스, 함수 등을 생성

### 3단계 스키마 구조 - **외개내**
### 1.1.5 3단계 스키마 구조 - **외개내**

> ANSI-SPARC정의, 데이터 독립성 보장을 위한 설계방법

Expand All @@ -71,7 +71,7 @@ ogImage:
- 개발자 관점, 디스크나 메모리상의 물리적,실질적 저장구조 나타냄
- 물리적 뷰 제공

### ERD
### 1.1.6 ERD

- 데이터 모델링에대한 문서화 방법을 제공
- 중요한 엔터티는 왼쪽 상단에 배치
Expand All @@ -83,21 +83,21 @@ ogImage:

## 1.2 엔터티

### 엔터티 개념
### 1.2.1 엔터티 개념

- DB의 구성요소중 독립적으로 식별 가능한 객체(Object)
- 도서관 DB 모델링시 엔터티 -> 회원, 대출, 도서
- 보다 상세히 자신을 표현하기위해 속성(Attribute)라는 하위요소를 가진다. 회원 엔터티의 속성 -> 회원명, 주소, 전화번호

### 엔터티 특징
### 1.2.2 엔터티 특징

- 업무에서 필요하고 관리하고자 하는 정보
- 유일한 식별자를 가져야 함
- 영속적으로 존재하는 인스턴스가 두 개 이상인 집합을 이루어야함
- 하위요소로 반드시 속성을 가져야함
- 엔터티는 다른 엔터티와 한 개 이상의 관계를 가져야 함, 단 통계성 & 코드성 엔터티의 경우 관계 생략가능

### 엔터티 분류
### 1.2.3 엔터티 분류

- 발생 시점 / 상속 관계에 따른 분류
- 기본 엔터티 : 고유한 주식별자를 가지는 독립적 엔터티, ex) 사원, 부서, 고객, 상품, 자재
Expand All @@ -108,11 +108,11 @@ ogImage:
- 개념 엔터티 : 개념적 정의되는 엔터티, ex) 부서, 상품분류, 강의
- 사건 엔터티 : 업무를 수행하면서 발생하는 행위나 이벤트를 나타내는 엔터티, ex) 주문, 대여, 수강

### 교차 엔터티
### 1.2.4 교차 엔터티

- M:N 관계를 해소하기 위해 만들어진 엔터티

### 엔터티 명명법
### 1.2.5 엔터티 명명법

- 엔터티 생성 의미대로 이름을 부여
- 약어 사용하지 않는다, 너무길어질때만 약어를 표준화하여 사용
Expand All @@ -121,25 +121,25 @@ ogImage:

## 1.3 속성

### 속성 개념
### 1.3.1 속성 개념

- 엔터티에 대한 자세하고 구체적인 정보, 엔티의 하위요소
- 업무 프로세스에 꼭 필요한 것들로 최소화
- 의미상으로 더 이상 분리되지 않는 최소의 데이터 단위

### 속성 값
### 1.3.2 속성 값

- 속성이 가질 수 있는 특정 값
- 속성값이 으미적으로 다중 값을 포함할때, 1차 정규화 진행
-

### 엔터티, 인스턴스, 속성값 특징
### 1.3.3 엔터티, 인스턴스, 속성값 특징

- 한 개의 엔터티는 두 개 이상의 인스턴스를 가짐, 엔터티는 인스턴스의 집합
- 한 개의 엔터티는 두 개 이상의 속성을 가짐, 엔터티는 속성의 집합
- 한 개의 속성은 한 개의 속성값만 가짐

### 속성의 분류
### 1.3.4 속성의 분류

- 속성의 특성에 따른 분류
- 기본 속성 : 엔터티가 본래 가지고 있어야 하는 속성
Expand All @@ -150,13 +150,13 @@ ogImage:
- FK(외래키) 속성 : 관계를 통해 다른 엔터티의 속성을 가져와 포함시킨 속성
- 일반 속성 : PK,FK제외 나머지

### 도메인
### 1.3.5 도메인

- 속성이 가질 수 있는 값의 범위(데이터 타입, 크기)를 정의한 것

## 1.4 관계

### 관계의 개념
### 1.4.1 관계의 개념

> 엔터티 간 맺고 있는 연관성

Expand All @@ -167,11 +167,11 @@ ogImage:

## 1.5 식별자

### 식별자의 개념
### 1.5.1 식별자의 개념

- 인스턴스를 유일하게 구별할 수 있는 속성

### 주식별자
### 1.5.2 주식별자

> 엔터티 인스턴스를 유일하게 구별해주는 식별자, PK를 말함

Expand All @@ -180,7 +180,7 @@ ogImage:
- 붋변성 : 속성값이 최초 생성시 부여된 값에서 변하면안됨
- 존재성 : 반드시 값을 가져야함, NOT NULL

### 식별자의 분류
### 1.5.3 식별자의 분류

- 대표성 여부에 따른 분류
- 주식별자(PK) : 인스턴스를 유일하게 구별하는 식별자, 유일성, 최소성, 불변성, 존재성 만족
Expand All @@ -196,7 +196,7 @@ ogImage:
- 본질 식별자 : 업무에 존재하는 본래 식별자, 원조식별자라고도 함
- 인조식별자 : 업무에 존재하지않으나 원조식별자가 복잡하여 인위적으로만든 식별자, 대리식별자라고도 함

### 식별자 관계, 비식별자 관계
### 1.5.4 식별자 관계, 비식별자 관계

- 식별자 관계
- ERD작성시 실선표현
Expand Down
20 changes: 10 additions & 10 deletions _algorithms/SQLD/sqld-2.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ ogImage:

- 이상현상(Anomaly) : 테이블과 관계들의 CRUD가 일어나는 과정에서 일관성이 깨지는 현상

### 이상현상 종류
### 2.1.1 이상현상 종류

- 삽입이상 : 테이블에 데이터 삽입 시 의도하지 않은 정보까지 삽입해야 하는 현상
- 갱신 이상 : 중복저장되어있는 데이터 중 하나만 갱신하고 다른 하나를 갱신하지 않을때 나타나는 데이터 불일치 현상
- 삭제 이상 : 테이블의 특정 데이터를 삭제할때 의도하지 않은 정보까지 삭제되는 현상

### 정규화 절차 - **도부이결다조**
### 2.1.2 정규화 절차 - **도부이결다조**

- 제1 정규화 : 릴레이션의 속성값이 모두 원자값만으로 구성되어야 함
- 중복값 제거
Expand All @@ -28,19 +28,19 @@ ogImage:
- 제3 정규화 : 기본키 제외 컬럼간의 종속성 제거, 이행 함수종속성을 제거
- BCNF : 기본키를 제외 후보키가 있는경우 후보키가 기본키를 종속시키면 분해

### 제1정규형
### 2.1.3 제1정규형

- 모든 속성이 하나의 속성값, 유사한 속성이 반복되지 않는 상태

### 제2정규형
### 2.1.4 제2정규형

> 부분 함수종속성을 제거한상태

- 부분 함수 종속성이란
- **주식별자가 2개** 이상으로 구성된 복합식별자의경우, 일반 속성이 주식별자의 일부에만 종속성을 가지는 상황
- 주식별자가 단일식별자일 때는 제2정규화가 필요없으며, 이미 제2정규형인 상태

### 제3정규형
### 2.1.5 제3정규형

> 이행 함수 종속성을 제거한상태

Expand All @@ -51,20 +51,20 @@ ogImage:

## 2.2 관계와 조인의 이해

### 조인의 트레이드 오프
### 2.2.1 조인의 트레이드 오프

- 정규화를 통해 분해된 테이블들은 조회 과정에서 여러 번의 조인이 발생가능
- 조인은 DB의 성능 측면에서 다소 부하가 높은 연산, 정규화를 통해 분해된 DB는 조회성능이 떨어질 수 있음
- 성능 저하를 막기위한 조인의 빈도를 줄이는것도 필요
- 데이터의 정합성과 조회성능 간 트레이드 오프 관계 존재

### 2.2.1 반정규화가 필요한 상황
### 2.2.2 반정규화가 필요한 상황

- 조회성능이 중요한 상황
- 반정규화 시 DB정합성이 낮아져 문제가 발생할 수 있으므로 대안을 검토후 반정규화 진행
- 대안의 종류 (뷰 생성, 인덱스 조정, 클러스터링 적용, 어플리케이션에서의 처리 등)

### 2.2.2 테이블 반정규화
### 2.2.3 테이블 반정규화

- 테이블 병합

Expand All @@ -86,15 +86,15 @@ ogImage:
- 이력 테이블 추가 : 변경 이력 등 이력 데이터를 관리할 수 있는테이블을 별도로 추가
- 부분 테이블 추가 : 디스크 I/O를 줄이기 위해 하나의 테이블 내에특별히 자주 사용하는 속성들만 모아서 새로운 테이블로 추가

### 2.2.3 칼럼 반정규화
### 2.2.4 칼럼 반정규화

- 중복 컬럼 추가 : 조인을 감소시키기 위해 자주 사용하는 컬럼을 중복 추가하는 기법
- 파생 컬럼 추가 : 트랜잭선 처리 시 계산에의한 부하발생을 줄이기 위해 계싼값을 별도의 컬럼으로 미리 추가
- 이력 테이블 컬럼 추가 : 대랑의 데이터 처리시, 조회성능 저하를 예방하기 위해 이력테이블에 조회조건에 해당하는 기능성 컬럼 추가
- PK에 의한 컬럼 추가 : 복합 의미를 갖는 PK를 단일 속성으로 구성했을때, PK를 파싱해서 추가적인 내용을 조회해야하는 경우에 성능하락이 존재할 수 있으므로 이를 일반속성으로 추가하는 기법
- 응용 시스템 오동작을 위한 컬럼 추가 : 이전(백업) 데이터를 임시적으로 중복하여 보관하는 기법

### 2.2.4 관계 반정규화
### 2.2.5 관계 반정규화

- 여러 관계를 거쳐 다수의 조인을 통해 처리가 가능하지만 이때 발생할 수 있는 성능 저하를 막기위해 추가적으로 중복된 관계를 맺는 방법
- 조인이 많으면 CPU연산 부하가 커짐 -> 조회 성능 저하
Expand Down
Loading
Loading