[DB] 데이터베이스 이론

cowmin·2025년 6월 16일

1. 데이터 베이스란

1.1 데이터란?

현실의 무언가로부터 측정한 값

1.2 데이터베이스란?

이러한 자료를 효율적으로 수집 및 저장하기 위해 데이터 베이스 사용
데이터베이스란 상호 연관 있는 데이터들의 체계적인 집합

1.3 데이터베이스 특징

  • 자료 추상: 복잡한 자료 쉽게 사용, 개념화, 사물의 공통 성질 추출
  • 자료 독립: 자료와 프로그램의 독립성 유지
  • 자기 정의: 자료의 구성과 내용을 DB 자신이 저장 및 관리

1.4 데이터베이스 장점

데이터의 논리적 독립성
데이터의 물리적 독립성
데이터의 무결성 유지
데이터 중복성 최소화
데이터 불일치 제거

1.5 데이터처리 시스템의 형태

1. 일괄 처리 시스템

시스템의 효율성을 최대한 높이기 위하여 일정 시간 또는 일정량의 데이터를 모아서 한번에 처리하는 시스템

2. 온라인 실시간처리 시스템

데이터 발생 즉시 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하도록 하는 방식으로 단순히 온라인 처리 시스템이라고 한다.

3. 분산 처리 시스템

지리적으로 분산되어 있는 여러대의 컴퓨터를 통신 회선으로연결하여 논리적으로 하나의 시스템을 사용하느 것처럼 운영하는 방식이다.

1.6 데이터베이스 발전과정

파일 -> 시스템 -> 계층형 -> 망형 -> 관계형 -> 객체형 -> 객체 관계형


2. DBMS

2.1 DBMS란?

Database Management System
모든 프로그램들이 데이터베이스를 공유 있도록 관리해 주는 소프트웨어

2.2 DBMS 종류

  • 관계형 DBMS (RDBMS): MySQL, PostgreSQL, Oracle, SQL Server, DB2
  • 비관계형 DBMS (NoSQL): MongoDB, Cassandra, Redis, DynamoDB

2.3 DBMS 필수 기능

  • 정의 기능: 데이터의 형태 구조 데이터를 저장하는 것에 관한 내용 정의
  • 조작 기능: 사용자의 요구에 따라 데이터의 검색 갱신 삽입 삭제 등을 지원
  • 제어 기능: 데이터의 정확성과 안전성을 유지하는 기능

2.4 스키마란?

스키마란 DB의 구조(개체, 속성, 관계)에 대한 정의 및 제약 조건들을 기술한 것

  • 외부 스키마: 실제로 이용자가 취급하는 데이터구조를 정의
  • 개념 스키마: 데이터 전체의 구조를 정의
  • 내부 스키마: 데이터 구조의 형식을 구체적으로 정의
    스키마 구조

오라클: DB > 스키마
mysql: DB = 스키마


3. 데이터 모델링

3.1 데이터 모델링이란?

데이터의 크기 및 유형을 결정하여 DB 사용할 있도록 데이터를 정형화

3.2 DB 설계 과정

  1. 요구 분석
    DB를 사용할 주요 사용자를 결정
    업무 관련 문서 분석, 면담, 설문 조사 등의 방법을 이용해 요구 사항 파악

  2. 개념적 설계
    데이터를 구조화, 정형화시키기 위해 추상적인 개념으로 표현하는 과정
    ex) E-R 다이어그램

  3. 논리적 설계
    개념적 스키마를 관계형 DB인 경우 테이블과 같은 논리적 데이터 모델을 이용해 논리적 구조로 표현, 정규화 수행

  4. 물리적 설계
    하드웨어나 운영체제의 특성을 고려하여 필요한 인덱스 구조나내부 저장 구조 등에 대한 물리적인 구조를 설계

  5. 구현
    SQL을 사용하여 DBMS를 통해 실제 DB를 만드는 과정


4. E-R 다이어그램

4.1 ERD 기호

ERD 기호

4.2 개체란?

현실 세계에서 필요한 사람이나 사물과같이 구별되는 모든 것
데이터로써 DB 저장할 가치가 있는 중요한 사람이나 사물 개념 사건 등

4.3 속성이란?

개체나 관계가가지고 있는 고유의 특성
DB 저장하는 데이터의 가장 작은 논리적 단위

  • 속성의 유형
유형설명
단일 값 속성값을 하나만 가질 있는 속성
다중 값 속성값을 여러개 가질 있는 속성
단순 속성의미를 더는 분해할 없는 속성
복합 속성의미를 분해할 있는 속성
유도 속성기존의 다른 속성의 값에서 유도되어 결정되는 속성
널 속성아직 결정되지 않았거나 존재하지 않는 값
키 속성각 개체를 식별하는 사용되는 속성

4.4 관계란?

서로 다른 개체가 맺고있는 의미있는 연관성
개체 사이의 대응 관계, 즉 매핑을 의미

4.5 ERD 관계 유형

ERD 관계

ERD 관계


5. 관계 데이터 모델

5.1 데이터 모델의 종류

  • 계층 데이터 모델: 트리 데이터 모델이라고도 부모 자식 관계를 가짐
  • 네트워크 데이터 모델: 데이터 모델이라고도 그래프 형태로 표현
  • 관계 데이터 모델: 데이터 모델이라고도 구조가 단순 사용이 편리

5.2 관계형 데이터 모델이란?

현실 세계의 모든 데이터를 논리적인 릴레이션 구조로 구성

5.3 관계형 데이터 모델 관련 용여

  • 릴레이션: 정보 저장의 형태가 2차원 구조의 테이블
  • 속성: 테이블의 각 열을 의미
  • 튜플: 테이블의 행을 구성하는 속성들의 집합, 레코드라고도 부름
  • 도메인: 속성이 취할 있는 값들의 집합
  • 기수: 튜플의 수, Cardinality
  • 차수: 속성의 수, Degree

5.4 키의 종류

  • 슈퍼키: 유일성은 갖지만 최소성을 만족시키지 못하는 속성의 집합
  • 후보키: 유일성과 최소성을 모두 갖는 속성의 집합
  • 기본키: 개체 식별자, 튜플을 유일하게 식별할 있는 속성의 집합
  • 대체키: 기본키를 제외한 후보키
  • 외래키: 다른 테이블을 참조하는데 사용되는 속성

5.5 데이터 무결성이란?

현실 세계의 실제 값과DB 저장된 값이 일치하는 정확성을 의미

5.6 무결성 제약조건의 종류

  • 개체 무결성: 기본 릴레이션의 기본키를 구성하는 어떤 속성도 NULL과 중복을 허용하지 않는다
  • 참조 무결성: 외래키 값은 NULL이거나 참조하는 릴레이션에 있는 기본키이다.
  • 도메인 무결성: 특정 속성의 값은 속성에 정의된대로의 값만 허용한다.

6. 사상(Mapping)

6.1 사상이란?

ER모델의 산출물인 ERD를 이용하여 논리적 설계 단계를 수행

6.2 사상 규칙

  • 개체는 하나의 릴레이션으로 변환
  • 다대다(n:m) 관계는 하나의 릴레이션으로 변환
  • 일대다(1:n) 관계는 외래키 속성으로 표현
  • 일대일(1:1) 관계는 외래키 속성으로 표현
  • 다중 값 속성은 다른 릴레이션으로 변환

7. 정규화

7.1 정규화란?

이상 문제를 해결하기 위해 속성 종속관계를 분석 릴레이션을 분해하는 과정
DB 물리적 구조나 물리적 처리에 영향을 주는 것이 아닌 논리적 처리에 영향

7.2 이상 문제의 종류

이상이란 속성 간에 존재하는 여러 종속 관계를 하나의 릴레이션에 표현함으로인해 발생하는 현상

  • 삽입 이상: 데이터를 저장할 원하지 않는 정보가 함께 삽입되는 경우
  • 삭제 이상: 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제
  • 갱신 이상: 중복된 튜플 일부의 속성만 갱신시킴으로써 정보의 모순성 발생

7.3 제 1정규화 (1NF)

도메인이 모두 원자값
1. 각 컬럼이 하나의 속성만을 가져야 한다.
2. 하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야 한다.
3. 각 컬럼이 유일한(unique) 이름을 가져야 한다.
4. 칼럼의 순서가 상관없어야 한다.

7.4 제 2정규화 (2NF)

부분 함수 종속 제거
1. 제 1정규형을 만족해야 한다.
2. 모든 컬럼이 부분적 종속이 없어야 한다. 즉, 모든 컬럼이 완전 함수 종속을 만족해야 한다.

7.5 제 3정규화 (3NF)

이행 함수 종속 제거
1. 제 2정규형을 만족해야 한다.
2. 기본키를 제외한 속성들간의 이행 종속성 (Transitive Dependency)이 없어야 한다.

7.6 보이스-코드 정규화 (BCNF)

결정자 후보키가 아닌 것들은 제거
1. 제 3정규형을 만족해야 한다.
2. 모든 결정자가 후보키 집합에 속해야 한다.

7.7 제 4정규화 (4NF)

다치 종속 제거
1. BCNF를 만족해야 한다.
2. 다중값 종속(다치 종속)이 없어야 한다.

7.8 제 5정규화 (5NF)

조인 종속성 제거
1. 4NF를 만족해야 한다.
2. 더 이상 비손실 분해를 할 수 없어야 한다.

1개의 댓글

comment-user-thumbnail
2025년 6월 16일

잘 보고갑니다

답글 달기