Skip to content

Latest commit

 

History

History
69 lines (61 loc) · 5.19 KB

database.md

File metadata and controls

69 lines (61 loc) · 5.19 KB

데이터베이스

  • 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임
  • 데이터를 모아둔 창고!

데이터베이스 관리 시스템 (DBMS, DataBase Management System)

  • 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어
  • DBMS를 사용하기 전에는 파일 시스템을 사용하여 데이터를 관리
    • 데이터를 저장한 파일을 응용 프로그램의 저장 장치(하드 디스크)에 저장 -> 데이터와 응용 프로그램이 의존적
    • 응용 프로그램마다 데이터를 따로 관리 ex) 쇼핑몰의 경우 주문관리 프로그램과 고객 관리 프로그램이 각각 따로 데이터를 관리
    • 데이터 종속성, 중복성 등 문제 발생 -> DBMS는 이를 해결해줌

DBMS의 특징

  • 독립성 : 응용 프로그램과 데이터가 서로 독립적 -> 하나를 수정해도 나머지에 영향을 주지않음
  • 무결성 : 데이터 유효성 검사를 통해 잘못된 데이터(조건에 맞지 않는 데이터)가 저장되지 않음
  • 보안성 : 접근 허용된 사용자만 데이터베이스에 접근할 수 있음
  • 일관성 : 중복 데이터 중 일부만 변경되어도 모두 반영됨
  • 중복 최소화 : 데이터를 통합해서 관리하기 때문에 같은 데이터를 중복 저장하지 않음
  • 파일 시스템에는 이러한 기능을 제공하지 않음

DBMS의 성능

  • DBMS는 데이터를 블록 단위로 하드 디스크에 저장
  • 사용자가 원하는 데이터를 포함한 블록을 하드 디스크에서 메인 메모리로 읽어옴 (디스크 I/O작업) -> 오래 걸림!
  • 많은 블록 + 자주 참조되는 블록은 메인 메모리에 저장하여 디스크 I/O를 줄이는 것이 DBMS의 성능을 결정

데이터는 하드 디스크에 어떻게 저장되는가

  • 하나의 릴레이션은 하나의 파일에 저장
  • 하나의 파일은 여러 개의 레코드들의 집합으로 나뉘고 각 집합은 하나의 블록에 저장됨 (블록 = 한 개 이상의 섹터)
  • 블록들은 물리적으로 인접하게 저장되지 않음 + 다음 블록을 가리키는 포인터를 저장
  • 파일 내 클러스터링 (intra-file clustering)
    • 하나의 파일 내에서 함께 검색될 가능성이 높은 레코드들을 디스크 상에서 물리적으로 가까운 곳에 저장
  • 파일 간 클러스터링 (inter-file clustering)
    • 논리적으로 연관되어 함께 검색될 가능성이 높은 두 개 이상의 파일에 속한 레코드들을 디스크 상에서 물리적으로 가까운 곳에 저장

파일 조직 유형

  • heap file
    • 레코드들이 삽입된 순서로 파일에 저장 (그냥 쌓아둠) / 가장 단순한 파일 조직
    • 모든 레코드들을 참조하고 레코드 접근 순서는 중요하지 않을때 효율적
    • 특정 레코드를 검색하는 경우 모든 레코드를 순차적으로 접근하기 때문에 비효율적
  • sequential file
    • 레코드들이 하나 이상의 필드(search key) 값에 따라 순서대로 저장된 파일
    • 삽입시 레코드의 순서를 고려해야 하기 때문에 시간이 많이 걸림
    • where절에 search key 조건이 있다면 효율적인 검색 가능

무결성 (integrity)

  • 데이터베이스에 들어있는 데이터의 정확성과 일관성을 유지하고 보장하기 위한 조건
  • null 무결성 : 특정 속성값에 null이 올수 없다는 조건이 주어진 경우 그 속성은 null이 될 수 없음
  • 개체 무결성 : 릴레이션에서 primary key를 구성하는 속성은 null이나 중복값을 가질 수 없음
  • 참조 무결성 : 릴레이션은 참조할 수 없는 외래키를 가질 수 없음
  • 도메인 무결성 : 각 속성의 타입, null 허용 등을 정의하고 올바른 데이터 타입이 입력되었는지 확인
  • 키 무결성 : 한 릴레이션에는 최소한 하나의 키가 존재해야함

KEY

  • 데이터베이스에서 조건에 맞는 레코드를 찾거나 검색 시 기준이 되는 속성 (attribute 집합)
  • super key : 테이블의 레코드를 유일하게 식별할 수 있는 키 (유일성)
  • candidate key : super key 중에서 유일하게 식별하는데 꼭 필요한 속성으로만 구성된 키 (유일성과 최소성)
  • primary key : candidate key 중에서 선택된 키
  • alternate key : candidate key 중에서 primary key를 제외한 나머지 키
  • foreign key : 다른 테이블의 레코드를 유일하게 식별할 수 있는 키 / 참조하는 테이블의 primary key

VIEW

  • 테이블을 기반으로 만들어진 가상의 테이블
  • 실제로 데이터를 저장하지 않고 논리적으로만 존재
  • 유저는 하나의 실제 테이블로부터 가상의 논리적 테이블(view)를 생성하여 조작 가능
  • 왜 사용할까?
    • 논리적 데이터 독립성을 구현할 수 있음
    • 논리적 데이터 독립성 : 응용 프로그램들이 서로 영향을 주지 않고 원하는 논리적 구조를 제공
    • 물리적 데이터 독립성 : 응용 프로그램들이 서로 영향을 주지 않고 데이터의 물리적 구조를 변경