본문 바로가기
Database

[Database] RDBMS의 기본구조 (테이블, 외래키, 정규화)

by 구루미94 2022. 3. 17.

1. DBMS 란?

- Database Management System (데이터베이스 관리 시스템)

- 통상적으로 DB로 줄여서 표현함

 

2. 데이터베이스(Database) 란?

- 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합

 

3. 관계형(Relational) DBMS 란?

- Relation(관계) 란? : 동일한 구조로 이루어진 튜플(레코드)의 집합

- 테이블기반(Table based)으로 데이터 저장하는 시스템: 테이블, 컬럼, 레코드, ...

- 여러 개의 테이블로 나누고 각 테이블 간의 관계를 정의하는 방식의 DBMS의 한 종류

  (각 테이블 간의 관계는 외래키라는 공통컬럼을 가짐)

 

4. RDBMS 란?

(1) DBMS

- 데이터를 CRUD(Create, Retrieve, Update, Delete) 하는 시스템

- 데이터를 저장(수정, 삭제)하고 검색하는 시스템

- 검색에 좀 더 최적화

(2) DB(Database) 란?

- 여러 개의 테이블을 묶어서 관리하는 개념 (예전. 카탈로그)

- 여러 개의 테이블이 하나의 DB를 구성

- DBMS는 여러 개의 DB를 관리하는 시스템

- DBMS-Database-Table

- 테이블은 하나의 관계를 표현

  (테이블은 여러개의 레코드(튜플)이 들어있음, 하나의 레코드는 여러 개의 컬럼으로 구성됨)

 

5. 스키마(Schema)

- 테이블의 구조 및 테이블간의 관계를 정의

- 테이블은 스키마에서 정의된 대로만 레코드를 저장/ 관리

- 이 형식 외에는 다른 값은 어횽하지 않음 -> 정형데이터

 

6. 모델링(Modeling)

- 요구사항에서 DB스키마를 만드는 작업

- 개념모델링/ 논리모델링/ 물리모델링이 있음

 

7. 정규화

- DB 스키마는 고정되어 있지 않고 계속 변경 (업데이트)

- DB 스키마의 설계를 재구성

  (불필요한 데이터를 삭제, CUD에 발생할 수 있는 이상현상을 제거)

- 불필요한 데이터를 삭제

- 논리적인 데이터 저장 구조를 가지도록 변경

- 데이터의 중복을 정규화를 통해 중복성 제거

- 보통 1, 2, 3, BC 정규형까지 적용한 것을 정규화 했다고 말함

- 정규화를 하면 보통 테이블이 큰 테이블에서 여러 개의 작은 테이블로 분할됨

 

8. 검색

- 일반적인 DBMS는 레코드 추가/ 수정/ 삭제보다 검색을 빠르게 만드는 것이 주요한 목표

- 검색을 발리하기 위해서 주로 인덱스라는 개념을 사용

- DBMS는 다양한 종류의 인덱스 지원(B-tree/ Hash/ R-tree/ Full-text index/ ...)

- 가장 기본이 되는 인덱스는 B-tree( 정확히는 B+트리)

 

9. 인덱스(B-tree)

- 보통 B+ 트리를 말함( 인덱스와 데이터 저장소 분리)

- 인덱스파일만 별도로 구성하고 데이터 파일은 참조 형태로

- 바이너리 검색의 변형

- 인덱스는 CUD가 일어나면 재구성 (정렬 후 인덱스 업데이트)

- 단점: 연속적인 검색 어려움 -> 연결 리스트를 사용해 보완

         데이터의 추가 패턴에 따라 트리 모양이 skew(한쪽에 쏠림) 발생 -> 어떤 데이터를 찾는지에 따라 시간이 달라짐

- 인덱스를 사용하는 경우에도 느려지는 경우는?

  - 저장되는 데이터가 많아지면 B-tree의 Depth가 늘어나게 되서 검색 속도가 느려짐

  - 해결책 -> 파티셔닝/ 샤딩

 

10. 외래키(Foreing Key)

- 어떤 테이블의 기본키가 다른 테이블에 속해 있는 컬럼

  - FK가 PK인 경우 (식별관계)

  - FK가 일반 컬럼인 경우 (비식별관계)

- 두 테이블 간의 공통 컬럼: 테이블 조인시 기준이 되는 컬럼

 

11. 조인

- 여러 테이블을 합해서 큰 테이블로 만드는 연산

  - 테이블이 여러 개로 나눠진 상태에서 원하는 데이터를 찾으려면 테이블을 합쳐서 필요한 데이터 검색

- 조인은 테이블 단위 연산임

  - 레코드 개별적으로 하는 연산 아님

  - 조인과정에서 각 테이블 간의 공통컬럼이 있어야 함 (표준 조인)

  - 공통컬럼을 외래키라고 함.

728x90

댓글