Database(DB) 관련 기본 개념 정리
1. Database(DB)
[ 정의 ]
-
데이터의 저장소 (데이터의 집합)
-
데이터를 공용(shared)으로 사용할 수 있도록 중복을 최소화하여 통합(integrated) 저장(stored)한 운영 데이터(operational data)의 집합체
-
공용 데이터 (Shared Data)
- 여러 사용자와 응용프로그램들이 공용으로 이용 가능하도록 만든 데이터의 집합
-
통합 데이터 (Integrated Data)
- 하나의 주제에 따라 중복을 최소화한 데이터의 집합 - 원칙적으로 데이터베이스에는 같은 데이터의 중복을 허용하지 않는다 -> 하지만 효율성 문제로 최소의 중복(minimal redundancy)과 통제된 중복(controlled redundancy)이 허용된다
-
저장 데이터 (Stored Data)
- 컴퓨터가 접근 가능한 매체에 저장된 데이터의 집합
-
운영 데이터 (Operational Data)
- 조직의 고유 기능을 수행하기 위한 필수적인 데이터의 집합
- 중복을 최소화하고 여러사람이 공유함에 있어서 문제가 발생하지 않도록 관리를 필요로 하는 데이터의 집합
-
[ 특징 ]
-
실시간 접근성 (Real-Time Accessibility)
- 다수의 사용자의 요구에 실시간으로 처리/응답하는 것을 말함
-
지속적인 변화 (Continuous Evolution)
- 저장된 데이터는 최신 정보가 정확하게 저장되어 처리되어야 한다
-
동시 공유 (Concurrent Sharing)
- 여러 사용자가 동일한 데이터를 동시에 서로 다른 목적으로 사용할 수 있어야 한다
-
내용에 의한 참조 (Contents Reference)
- 데이터 레코드들은 주소나 위치에 의해 참조되는 것이 아니라, 가지고 있는 값에 따라 참조해야 한다
-> 사용자는 저장된 데이터의 주소나 위치에 관심이 없고 내용에만 관심이 있다 - 데이터 내용에 의한 직접 참조 가능
- 데이터 레코드들은 주소나 위치에 의해 참조되는 것이 아니라, 가지고 있는 값에 따라 참조해야 한다
-
데이터 논리적 독립성(independence)
- 응용프로그램과 데이터베이스를 독립시킴으로써 데이터 논리적 구조를 변경시키더라도 응용프로그램은 변경되지 않는다
[ 구성요소 ]
-
데이터베이스
-
스키마
-
DBMS(데이터베이스 관리 시스템)
-
데이터베이스 언어
-
데이터베이스 컴퓨터
-
데이터베이스 사용자
[ 구조 ]
-
3단계 구조(3-level database architecture)
- ANSI/SPARC 구조라고도 한다
- 데이터베이스 시스템은 여러 사용자들에게 효율적으로 사용되기 위해 외부(external) 단계, 개념(conceptual) 단계, 내부(internal) 단계로 구성되어있다
- 3단계 데이터베이스 구조에서는 세 개의 서로 다른 스키마가 존재한다
-
스키마 구조
-
외부 단계(External Level)
- 추상화의 최상위 단계로서 서브 스키마, 사용자 뷰 단계라고도 한다
- 사용자의 관점에서 보는 스키마(Table, View)
-
개념 단계(Conceptual Level)
- 논리적 단계(ER)
- 논리적 관점에서 본 전체적인 데이터 구조
- 사용자들이 필요로 하는 통합 조직의 데이터베이스 구조
- 물리적 저장 구조의 세부사항을 숨기고, 데이터 유형, 속성, 관계를 기술하는 단계
- 조직 전체의 데이터베이스
- 단 하나만 존재한다
-
내부 단계(Internal Level)
- 물리적 단계라고 하며 추상화의 최하위 단계이다
- 물리적 저장장치의 입장에서 데이터베이스 전체가 물리적으로 저장되는 구조, 방법을 명세한 것 (DBMS, B-Tree, HDD)
- 단 하나만 존재한다
-
[ 성능 ]
데이터베이스의 성능 이슈는 디스크 I/O 를 어떻게 줄이느냐에서 시작된다.
디스크 I/O 란 디스크 드라이브의 플래터(원판)을 돌려서 읽어야 할 데이터가 저장된 위치로 디스크 헤더를 이동시킨 다음 데이터를 읽는 것을 의미한다.
이때 데이터를 읽는 데 걸리는 시간은 디스크 헤더를 움직여서 읽고 쓸 위치로 옮기는 단계에서 결정된다.
즉 디스크의 성능은 디스크 헤더의 위치 이동 없이 얼마나 많은 데이터를 한 번에 기록하느냐에 따라 결정된다고 볼 수 있다.
2. 데이터 모델
[ 데이터 모델이란 ]
-
데이터베이스에서 데이터를 어떻게 저장하고 보여줄 것인지 구성하는 과정 및 구성된 모델
-> 조직의 정보 수집과 관리 시스템을 정의하는 시각적 표현 또는 청사진을 생성하는 프로세스
-> 이 청사진 또는 데이터 모델은 다양한 이해관계자들이 조직의 데이터에 대한 통일된 개념을 생성할 수 있게 돕는다 - 데이터의 관계, 접근과 그 흐름에 필요한 처리 과정에 관한 추상화된 모형이다
- 현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화 하여 체계적으로 표현한 개념적 모형이다
- 데이터, 데이터의 관계, 데이터의 의미 및 일관성, 제약조건 등을 기술하기 위한 개념적 도구들의 모임이다
-> 이 모델은 해당 비즈니스가 수집하는 데이터, 서로 다른 데이터 세트 사이의 관계, 데이터를 저장하고 분석하는 데 사용되는 방식을 설명한다 - 현실 세계를 데이터베이스에 표현하는 중간 과정, 즉 데이터베이스 설계 과정에서 데이터의 구조를 논리적으로 표현하기 위해 사용되는 도구이다
-
데이터의 구조(Schema)를 논리적으로 묘사하기 위해 사용되는 지능적 도구이다
- 데이터 모델링 : 주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업
[ 구분 ]
-
개념적 데이터 모델
- 현실 세계에 대한 인간의 이해를 돕기위해 현실 세계에 대한 인식을 추상적 개념으로 표현하는 과정이다
- 속성들로 기술된 개체 타입과 이 개체 타입들 간의 관계를 이용하여 현실 세계를 표현한다
- 현실 세계에 존재하는 개체를 인간이 이해할 수 있는 정보 구조로 표현하기 때문에 정보 모델이라고도 한다.
- 개념적 모델은 비즈니스 규칙과 기본 물리적 데이터베이스 관리 시스템(DBMS) 간의 다리 역할을 한다
- 도메인 모델이라고도 한다
- 대표적인 개념적 데이터 모델로는 E-R모델이 있다
-
논리적 데이터 모델
- 구현 모델이라고도 한다
- 개념적 모델링 과정에서 얻은 개념적 구조를 컴퓨터가 이해하고 처리할 수 있도록 컴퓨터 세계의 환경에 맞게 변환하는 과정이다
- 필드로 기술된 데이터 타입과 이 데이터 타입들간의 관계를 이용하여 현실 세계를 표현한다
-> 필드, 데이터타입 등으로 개념적 모델을 구현한다 - 단순히 데이터 모델이라고 하면 논리적 데이터 모델을 의미한다
- 특정 DBMS는 특정 논리적 데이터 모델 하나만 선정하여 사용한다
- 데이터 간의 관계를 어떻게 표현하느냐에 따라 관계모델, 계층모델, 네트워크 모델로 구분한다
-
물리적 데이터 모델
- 성능과 직접적인 연관이 있다
- 하위수준의 데이터 모델로 데이터가 저장되는 방법을 표현한다
- 레코드형식, 레코드 순서, 접근경로, 저장방법에 관한 전문가가 정의한다
- 논리적 데이터 모델을 특정 DBMS 기술에 매핑하고 소프트웨어의 용어를 사용한다
- 물리적 데이터 모델은 논리적 데이터 모델과 최종 기술 구현 사이의 다리 역할을 한다
[ 구성요소 ]
-
구조 (Structure)
- 데이터베이스에 표현될 대상으로서의 개체 타입과 개체 타입들간의 관계
- 데이터 구조 및 정적 성질을 표현
-
연산 (Operation)
- 저장된 실제 데이터를 처리하는 방법에 대한 명세
- 데이터를 조작하는 기본 도구
-
제약조건 (Constraint)
- 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건
[ 표현 용어 ]
-
개체 (entity)
- 행, 튜플
- 카디날리티(Entity) : 개체의 수
- 데이터베이스가 표현하려는 분리된 유무형의 정보대상으로 서로 구분할 수 있는 것
- 사람이 생각하는 개념이나 정보 단위같은 현실 세계의 대상체
- 개체는 실세계에 독립적으로 존재하는 유형, 무형의 정보로서 서로 연관된 몇 개의 속성으로 구성된다
- 파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행한다
- 독립적으로 존재하거나 그 자체로서도 구별 가능하다
-
속성 (attribute)
- 열, 필드
- 디그리(Degree) : 속성의 수
- 개체의 특성이나 상태를 기술하는 데이터의 가장 작은 논리적 단위
- 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다
- 개체를 구성하는 항목이다
-
관계 (relationship)
- 둘 이상의 개체들이 어떻게 연관되었는지를 나타냄
- 개체 간의 관계 또는 속성 간의 관계
- 일대일, 일대다, 다대다 의 형태가 있다
[ 종류 ]
-
관계형 데이터 모델
- 표(Table)을 이용해 데이터 관계를 정의
- 데이터간의 관계를 Key를 통해 구성되고 서로 다른 데이터 테이블을 결합하거나 연결할 수 있다
- 1:1, 1:N, N:M 관계를 자유롭게 표현
- 간결하고 명확하고 상호변환성이 좋지만 성능이 떨어진다.
- 관계형 DBMS 는 Relational DBMS로 RDBMS라고 부르기도 한다
- 대표 DBMS: 오라클, MySQL, MsSQL, SQLite, 포스트그레
-
계층형 데이터 모델
- 트리 형태의 논리적 구조를 가지며, 개체는 트리의 노드로 표현
- 개체간의 관계를 링크로 표현되며 부모-자식(종속적) 관계를 가짐
- 1:N 대응관계만 존재
-> 대용량 데이터베이스 처리에 매우 강력하다 - 레코드 삭제 시 연쇄 삭제(Triggered Delete)가 이루어짐
- 개체들 간 Cycle이 허용되지 않음
- 개체(Entity)를 세그먼트(Segment)라 지칭
- 한번 구축하면 구조를 변경하기 어렵고 데이터 저장의 물리적 구조에 대한 이해도가 높아야 한다
- 대표 DBMS: IMS
-
네트워크형 데이터 모델
- 망형 모델, 그래프형 모델이라고도 불린다.
- CODASYL이 제안한 모델로, CODASYL 모델이라고도 한다.
- 대표적인 DBMS가 DBTG로, DBTG 모델이라고도 한다.
- 그래프를 이용해서 데이터 논리 구조를 표현
- 상하위 레코드는 N:M 대응 관계
- 상위 레코드를 Owner, 하위 레코드를 Member라 지칭
-> 이러한 구조 때문에 Owner-Member 모델이라고도 한다. - 계층형 데이터 모델에서 나타나는 중복 문제를 해결했고 레코드간의 관계가 그물처럼 되어있는 구조이다
- 복잡한 구조 때문에 추후 구조 변경시 많은 어려움이 따른다
- 데이터 추출이 빠르고 효과적이다
- 유지 및 보수 비용이 많이 든다
- 대표 DBMS: DBTG, EDBS, TOTAL
3. 데이터 모델링
주어진 개념으로부터 논리적인 데이터 모델을 구성하는 작업을 말하며, 일반적으로 이를 물리적인 데이터베이스 모델로 환원하여 고객의 요구에 따라 특정 정보 시스템의 데이터베이스에 반영하는 작업을 포함한다
[ 단계 ]
단계 | 설명 | 산출물 |
---|---|---|
요구사항 정의 | 목표 기능을 위한 데이터적 요구사항 정의 및 분석 | 요구사항 명세서 |
개념 모델링 | 핵심 엔티티 도출 및 관계를 개념적으로 정의 | 개념 ERD |
논리 모델링 | 데이터 구조, 연산, 제약조건을 정확하게 표현 | 상세 ERD, 테이블 정의서 |
물리 모델링 | 구현할 DBMS를 기준으로 스키마 설계 | DDL Query |
데이터베이스 구현 | 실제 테이블을 생성하고 스키마 구현 | 데이터베이스 |
-
데이베이스 스키마 설계·개발 순서
- 1. 요구 조건 분석(Requirement Formulation)
- 2. 개념적 설계(Conceptual Schema)
- DBMS에 독립적인 개념 스키마 모델링
- 트랜잭션 모델링
- ER 다이어그램 산출
- 3. 논리적 설계(Logical Schema)
- 논리 스키마의 설계
- DBMS의 구현 데이터 모델로 표현된 데이터베이스 스키마 도출
- 컴퓨터가 이해하고 처리할 수 있는 특정 DBMS가 지원가능한 논리적 데이터 구조로 변환
- 트랜잭션의 전체적인 골격을 개발하고 인터페이스를 정의한다
- 4. 물리적 설계(Physical Schema)
- DB 파일에 대한 저장 구조와 접근 경로를 결정
- 응답시간, 저장공간의 효율, 트랜잭션 처리도를 고려
- 5. 데이터베이스 구현
- 해당 DBMS의 DDL을 통해 구축
댓글남기기