Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 디자인챌린지
- 국비지원취업
- 부트캠프
- 내일배움카드
- 패스트캠퍼스
- 국비지원
- 오블완
- 객체지향
- 백엔드개발자
- OPENPATH
- 백엔드 부트캠프
- UXUIPrimary
- 티스토리챌린지
- 내일배움캠프
- 오픈챌린지
- 디자인교육
- 오픈패스
- Java
- 백준
- UXUI챌린지
- baekjoon
- mysql
- KDT
- UXUI기초정복
- 국비지원교육
- 백엔드
- Spring
- 환급챌린지
- 디자인강의
- Be
Archives
- Today
- Total
군만두의 IT 공부 일지
[스터디3] 데이터베이스 - 05. ERD와 정규화 과정 본문
목차
4.2 섹션 위주로 데이터베이스에 대해 정리하려고 합니다. 데이터베이스 과목을 수강하면서 공부했었는데, 정규화 과정이 헷갈리는 것 같아요.
4장 데이터베이스
4.1 데이터베이스의 기본
- 데이터베이스(DB: DataBase): 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음
- DBMS(DataBase Management System): 데이터베이스를 제어, 관리하는 통합 시스템
- 데이터베이스 위에 DBMS가 있고, 그 위에 응용 프로그램이 있는 구조로 데이터를 주고 받음.
4.1.1 엔터티
- 엔티티(entity): 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사
- 예) 회원 - 엔티티 / 속성 - 이름, 아이디, 주소, 전화번호 등
- A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적인 경우 A는 약한 엔티티이고, B는 강한 엔티티임.
4.1.2 릴레이션
- 릴레이션(relation): 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
- 데이터베이스는 엔티티에 관한 데이터를 릴레이션 하나에 담아서 관리함.
- 데이터베이스 종류
- 관계형 데이터베이스
- 릴레이션 = 테이블
- MySQL 구조는 레코드-테이블-데이터베이스로 이루어짐.
- NoSQL 데이터베이스
- 릴레이션 = 컬렉션
- MongoDB의 구조는 도큐먼트-컬렉션-데이터베이스로 이루어짐.
- 관계형 데이터베이스
4.1.3 속성
- 속성(attribute): 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보
- 속성들 중 서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔티티의 속성이 됨.
4.1.4 도메인
- 도메인(domain): 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합
- 예) 속성 - 성별 / 속성이 가질 수 있는 값 - {남, 여}
4.1.5 필드와 레코드
- 예) 엔티티 - 회원 / 테이블 - member / 속성 - 이름, 아이디 등 / 필드 - name, ID, address 등
- 레코드(튜플): 테이블에 쌓이는 행(row) 단위의 데이터
- 필드 타입: 숫자, 날짜, 문자 타입 등
- 숫자 타입: TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 등
- 날짜 타입: DATE, DATETIME, TIMESTAMP 등
- 문자 타입: CHAR, VARCHAR, TEXT, BLOB, ENUM, SET 등
4.1.6 관계
- 데이터베이스에서 테이블은 여러 개가 있고, 여러 테이블은 관계화살표로 서로 관계가 정의되어 있음.
- 1:1 관계
- 1:N 관계
- N:M 관계
4.1.7 키
-
키: 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치
- 기본키(PK: Primary Key): 유일성과 최소성을 만족하는 키. 자연키 또는 인조키 중에 골라 설정함.
- 자연키: 중복된 값을 제외하며 중복되지 않는 것을 자연스럽게 뽑다가 나오는 키
- 인조키: 인위적으로 생성한 키
- 외래키(FK: Foreign Key): 다른 테이블의 기본키를 그대로 참조하는 값. 개체와의 관계를 식별함.
- 후보키(candidate key): 기본키가 될 수 있는 후보들. 유일성과 최소성을 동시에 만족하는 키
- 대체키(alternate key): 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 키
- 슈퍼키(super key): 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
- 기본키(PK: Primary Key): 유일성과 최소성을 만족하는 키. 자연키 또는 인조키 중에 골라 설정함.
4.2 ERD와 정규화 과정
- ERD(Entity Relationship Diagram): 릴레이션 간의 관계들을 정의한 것
4.2.1 ERD의 중요성
- 장점: 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용함.
- 단점: 비정형 데이터(미리 정의된 데이터 모델이 없거나, 미리 정의된 방식으로 정리되지 않은 정보)를 충분히 표현할 수 없음.
4.2.2 예제로 배우는 ERD
- 예) 승원 영업부서의 ERD
- 요구사항
- 영업사원은 0~n명의 고객을 관리함.
- 고객은 0~n개의 주문을 넣을 수 있음.
- 주문에는 1~n개의 상품이 들어감.
- 책 정답
- 사원 - 고객 - 주문 - 상품으로 ERD를 그림.
- 아래 그림은 책과는 다르게 테이블 필드, 타입을 포함해 ERDCloud로 만듦.
- 요구사항
4.2.3 정규화 과정
- 정규화 과정: 릴레이션 간 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
- 기본 정규형: 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형
- 고급 정규형: 제4정규형, 제5정규형
- 이상 현상: 데이터베이스가 잘못 설계되어 데이터를 추가, 삭제, 수정할 때 비효율적이거나 오류가 발생하는 현상. 데이터 중복, 불필요한 데이터 종속성, 불완전한 데이터 구조 등으로 인해 발생함.
정규형 | 설명 | 목표 및 이유 |
제1정규형(1NF) | 릴레이션의 모든 도메인이 원자값(Atomic)으로만 구성되어야 함. 각 행마다 고유한 키가 있어야 함. | 중복 최소화 및 데이터 무결성 향상. 각 필드가 하나의 값만을 가지도록 함으로써 데이터의 일관성 유지. |
제2정규형(2NF) | 1NF를 만족하고, 모든 비주요 속성이 기본키에 완전 함수적 종속인 상태 | 부분 함수의 종속성 제거를 통해 데이터의 중복을 줄이고, 데이터 구조의 효율성 증대. |
제3정규형(3NF) | 2NF를 만족하고, 모든 비주요 속성이 기본키에 이행적 함수 종속이 아닌 상태 | 이행적 함수 종속성 제거를 통해 데이터의 중복을 추가로 줄이고, 갱신 이상 방지. |
보이스/코드 정규형(BCNF) | 3NF를 만족하며, 모든 결정자가 후보 키인 상태 | 함수 종속성 제거를 통해 데이터 무결성 강화. |
제4정규형(4NF) | BCNF를 만족하며, 모든 다치 종속을 제거한 상태 | 다치 종속으로 인한 데이터 중복 제거. |
제5정규형(5NF) | 4NF를 만족하며, 모든 조인 종속이 후보 키에만 의존하는 상태 | 조인을 통해 발생할 수 있는 불필요한 데이터 중복 제거. |
이 글은 『 면접을 위한 CS 전공지식 노트 』 책을 학습한 내용을 정리한 것입니다.
'학습일지 > CS 지식' 카테고리의 다른 글
[스터디3] 자료구조 - 07. 복잡도 및 선형 자료 구조 (0) | 2025.01.11 |
---|---|
[스터디3] 데이터베이스 - 06. 트랜잭션과 무결성 (1) | 2025.01.03 |
[스터디3] 운영체제 - 04. CPU 스케줄링 알고리즘 (1) | 2025.01.01 |
[스터디3] 운영체제 - 03. 프로세스와 스레드 (1) | 2024.12.24 |
[스터디3] 네트워크 - 02. 네트워크 기기 (0) | 2024.12.23 |
Comments