일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자동 배칭
- 렌더링
- mapped types
- 고급타입
- Interface
- 상태 끌어올리기
- 타스
- rendering
- useCallback
- 배칭
- Next.js
- router dom
- Front-End
- JavaScript
- TS
- 리액트
- state 최적화
- React
- 프론트엔드
- 리액트 코드분할
- 렌더링 동작원리
- react code splitting
- react router dom v6
- useMemo
- react rendering
- TypeScript
- lifting state up
- 자바스크립트
- NextJS
- 타입스크립트
- Today
- Total
서녕이네 개발단지
면접을 위한 CS 전공지식 노트 [CHAPTER 4] (2) 본문
[SECTION 4.2] - ERD와 정규화 과정
- ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것이다.
- 만약 서비스를 구축한다면 가장 먼저 신경 써야 할 부분이다.
4.2.1 ERD의 중요성
- ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다.
- 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우에 설계도 역할을 담당하기도 한다.
단점?
- 하지만 ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용할 수 있지만 *비정형 데이터를 충분히 표현할 수 없다는 단점이 있다.
*비정형 데이터 : 비구조화 데이터를 말하며, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말한다.
4.2.2 예제로 배우는 ERD
- 다음 예제의 서비스 요구 사항과 답을 기반으로 ERD를 작성해 보자.
승원 영업부서의 ERD
요구 사항
- 영업사원은 0 ~ n명의 고객을 관리한다.
- 고객은 0 ~ n개의 주문을 넣을 수 있다.
- 주문에는 1 ~ n개의 상품이 들어간다.
정답
무무오브레전드의 ERD
요구사항
- 선수들은 1명의 챔피언을 고를 수 있다.
- 챔피언은 한 개 이상의 스킬을 갖는다.
- 스킬은 한 개 이상의 특성을 갖는다.
정답
4.2.3 정규화 과정
정규화 과정이란?
- 릴레이션 간의 잘못된 종속 관계로 인해 *데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정이다.
- 정규화 과정은 정규형 원칙을 기반으로 정규형을 만들어가는 과정이며, 정규화된 정도는 정규형(NF, Normal Form)으로 표현한다.
- 기본 정규형 : 제1 정규형, 제2 정규형, 제3 정규형, 보이스/코드 정규형
- 고급 정규형 : 제 4정규형, 제5 정규형
*데이터베이스 이상 현상 : 회원이 한 개의 등급을 가져야 하는데 세 개의 등급을 갖거나 삭제할 때 필요한 데이터가 같이 삭제되고, 데이터를 삽입해야 하는데 하나의 필드 값이 NULL이 되면 안 되어서 삽입하기 어려운 현상을 말함.
정규형 원칙
- 정규형의 원칙이란 같은 의미를 표현하는 릴레이션이지만 좀 더 좋은 구조로 만들어야 하고, 자료의 중복성은 감소해야 하고, 독립적인 관계는 별개의 릴레이션으로 표현해야 하며, 각각의 릴레이션은 독립적인 표현이 가능해야 하는 것을 말한다.
제1 정규형
- 릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 한다.
- 릴레이션의 속성 값 중에서 한 개의 기본키에 대해 두 개 이상의 값을 가지는 반복 집합이 있어서는 안 된다.
- 만약 반복 집합이 있다면 제거해야 한다.
제2 정규형
- 릴레이션이 제1 정규형이며 *부분 함수의 종속성을 제거한 형태를 말한다.
*부분 함수의 종속성 제거 : 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것을 말한다.
❗️ 이 때 주의할 점은 릴레이션을 분해할 때 동등한 릴레이션으로 분해해야 하고, 정보손실이 발생하지 않는 무손실 분해로 분해되어야 한다는 것이다.
제3 정규형
- 제2 정규형이고 기본키가 아닌 모든 속성이 이행적 함수 종속(ransitive FD)을 만족하지 않는 상태를 말한다.
이행적 함수 종속
이행적 함수 종속이란?
- A➡️B와 B➡️C가 존재하면 논리적으로 A➡️C가 성립하는데, 이때 집합 C가 집합 A에 이행적으로 함수 종속이 되었다고 한다.
예를 들어~
모모쇼핑몰이 있다고 해보자. 유저 ID와 등급, 할인율이 정해져 있는 테이블은 아래와 같이 분해하는 것을 말한다.
보이스/코드 정규형(BCNF)
- 제3 정규형이고, *결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태를 말한다.
*결정자 : 함수 종속 관계에서 특정 종속자(dependent)를 결정짓는 요소, 'X➡️Y'일 때 X는 결정자, Y는 종속자이다.
'도서' 카테고리의 다른 글
쏙쏙 들어오는 함수형 코딩 [CHAPTER 1] (0) | 2023.07.21 |
---|---|
면접을 위한 CS 전공지식 노트 [CHAPTER 5] (1) (0) | 2023.07.01 |
면접을 위한 CS 전공지식 노트 [CHAPTER 4] (1) (0) | 2023.06.24 |
면접을 위한 CS 전공지식 노트 [CHAPTER 3] (4) (0) | 2023.06.24 |
면접을 위한 CS 전공지식 노트 [CHAPTER 3] (3) (0) | 2023.06.24 |