All Articles

Database란?-2(schema)


원래 데이터베이스 설계와 구축 등에 대해 포스팅 하려 했지만 설계 전에 스키마란게 뭔지 알고 싶어서 스키마부터 정리한 후 설계 부분을 요약해서 설명하고, 설계에 대한 자세한 얘기는 다음에 하려고 한다. 기본 개념을 아직 숙지못했다면 아래 블로그를 한번 보고 오는 걸 추천한다.

Database란?


스키마란

  • 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조
  • 스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.
  • 스키마는 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 나눠진다.
    (생활코딩 이고잉님의 예시를 빌리자면, 엑셀에서 데이터를 입력할 때 마구잡이로 입력하는게 아닌, 항목을 정하고, 그 안에 해당하는 값을 넣으면서 정리를 한다. 한 열에 들어가야 하는 데이터가 숫자인지, 글자인지, 공란일 수 있는지 등등의 정의를 하는 것을 스키마라고 한다.)

메타데이터: 어떠한 목적을 가지고 만들어진 데이터
Entity: 객체라는 의미로 유용한 정보를 저장하고 관리하기 위한 집합, 명사이며, 저장이 되기 위한 어떤 것을 의미(==table)
Attribute: 테이블을 구성하는 데이터들 중 세로로 묶은 데이터셋을 의미함(개체의 속성)

Relation: 개체 사이에 존재하는 관계에 대한 정의(동일한 구조로 이루어진 튜플의 집합을 말함)

Tuple: 사전적의미로는 유한개의 사물의 순서있는 열거라고 한다.

데이터베이스 테이블 구조

Entity의 기본 개념

스키마의 3계층

데이터베이스 관리 시스템(DBMS)은 외부스키마에 따라 명시되고, 사용자의 요구를 개념적 스키마에 적합한 형태로 변경하고, 이를 다시 내부적 스키마에 적합현 형태로 변환한다.

외부스키마

  • 사용자나 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의함
  • 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마(subschema)라고도 함
  • 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있고, 하나의 외부스키마를 여러개의 프로그램이나 사용자가 공용할 수 있다.
  • 같은 데이터베이스에 서로 다른 관점을 정의할 수 있도록 허용한다.
  • 사용자는 질의어(SQL)을 사용하여 DB에 접근하여 사용한다.

개념스키마

  • 데이터베이스의 전체적인 논리적 구조로서, 모든 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다.
  • 개체간의 관계나 제약조건을 나타내고, 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의
  • 데이터베이스 관리자에 의해 구성된다.

내부스키마

  • 물리적 저장장치 입장에서 본 데이터베이스의 구조
  • 데이터베이스에 저장될 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 물리적 순서 등을 나타냄
  • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마
  • 데이터베이스의 물리적인 구조

인덱스란?

  • 색인
  • DB에서 가장 빠르게 데이터를 찾아낼 수 있는 검색 방법
  • 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다고 함
  • 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다.
  • 책으로 비유하자면 제일 앞장에 있는 목차가 될 수 있다.
  • 유니크한 값이 아닌 여러 중복된 데이터가 있을 경우 두개의 열을 가지고 데이터를 찾을 수 있다. 장고에서 사용하는 문구를 통해 예시를 들자면, 데이터베이스에 저장된 값 중 32살의 이승재를 찾고자 한다면, Model.objects.filter(name="이승재", age=32)처럼 2개의 항목이름을 가지고 찾을 수 있음(물론 1개가 아닌 여러개 일수도 있음)

데이터베이스 설계란?

  • 데이터베이스 설계의 주요 목적은 데이터의 의미를 정확하게 파악하고, 정보 요구사항에 대한 의사소통을 원할하게 하는 데 있다.
  • 설계과정은 다음과 같다.

요구조건 분석

사용자가 무엇의 정보를 필요로 하고 있는지, 문제가 무엇이며 문제를 어떻게 해결할지 등을 분석하여 어떤 데이터베이스를 만들어야 할 지를 결정하는 단계

개념적 설계

데이터베이스의 구성요소(속성)들을 정하고, 다음 단계인 논리적 설계에서 수행할 작업을 설계

논리적 설계

본격적인 스키마 설계로, 이전 개념적 설계에서 만든 설계도를 사용자가 알아볼 수 있는 형태로 작업하는 것(제약조건 등을 해당 단계에서 제작)

물리적 설계

저장장치에 저장되는 형태의 알고리즘을 효율적이게 개선하고 수정하는 단계

자세한 설명은 다음 블로그에 이어서 진행하거나 아래에 추가해서 작성할 예정이다.

참고사이트:

DB설계 개요

데이터 구조와 설계

Database-설계 및 구축 예시