데이터 베이스 기본 개념
데이터 베이스의 필요성
- Data (데이터) : 현실 세계에서 단순히 관찰하거나 측정하여 수집한 사실이나 값
- Information (정보) : 의사 결정에 유용하게 활용할 수 있도록 데이터를 처리한 결과물
- Information System (정보 시스템): 조직 운영에 필요한 데이터를 수집하여 저장해두었다가 필요할 때 유용한 정보를 만들어 주는 시스템
- Database : 정보 시스템 안에서 데이터를 저장하고 있다가 필요할 때 제공하는 역할 담당
데이터베이스의 정의와 특징
데이터베이스의 정의
데이터베이스(DB; DataBase): 특정 조직의 여러 사용자가 공유하여 사용할 수 있도록 통합해서 저장한 운영데이터의 집합
- integrated data(통합 데이터): 최소의 중복과 통제 가능한 중복만 허용하는 데이터
- stored data(저장 데이터): 컴퓨터가 접근할 수 있는 매체에 저장된 데이터
- shared data(공유 데이터): 특정 조직의 여러 사용자가 공유할 수 있는 데이터
- operational data(운영 데이터): 조직의 주요 기능을 수행하기 위해 지속적으로 꼭 필요한 데이터
데이터 베이스의 특징
- real-time acessibility (실시간 접근성): 사용자의 데이터 요구에 실시간으로 응답
- continuous evolution (계속 변화): 데이터의 지속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터 유지
- content reference (내용 기반 참조): 데이터가 저장된 주소나 위치가 아닌 내용으로 참조
- concurrent sharing (동시 공유): 서로 다른 데이터의 동시 사용 뿐만 아니라 같은 데이터의 동시 사용 지원
데이터와 데이터베이스
데이터의 분류
structed data (정형 데이터)
- 미리 정해진 구조에 따라 저장된 데이터 = 구조화된 데이터
ex) 엑셀의 스프레드시트, 관계 데이터베이스의 테이블
semi-structed data (반정형 데이터)
- 구조에 따라 저장된 데이터이지만 데이터 내용 안에 구조에 대한 설명이 함께 존재, 구조를 파악하는 파싱(parsing) 과정이 필요, 보통 파일 형태로 저장
ex) 웹에서 데이터를 교환하기 위해 작성하는 HTML, XML, JSON 문서
unstructed data (비정형 데이터)
- 정해진 구조가 없이 저장된 데이터
ex) 소셜 데이터의 텍스트, 영상, 이미지와 같은 멀티미디어 데이터 (Twitter, Instagram)
데이터베이스 관리 시스템 (DBMS)
데이터베이스 관리 시스템의 등장 배경
파일 시스템
- 응용 프로그램마다 필요한 데이터를 별도의 파일로 관리하는 시스템
- 데이터 중복성: 같은 내용의 데이터가 여러 파일에 중복 저장 -> 저장 공간 낭비, 데이터 일관성과 무결성 유지 어려움
- 데이터 종속성: 응용 프로그램이 데이터 파일에 종속 -> 파일 구조가 변경되면 응용 프로그램도 변경해야 함
데이터베이스 관리 시스템의 정의
DataBase Management System (DBMS, 데이터베이스 관리 시스템)
- 파일 시스템의 문제를 해결하기 위해 제시된 소프트웨어로 조직에 필요한 데이터를 데이터베이스에 통합하여 저장하고 관리
DBMS 주요 기능
- 정의: 데이터 베이스 구조를 정의하거나 수정
- 조작: 데이터를 삽입, 삭제, 수정, 검색하는 연산을 수행
- 제어: 데이터를 항상 정확하고 안전하기 유지
데이터베이스 관리 시스템의 장단점
장점
- 데이터 중복 통제 가능
- 데이터 독립성 확보
- 데이터 동시 공유 가능
- 데이터 보안 향상
- 데이터 무결성 유지
- 표준화 가능
- 장애 발생 시 회복 가능
- 응용 프로그램 개발 비용이 줄어든다.
단점
- 비용이 많이 든다
- 백업과 회복 방법이 복잡하다
- 중앙 집중 관리로 인한 취약점 존재
데이터베이스 관리 시스템의 발전 과정
1세대: 네트워크 DBMS, 계층 DBMS
- 네트워크 DBMS: 데이터베이스를 그래프 형태로 구성
- 계층 DBMS: 데이터 베이스를 트리 형태로 구성
2세대: 관계 DBMS (RDBMS)
- 관계 DBMS: 데이터베이스를 테이블 형태로 구성
ex) Oracle, MySQL
3세대: 객제지향 DBMS, 객체관계 DBMS
- 객체지향 DBMS: 객체를 이용해 데이터 베이스를 구성
- 객체관계 DBMS: 객체 DBMS + 관계 DBMS
4세대: NoSQL, NewSQL DBMS
- NoSQL DBMS: 비정형 데이터를 처리하는데 적합하고 확장성이 뛰어남
- 데이터 구조를 미리 정해두지 않는 유연성, 안정성과 일관성 유지를 위해 복잡한 기능을 포기
ex) MongoDB, Redis, OrientDB
- NewSQL DBMS: 관계 DBMS의 장점 + NoSQL의 확장성 및 유연성
ex) Spanner, VoltDB, NuoDB
데이터베이스 시스템
데이터베이스 시스템의 정의
DataBase System (DBS, 데이터베이스 시스템)
- 데이터베이스에 데이터를 저장하고, 이를 관리하여 조직에 필요한 정보를 생성해주는 시스템, 데이터베이스 관리 시스템을 포함하는 개념
데이터베이스의 구조
스키마와 인스턴스
- Schema (스키마): 데이터 베이스에 저장되는 데이터의 구조와 제약조건을 정의한 것
- Instance (인스턴스): 스키마에 따라 데이터베이스에 실제로 저장된 값
3단계 데이터베이스 구조
- 미국 표준화 기관인 ANSI/SPARC에서 제안
- 하나의 데이터베이스를 관점에 따라 세 단계로 나누고 각 단계별로 다른 추상화(abstraction) 제공 -> 내부 단계에서 외부 단계로 갈수록 추상화 레벨이 높아짐
1. External Level (외부 단계): 개별 사용자 관점
- 데이터베이스 하나에 여러 External Schema (외부 스키마) 존재 가능
- External Schema: 각 사용자가 생각하는 데이터베이스의 모습, 즉 논리적 구조로 사용자마자 다르다. Sub Schema 라고도 한다.
2. Conceptual Level (개념 단계): 조직 전체의 관점
- 데이터베이스 하나에 오직 하나의 Conceptual Schema (개념 스키마)만 존재
- Conceptual Schema: 조직 전체의 관점에서 생각하는 데이터베이스의 모습으로 전체 데이터베이스에 어떤 데이터가 저장되는지, 데이터들 간의 관계, 제약조건, 보안 정책, 접근 권한에 대한 정의를 포함한다.
3. Internal Level (내부 단계): 물리적인 저장 장치의 관점
- 데이터 베이스 하나에 오직 하나의 Internal Schema (내부 스키마)만 존재
- Internal Schema: 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의한 것으로 레코드 구조, 필드 크기, 레코드 접근 경로 등 물리적 저장 구조를 정의한다.
- External / Conceptual mapping : 외부 스키마와 개념 스키마의 대응 관계. Application Interface
- Conceptual / Internal mapping: 개념 스키마와 내부 스키마의 대응 관계. Storage Interface
데이터 베이스를 3단계 구조로 나누고 단계별로 스키마를 유지하며 스키마 사이의 대응 관계를 정의하는 궁극적인 목적 == 데이터 독립성의 실현
Data Independency (데이터 독립성)
- 하위 스키마를 변경해도 상위 스키마가 영향을 받지 않는 특성
- 논리적 데이터 독립성: 개념 스키마가 변경되어도 외부 스키마가 영향을 받지 않음. External / Conceptual mapping만 수정하면 됨
- 물리적 데이터 독립성: 내부 스키마가 변경되어도 개념 스키마가 영향을 받지 않음. Conceptual / Internal mapping만 수정하면 됨
데이터 사전 (Data Dictionary)
- 시스템 카탈로그 라고도 함
- 메타 데이터를 유지하는 시스템 데이터베이스 (metadata = 데이터에 대한 데이터)
- 스키마, 사상 정보, 다양한 제약 조건 등을 저장
- DBMS가 스스로 생성하고 유지함.
- Data Directory (데이터 디렉토리): 데이터 사전에 있는 데이터를 실제로 접근하는 데 필요한 위치 정보를 저장하는 시스템 데이터베이스
데이터베이스 사용자
- 데이터베이스 관리자(DBA; Database Administrator): 데이터베이스 시스템 운영 / 관리, 주로 데이터 정의어와 제어어 이용
- 최종 사용자(end user): 데이터 베이스에 접근해서 데이터를 조작, 주로 데이터 조작어 사용, 캐주얼 사용자와 초보 사용자로 구분
- 응용 프로그래머(application programmer): 데이터 언어를 삽입하여 응용 프로그램을 작성, 주로 데이터 조작어 사용
데이터 언어
- 사용자와 DBMS 간의 통신 수단
- 데이터 정의어 (DDL; Data Definition Language): 스키마를 정의하거나, 수정, 삭제하기 위해 사용
- 데이터 조작어 (DML; Data Manipulation Language): 데이터의 삽입, 삭제, 수정, 검색 등의 처리를 위해 사용
- 절차적 데이터 조작어 (procedural DML): 사용자가 어떤 데이터를 원하고 그 데이터를 얻기 위해 어떻게 처리해야 하는지 설명
- 비절차적 데이터 조작어 (nonprocedural DML): 사용자가 어떤 데이터를 원하는지만 설명. == 선언적 언어(declarative language) ex) SQL
- 데이터 제어어 (DCL; Data Control Language): 내부적으로 필요한 규칙이나 기법을 정의하기 위해 사용
데이터베이스 관리 시스템의 구성
데이터베이스 관리 시스템
DBMS: 데이터베이스 관리와 사용자의 데이터 처리 요구 수행
- 질의 처리기 (Query Processor): 사용자의 데이터 처리 요구를 해석하여 처리
- DDL 컴파일러, DML 프리 컴파일러, DML 컴파일러, 런타임 데이터베이스 처리기, 트랜잭션 관리자 등 포함
- 저장 데이터 관리자 (Stored Data Manager): 디스크에 저장된 데이터베이스와 데이터 사전을 관리하고 접근
중앙 집중식 데이터베이스 시스템(centralized database system)
- 데이터 베이스 시스템이 하나의 컴퓨터 시스템에서 운영됨
분산 데이터베이스 시스템(distributed database system)
- 네트워크로 연결된 여러 사이트에 데이터베이스 자체가 분산되어 있으며, 데이터베이스 시스템도 여러 컴퓨터 시스템에서 운영됨
클라이언트-서버 데이터베이스 시스템(client-server database system)
- 자체 컴퓨팅 능력을 가진 클라이언트를 통해 데이터베이스 서버를 접근, 데이터베이스 시스템 기능이 서버와 클라이언트에 분산됨.
데이터 모델링
데이터 모델링과 데이터 모델의 개념
데이터 모델링(Data Modeling): 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
- 개념적 데이터 모델링(Conceptual Modeling): 현실 세게의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
- 논리적 데이터 모델링(Logical Modeling): 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업
데이터 모델(Data Model): 데이터 모델링의 결과물을 표현하는 도구
- 개념적 데이터 모델 ex) 개체 - 관계 모델, 개체 - 관계 다이어그램
- 논리적 데이터 모델 ex) 관계 데이터 모델, 네트워크 데이터 모델, 계층 데이터 모델
개체 - 관계 모델
개체-관계 모델(E-R model: Entity-Relationship model)
- 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현
개체 - 관계 다이어그램(E-R Diagram)
- 개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
개체(Entity)
- 저장할 가치가 있는 중요 데이터를 가지고 있는 현실 세계의 사람이나 사물, 개념, 사건 등
- 다른 개체와 구별되는 이름을 갖고 있고, 각 개체만의 고유한 특성이나 사태, 즉 속성을 하나 이상 갖고 있음.
- 파일 구조의 레코드(Record)와 대응됨
- 개체 타입: 개체를 고유의 이름과 속성들로 정의한 것
- 개체 인스턴스: 실체화된 개체, entity occurrence 라고도 함
- 개체 집합: 특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것
속성 (attribute)
- 개체나 관계가 가지고 있는 고유 특성, 의미 있는 데이터의 가장 작은 논리적 단위, 파일 구조의 field와 대응됨
- 단일 값 속성 (single-valued attribute): 값을 하나만 가질 수 있는 속성
- 다중 값 속성 (multi-valued attribute): 값을 여러 개 가질 수 있는 속성, E-R 다이어그램에서 이중타원으로 표현
- 단순 속성(simple attribute): 의미를 더는 분해할 수 없는 속성
- 복합 속성(composite attribute): 의미를 분해할 수 있는 속성 ex) 고객 개체의 주소 - 도시, 시, 동 등으로 세분화 가능
- 유도 속성(derived attribute): 기존의 다른 속성 값에서 유도되어 결정되는 속성, 값이 별도로 저장되지 않음, 점선 타원으로 표현 ex) 책 개체의 가격과 할인율 속성으로 계산되는 판매가격 속성
- 널(Null) 속성: null 값이 허용되는 속성 == 아직 결정되지 않았거나 모르는 값 또는 존재하지 않는 값
- 키 속성(key attribute): 각 개체 인스턴스를 식별하는 데 사용되는 속성, 둘 이상의 속성들로 구성되기도 함, 밑줄로 표현
관계 (relationship)
- 개체 집합들 사이의 대응 관계 (mapping), 마름모로 표현
관계의 유형
관계에 참여하는 개체 타입의 수 기준
- 이항 관계: 개체 타입 두 개가 맺는 관계
- 삼항 관계: 개체 타입 세 개가 맺는 관계
- 순환 관계: 개체 타입 하나가 자기 자신과 맺는 관계
매핑 카디널리티 기준
- 일대일(1:1) 관계
- 일대다(1:N) 관계
- 다대다(N:M) 관계
관계의 참여 특성
- 필수적 참여(전체 참여): 모든 개체 인스턴스가 관계에 반드시 참여해야 되는 것, 이중선으로 표현 ex) 모든 고객은 책을 반드시 구매해야 함
- 선택점 참여(부분 참여): 개체 인스턴스 중 일부만 관계에 참여해도 되는 것 ex) 고객이 구매하지 않은 책이 존재할 수 있음
관계의 종속성
- 약한 개체(Week Entity): 다른 개체의 존재 여부에 의존적인 개체
- 강한 개체(Strong Entity): 다른 개체의 존재 여부를 결정하는 개체
- 강한 개체와 약한 개체는 일반적으로 1:N의 관계를 가지고, 약한 개체는 강한 개체와의 관계에 필수적으로 참여한다.
- 약한 개체는 강한 개체의 키를 포함하여 키를 구성한다.
논리적 데이터 모델
관계 데이터 모델
- 일반적으로 많이 사용되는 논리적 데이터 모델
- 데이터베이스의 논리적 구조(=스키마)가 2차원 테이블 형태
계층 데이터 모델 (Hierarchical Data Model)
- 데이터베이스의 논리적 구조가 트리 형태
- 개체 간에 상하 관계가 성립: 부모 / 자식 개체 -> 1 : N 관계만 허용됨
- N : M 관계를 직접 표현할 수 없음. 두 개체 사이에 하나의 관계만 정의할 수 있음.
- 개념적 구조를 모델링하기 어려워 구조가 복잡해질 수 있음.
- 데이터의 삽입, 삭제, 수정, 검색 쉽지 않음
네트워크 데이터 코델 (Network Data Model)
- 데이터베이스의 논리적 구조가 네트워크 즉, 그래프 형태
- 개체 간에 1 : N 관계만 허용 -> Owner / Member
- 두 개체 사이에 여러 관계를 정의할 수 있음
- N : M 관계를 직접 표현할 수 없음
- 구조 복잡하고 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않음
정리
'CS > 데이터베이스' 카테고리의 다른 글
6. SQL 기본 문법 (1) | 2023.11.18 |
---|---|
05. 관계 데이터 연산 (0) | 2023.11.09 |
04. 데이터 모델링 (0) | 2023.11.06 |
Week3 오라클과 MySQL (0) | 2023.10.30 |
Week2: 관계 데이터 모델 (0) | 2023.10.21 |