> For the complete documentation index, see [llms.txt](https://guswns3371.gitbook.io/study/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guswns3371.gitbook.io/study/readme/db/undefined.md).

# 데이터베이스

## 파일시스템

컴퓨터에서 파일을 관리하고 보관하기 위한 시스템을 말한다

> 파일시스템의 문제점

1. `데이터 종속문제` : 응용 프로그램과 데이터파일의 상호 의존관계로 인해 데이터 파일 구조가 변경되면 응용 프로그램도 이에 맞게 변경해야 한다
2. `데이터 중복문제` : 각 응용 프로그램마다 독립된 데이터 파일을 갖기 때문에 한 시스템 내의 데이터가 중복 저장된다

> 데이터 중복에 의한 문제점

1. `일관성 문제` : 특정 데이터가 하나의 사실을 나타내도록 일관성을 유지하기 어렵다 (중복데이터를 변경할경우 나머지 데이터들까지 모두 변경해줘야 함)
2. `보안 문제` : 중복된 데이터에 동일한 수준의 보안을 유지하기 어렵다
3. `경제성 문제` : 추가적인 저장공간이 필요하다
4. `효율성 문제` : 하나의 응용 프로그램이 데이터파일에 접근하는 동안 다른 응용 프로그램이 해당 데이터파일에 접근하지 못한다

## 데이터베이스

데이터 조직을 여러 응용 프로그램이 공유하기 위해 최소한의 중복으로 통합, 저장된 운영 데이터의 집합이다.

* `통합된 데이터` : 데이터 중복을 최소화하고 통제하여 의도적인 중복을 파악하기 때문에 관리가 용이함
* `공유 데이터` : 여러 응용 프로그램이 공동으로 데이터에 접근할 수 있다

> 파일시스템 vs 데이터베이스

| 파일 시스템                 | 데이터베이스                 |
| ---------------------- | ---------------------- |
| 데이터를 여러 프로그램이 공유하지 못한다 | 데이터를 여러 프로그램이 공유할 수 있다 |
| 데이터의 중복이 발생한다          | 데이터의 중복을 최소화한다         |
| 데이터 무결성 보장이 어렵다        | 데이터 무결성을 보장한다          |

> 특징

1. `데이터의 독립성`
   * `물리적 독립성` : 데이터베이스 구조를 변경하여도 응용 프로그램을 수정할 필요 없다
   * `논리적 독립성` : 데이터베이스의 논리적 구조로 다양한 응용 프로그램의 논리적 요구를 만족시킨다
2. `데이터의 무결성` : 데이터 유효성 검사를 통해 잘못된 데이터의 발생 가능성을 방지한다. (by Schema)
3. `데이터의 보안성` : 접근이 허용된 사용자들만 해당 자원에 접근할 수 있도록 계정 관리 및 접근 권한을 설정할 수 있다
4. `데이터의 일관성` : 연관된 데이터를 논리적 구조로 관리하여 일관성을 유지한다.(by FK) 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우를 배제할 수 있다
5. `데이터의 중복 최소화` : 데이터를 통합하여 관리하기 때문에 데이어 중복과 이에 파생된 문제를 해결한다

## key

* `슈퍼키` : 유일성을 만족하는 속성들의 부분집합
* `후보키` : 슈퍼키들 중에서 유일성과 최소성을 만족하는 속성들의 부분집합
* `기본키` : 후보키들 중에서 특정 레코드를 구분할 수 있는 최소 속성들의 부분집합(null이 될 수 없다)
* `대체키` : 후보키들 중에서 기본키로 선택된 속성들을 제외한 모든 키
* `복합키` : 한 개 이상의 속성으로 이루어진 키
* `외래키` : 다른 테이블의 레코드를 참조하기 위해 사용되는 키

## 순차 IO/랜덤 IO

순차IO : 물리적으로 인접한 페이지를 차례대로 읽는 방법

랜덤IO : 디스크의 여러 부분에 흩어진 데이터를 읽는 방법
