본문으로 바로가기

[DB] 1. 데이터베이스 (Database)

category CS/Database 2019. 1. 20. 21:50
1_데이터베이스란

1. 데이터베이스란?

  1. 데이터베이스의 정의
  2. 데이터베이스의 특징
  3. 데이터베이스의 성능
  4. 데이터 언어
  5. 스키마
  6. 키의 종류와 개념

 

1. 데이터베이스의 정의

1.1. 데이터베이스의 등장 배경

과거에는 파일 시스템을 이용하여 데이터를 관리하였다. 하지만 하나의 응용 프로그램에서 데이터를 관리하기 위해서는 독립적인 데이터 파일을 가져야했다. 또한, 데이터 수정 시, 모든 응용프로그램의 데이터 파일을 일일히 수정해줘야하는 번거로움이 발생했다.

이런 파일 시스템은 종속성, 중복성, 데이터 무결성의 문제점을 가져왔다. 이러한 문제를 해결하기 위해 데이터베이스 시스템이 등장하였다.

 

1.2. 데이터베이스의 정의

  1. 통합 데이터 (Integrated Data) : 효율성을 위해 중복이 최소화된 데이터
  2. 저장 데이터 (Stored Data) : 특정 저장매체에 저장된 데이터
  3. 운영 데이터 (Operational Data) : 조직의 목적을 위해 반드시 필요한 데이터
  4. 공유 데이터 (Shared Data) : 여러 응용 프로그램이 공동으로 사용하는 데이터

 

 

2. 데이터베이스의 특징

2.1. 데이터베이스의 5가지 특징

  1. 실시간 접근성 (Real Time Accessibility) : 사용자의 요청에 즉시 처리하여 응답
  2. 계속적인 진화 (Continuous Evolution) : 항상 최신 데이터를 동적으로 유지
  3. 동시 공유 (Concurrent Sharing) : 여러 사용자가 동시에 데이터 공유
  4. 내용에 의한 참조 (Content Reference) : 데이터 참조시, 주소가 아닌 내용에 따라 참조
  5. 데이터의 독립성 (Independence) : 논리적 독립성 (응용 프로그램과 데이터베이스를 독립) 과 물리적 독립성 (응용 프로그램과 보조기억장치 등의 물리적 장치를 독립) 을 가짐

 

 

3. 데이터베이스의 성능

3.1. 데이터베이스 성능 이슈

디스크 I/O 를 어떻게 줄이느냐에서 시작된다. 디스크 I/O 란 디스크드라이브의 플래터를 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시켜 데이터를 읽는 것을 의미한다.

이 때, 데이터를 읽는데 걸리는시간은 디스크 헤더를 움직여서 해당 위치로 옮기는 단계에서 결정된다. 즉, 디스크의 성능은 디스크 헤더의 이동을 최소화하여 얼마나 많은 데이터를 한번에 기록하느냐에 결정된다고 볼 수 있다

그렇기 때문에 순차 I/O 가 랜덤 I/O 보다 빠를 수 밖에 없다. 하지만 현실에서의 작업은 대부분 랜덤 I/O 이다. 랜덤 I/O 를 순차 I/O 로 바꿀 수 있을까? 이러한 생각에서부터 시작되는 데이터베이스 쿼리 튜닝은 랜덤 I/O를 줄여주는 것이 목적이라 할 수 있다.

 

 

4. 데이터 언어

4.1. DDL (데이터 정의어)

  • 데이터베이스 구조, 데이터 형식, 접근 방식 등을 설정하기 위한 언어
  • 데이터베이스의 논리적, 물리적 구조 정의 및 변경 및 스키마 제약조건 정의

 

4.2. DML (데이터 조작어)

  • 데이터 처리를 위해 사용자와 DBMS 사이의 인터페이스를 위한 언어
  • 데이터의 검색, 삽입, 삭제, 갱신

 

4.3. DCL (데이터 제어어)

  • 데이터 보안 : 권한이 없는 접근으로부터 데이터베이스를 보호
  • 데이터 무결성 : 사용자가 제약 조건을 정의하면 데이터 삽입, 갱신, 삭제 마다 검사
  • 데이터 회복 : 시스템 오류로부터 데이터베이스를 회복
  • 병행 제어 : 여러 사용자가 동시에 데이터베이스를 공유하도록 지원

 

 

5. 스키마

5.1. 외부 스키마 (서브 스키마)

  • 데이터베이스의 논리적 구조를 정의
  • 하나의 DBMS 에는 여러개의 외부 스키마가 존재
  • 사용자나 응용 프로그래머에 의해 정의

 

5.2. 개념 스키마

  • 데이터베이스의 전체적인 논리적 구조
  • 하나의 DBMS 에 하나만 존재
  • 데이터베이스 관리자에 의해 정의
  • 제약 조건, 접근 권한, 보안 정책, 무결성 규정에 관한 명세를 정의

 

5.3. 내부 스키마

  • 데이터베이스의 물리적 구조를 정의
  • 물리적 저장장치의 시점으로 단 하나만 존재
  • 시스템 프로그래머나 시스템 설계자에 의해 설계

 

 

6. 키의 종류와 개념

6.1. 슈퍼키 (Super Key)

  • 한 릴레이션 내에 있는 속성들로 구성된 키

 

6.2. 후보키 (Candidate Key)

  • 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합
  • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야함
  • 후보키는 모든 튜플에 대해 유일성과 최소성을 만족시켜야함

유일성 : 하나의 키로 어떠한 행을 바로 찾아낼 수 있는 능력

최소성 : 레코드들을 식별할 때, 꼭 필요한 속성들로만 구성

 

6.3. 기본키 (Primary Key)

  • 후본키 중에서 선정된 키
  • 특정 튜플을 유일하게 구별할 수 있는 속성
  • NULL 값을 가질 수 없고, 동일한 값이 중복되어 저장될 수 없음 (개체 무결성 조건)

 

6.4. 대체키 (Alternate Key)

  • 기본키에 선정되지 못한 후보키

 

6.5. 외래키 (Foreign Key)

  • 릴레이션 R1, R2 에서 릴레이션 R1 이 참조하고 있는 릴레이션 R2 의 기본키와 같은 R1 의 속성
  • 참조하는 릴레이션과 같은 도메인을 가짐
  • 참조하는 테이블에서 존재하지 않는 기본키 값은 입력 불가 (참조 무결성 조건)
  • NULL 값을 가질 수 있음

'CS > Database' 카테고리의 다른 글

[DB] 4. SQL  (0) 2019.01.21
[DB] 3. 트랜잭션 (Transaction)  (0) 2019.01.20
[DB] 2. 정규화 (Nomalization)  (0) 2019.01.20