관리 관점으로 본 데이터베이스 종류
운영 데이터베이스 (웹 개발은 이곳에 해당)
일 기준으로 데이터를 수집, 수정, 보존할 필요가 있는 온라인 트랜잭션 처리 (Online Transaction Processing, OLTP) 에서 주로 사용 됨. 분 단위의 정보들을 지속적으로 반영해야하는 동적인 성격을 가진다.
분석 데이터베이스
장시간에 걸쳐 수집된 데이터를 저장하고 동향을 추적할 필요가 있는 온라인 분석 처리 (Online Analytical Processing, OLAP) 에서 주로 사용된다. 주로 동향이나 추세의 흐름을 분석하거나 긴 시간에 걸쳐 수집된 데이터의 통계를 조사하고 전략 사업을 계획할 때 필요한 데이터를 저장한다. 이러한 데이터들은 거의 변화가 없는 정적인 데이터를 저장한다. (특정 시 점의 데이터를 저장)
관계형 데이터베이스 모델
테이블로 구현된 관계에 데이터를 저장한다. 각 관계들은 튜플 / 레코드 , 속성 / 필드로 구성된다. 각 테이블에 있는 레코드는 고유값을 가지는 필드 (PK)에 의해 구분된다. 따라서 사용자는 데이터를 보기위해 레코드의 물리적인 위치를 알아야할 필요가 없다.
데이터베이스 설계의 목적
논리적 설계와 물리적 구현 단계로 DB 설계를 나눈다면, 논리적 설계는 청사진이고 물리적 구현은 실제로 집을 짓는 것이다. 논리적 설계가 중요한 이유는 DB 내 데이터의 일관성, 무결성, 정확성에 결정적으로 중요하기 때문이다. 부적절한 설계는 특정 유형의 정보를 검색하기 어려워지고, 부정확한 정보를 제공할 수 있게 되므로 결과적으로 운영을 수행하는 방식이나 향후 방향에 부정적인 영향을 끼칠 수 있다.
기존 데이터베이스 설계 방법
요구사항 분석
대상 사업에 대한 조사, 현재 시스템에 대한 사용자와 관리자와의 면담, 전체 사업에 대한 정보 요구 사항의 평가를 포함하는 단계이다.
데이터 모델링
ERD 같은 데이터 모델링 방법을 사용하여 데이터베이스 구조를 설계한다. 다양한 모델링 방법들은 테이블, 테이블 관계, 관계 특성과 같은 데이터베이스 구조의 다양한 측면을 시각적으로 표현하는 수단을 제공한다.
정규화
불필요한 데이터와 중복 데이터를 제거하고, CRUD 에서 발생하는 문제를 방지하기 위해 큰 테이블을 작은 테이블로 분해하는 과정이다. 테이블 구조를 정규형에 대해서 테스트를 수행한 후 문제가 발생할 경우 수정한다. 각기 특정한 문제의 집합을 테스트하는데 사용되는 정규형들이 존재한다.
필자는 위의 방법들이 너무 번거롭고, 특히 정규화의 과정이 끝없는 반복으로 이루어지고 적용하기 어려운 케이스도 있었기에 자신만의 설계 방법론을 만들어냈다고 한다.
전문 용어
- 값 관련 용어
데이터
데이터베이스에 저장된 값들. 특정 프로세스에 의해 바뀌기 전까지는 같은 상태를 유지해야하기 때문에 정적이다. 데이터를 용도를 가지도록 처리하기 전에는 데이터가 큰 의미를 가지지 못한다.
정보
데이터 중에서 일을 하거나 분석을 위해 특정 방법을 통해 의미있고 실용적으로 재생성한 것들을 의미한다. 따라서 정보는 동적이다. 데이터 사이의 관계를 변경하고 수많은 방법을 통해 데이터를 보여주고 가공할 수 있기 때문이다. 즉, 데이터를 가공해서 의미있는 결과로 바꿔야 정보이다.
널(Null)
없거나 알려지지 않은 값. 숫자 0이나 공백문자, 빈문자열과는 다른 의미이다. 누락된 값이나 알려지지 않은 값을 표현하기 위해 사용되었다. 하지만 Null 을 포함한 연산을 수행하면 결과 값은 무조건 Null로 떨어지게 된다. 따라서 값의 누락, 인식하지 못하는 값, 그리고 수학연산식이나 집계 함수에 사용되는 값인지에 관련된 고려는 데이터베이스 설계 프로세스에서 반드시 고려되어야 한다.
- 구조 관련 용어
테이블
관계형 데이터베이스의 데이터는 테이블로 인식되는 관계에 저장된다. 각 관계는 튜플(레코드)와 속성(필드)로 구성된다. 테이블은 하나의 특정 주제를 나타내며, 모든 테이블은 기본 키(PK) 라 알려진 각 레코드에 유일한 값으로 구분되는 하나 이상의 필드를 포함해야만 한다.
특정 테이블이 보여주는 대상은 사람, 장소, 물건 등의 사물을 의미하는 객체와 특정 시간대에 발생하는 것들을 표시하는 이벤트가 될 수도 있다.
정보(동적인 데이터)를 저장하는 테이블을 데이터 테이블이라 하고 관계형 데이터베이스에서 가장 일반적인 종류의 테이블이다. 반면 룩업 테이블(검증 테이블)은 데이터의 무결성을 보증할 때 사용하는 테이블로 도시명, 상품코드 등 변화하지 않는(정적 데이터) 데이터를 저장하며 이러한 검증값들은 간접적으로 사용된다.
필드
데이터베이스의 가장 작은 구조이며, 테이블이 가지고 있는 대상의 특성을 표현한다. 적절하게 설계된 데이터베이스의 모든 필드는 단 하나의 값을 가지며 매우 직관적으로 데이터를 알 수 있도록 한다.
레코드
레코드는 데이터베이스 이론에서 튜플이라 불리며 테이블 대상에 대한 유일한 값들을 표시한다. 레코드는 필드 값들의 집합으로 구성되며 기본 키가 되는 필드의 고유값으로 데이터베이스에서 식별된다.
뷰
하나 이상의 테이블에서 여러 필드들을 혼합하여 만든 가상 테이블이다. 뷰를 구성하는 테이블들을 기반 테이블이라 하며, 뷰는 기반 테이블에서 데이터를 추추랗여 사용하기 때문에 가상적이라고 한다.
인덱스
RDBMS의 데이터 처리 속도를 향상시키기 위한 구조로 테이블의 레코드를 식별할 때 사용하는 논리적인 구조가 키라면, 데이터 처리속도를 최적화할 때 사용하는 물리적 구조를 인덱스라 한다. (혼용하지 말 것)
- 무결성 관련 용어
데이터 무결성
테이블 수준 무결성 (엔티티 무결성)
테이블 내 중복된 레코드가 없으며, 테이블 내 각 레코드를 식별하는 필드가 유일한 값을 갖고, 널이 아닌 것을 보장한다.
필드 수준 무결성 (도메인 무결성)
각 필드에 있는 값의 유효성, 일관성, 정확성이 확보되었는지 같은 유형의 필드들이 DB 내에서 일관성 있게 정의되었는지를 확인한다.
관계 수준 무결성 (참조 무결성)
테이블 사이 관계의 적절성과 테이블에 있는 레코드가 다른 테이블에 입력되거나 수정될 때의 동기화 여부를 보장한다.
업무 규칙
조직이 데이터를 인지하고 사용하는 방법에 따라 DB의 특정 측면에 제약을 준다.
DB 설계 프로세스 개요
"간단한" DB 데이터베이스라고 하더라도 DB 설계 프로세스는 동일하게 적용되어야만 한다.
- 임무 목표 임무 명세 정의
데이터베이스 사용 목적을 정의한다.
임무 명세는 좀 더 세분화된 무언가를 말하는 듯??
- 기존 데이터베이스 분석
기존 사용 중인 데이터베이스 or 문서로 정리된 데이터 (특정 양식의 문서나 엑셀?)
데이터를 어떤 과정으로 수집하고 사용하는지, 관리자나 담당자 인터뷰를 진행함.
해당 정보를 기반으로 필드의 초기 목록을 만든다.
- 데이터 구조 생성
테이블 / 필드 / 필드 명세 설정
수집된 정보를 토대로 한 개의 주제만을 표현하는 테이블을 생성한다.
각 테이블에 있는 필드들을 검토한다. 검토가 완료되면 키를 설정한다.
- 테이블 관계 연결 및 설정
관계의 특징을 확인하고, 사용자와 관리자와의 인터뷰를 진행한다. (현실은 어려울 듯?)
- 업무 규칙 정의 및 결정
특정 작업의 제약사항들에 대한 인터뷰.
ex) 이 작업은 하루 몇 번 수행되어야한다. 일자가 동일한 데이터여야한다 등
- 뷰의 정의 및 결정
- 데이터 무결성 재확인
후기
첫 장은 본격적인 설계 프로세스를 학습하기에 앞서 개념적인 부분과 용어 설명에 집중한 튜토리얼 같은 장이였다. 그래서 그런지 내용이 좀 지루하게 느껴졌고 잘 읽히지는 않았던 것 같다. 다음 장부터가 본격적인 설계 프로세스에 대해 배우는데 지금 장보다는 흥미롭게 학습을 진행할 수 있을거라 생각한다.
'DB > 파워 오브 데이터베이스' 카테고리의 다른 글
[DB] 파워 오브 데이터베이스 - 책을 읽게 된 이유 (0) (0) | 2024.08.12 |
---|