공부/데이터베이스 개론

3. 데이터베이스의 구조와 사용자

dev.jelee 2024. 12. 4. 20:25

이미 정리된 내용을 직접 작성하여 옮기면서 공부하기 위해 글 작성함.


3. 데이터베이스의 구조와 사용자

3.1 데이터베이스 시스템의 구조와 스키마

  • 데이터베이스 시스템의 구조
  • 데이터베이스 시스템은 데이터를 관리하기 위해 여러 계층으로 구성된다.
    • 1단계: 내부(물리적) 수준
      • 데이터가 실제로 저장되는 방식과 관련.
      • 디스크와 같은 물리적 저장소의 데이터 구조 및 인덱스 관리.
    • 2단계: 개념(논리적) 수준
      • 데이터베이스의 전체 구조를 정의.
      • 관계, 속성, 데이터 제약 조건 등을 포함.
    • 3단계: 외부(사용자) 수준
      • 개별 사용자나 애플리케이션이 데이터를 보는 방식.
      • 특정 사용자가 접근 가능한 데이터의 뷰(View)를 정의.
  • 구조적 표현:
    • 사용자 수준 (뷰)  
      -----------------  
      개념 수준 (논리적 설계)  
      -----------------  
      내부 수준 (물리적 저장소)
  • 스키마(Schema)
    • 정의: 데이터베이스 구조와 데이터 제약 조건을 기술한 메타데이터.
    • 종류:
      • 외부 스키마: 사용자 또는 애플리케이션 관점에서의 데이터 뷰 정의.
      • 개념 스키마: 데이터베이스의 전체 구조를 논리적으로 정의.
      • 내부 스키마: 데이터를 물리적으로 저장하는 방법을 정의.
    • 스키마와 인스턴스
      • 스키마: 데이터베이스의 설계(구조).
      • 인스턴스: 특정 시점에 저장된 실제 데이터.
      • 예: 학교 데이터베이스에서 학생 테이블이 스키마이고, 홍길동, 김영희 등의 실제 학생 데이터가 인스턴스.

3.2 데이터 독립성과 데이터 사전

  • 데이터 독립성(Data Independence)
    • 정의: 데이터와 애플리케이션 간의 종속성을 제거하여 데이터 구조 변경이 프로그램에 영향을 미치지 않도록 하는 성질.
    • 종류:
      • 물리적 독립성: 물리적 저장 구조 변경이 논리적 설계에 영향을 주지 않음.
      • 논리적 독립성: 논리적 설계 변경이 사용자 뷰에 영향을 주지 않음.
  • 데이터 사전(Data Dictionary)
    • 정의: 데이터베이스의 메타데이터(데이터에 관한 데이터)를 저장한 시스템 테이블.
    • 역할:
      • 데이터베이스 구조와 속성 정보를 제공.
      • 데이터 무결성 제약 조건, 뷰, 인덱스 등의 정보 포함.
    • 예: 학생 테이블의 이름, 속성, 데이터 타입, 제약 조건 등이 저장.

3.3 데이터베이스 사용자

  • 데이터베이스 관리자(Database Administrator, DBA)
    • 역할: 데이터베이스 시스템을 설계, 구현, 유지 관리하는 책임자.
    • 주요 업무:
      • 데이터베이스 설계 및 구성.
      • 사용자 계정 및 권한 관리.
      • 데이터 백업 및 복구.
      • 성능 최적화 및 모니터링.
  • 최종 사용자(End User)
    • 역할: 데이터베이스를 사용하여 업무를 수행하는 사용자.
    • 종류:
      • 단순 사용자: 단순 데이터 조회 및 입력.
        • 예: 은행 창구 직원.
      • 고급 사용자: 복잡한 쿼리를 작성하고 분석 작업 수행.
        • 예: 데이터 분서가.
  • 응용 프로그래머(Application Programmer)
    • 역할: 데이터베이스 기반 애플리케이션을 개발하는 사용자.
    • 주요 업무:
      • SQL을 활용한 데이터 처리 로직 작성.
      • 데이터베이스 연결 및 트랜잭션 처리 구현.
      • 사용자 인터페이스와 데이터베이스 연동 개발.

예제

  • 스키마 예제
    • 개념 스키마: 학생 테이블에 학번, 이름, 학과 속성 정의.
    • 외부 스키마: 특정 사용자는 학번과 이름만 볼 수 있음.
    • 내부 스키마: B+ 트리 인덱스를 사용하여 데이터를 저장.
  • 사용자별 역할 예제
    • DBA: 학생 테이블의 성능을 높이기 위해 인덱스를 추가.
    • 최종 사용자: 학생 정보를 검색하거나 입력.
    • 응용 프로그래머: 웹 애플리케이션에서 학생 정보를 조회하는 API 개발.

내 생각 정리

[데이터베이스 시스템의 구조와 스키마]

- 데이터베이스 시스템의 구조

- 데이터베이스 시스템은 데이터를 관리하기 위해 여러 계층으로 구성된다.

  > 1단계: 내부(물리적) 수준

  > 2단계: 개념(논리적) 수준

  > 3단계: 외부(사용자) 수준

- 내부 수준 > 개념 수준 > 사용자 수준
- 물리적 저장소 > 논리적 설계 > 뷰

위 내용들을 쉽게 정리하자면 
1. 내부 수준으로 데이터를 어디에 저장할지 정하기.
2, 개념 수준으로 전체 데이터 구조를 어떻게 만들지 추상화를 하기. (테이블의 구조, 테이블 간의 관계, 엔티티 및 속성 정의 등)
3. 외부 수준으로 사용자의 요구에 맞게 데이터를 어떻게 보여줄지를 정한다.

 

- 스키마란? (Schema)

> 데이터베이스 구조와 데이터 제약 조건을 기술한 메타데이터

> 메타데이터는 쉽게 설명하자면 설명서라고 보면된다. 예를들어 이 데이터베이스는 무엇인지 설명하는 설명서, 그리고 테이블이 있으면 이 테이블이 무엇인지에 대한 설명서.

> 즉, 스키마란 데이터베이스의 설계도이자 규칙집이라고 생각하면된다. 데이터베이스가 어떻게 구성되고, 각 데이터가 어떤 규칙에 따라 저장될지를 정의하는 중요한 역할을 한다. 좀 더 쉽게 생각하자면 설명서라고 기억하자!

 

- 스키마 종류

> 외부 스키마

> 개념 스키마

> 내부 스키마

요약하자면
1. 내부 스키마에서 데이터가 물리적으로 어떻게 저장되고 처리될지 실제 저장 방식을 정의하고
2. 개념 스키마로 전체적인 데이터베이스 구조와 관계를 정의하는데 이를 데이터의 논리적인 설계라고 한다.
3. 마지막으로 외부 스키마는 각 사용자가 데이터베이스에서 필요한 정보만 볼 수 있도록 정의하는데 사용자 맞춤형 뷰라고 한다.

 

- 인스턴스란?

> 특정 시점에 저장된 실제 데이터를 말한다.

> 예를들어 학교 데이터베이스에는 학생 테이블이 있는데 이를 스키마라고 하고, 테이블 안에 홍길동, 김영희 등의 실제 학생 데이터가 있다면 이게 인스턴스.

 

[ 데이터 독립성과 데이터 사전 ]

- 데이터 독립성은 데이터베이스의 구조나 저장 방식이 변경되어도 응용 프로그램이나 사용자에게 영향을 주지 않도록 만드는 특성을 말합니다
> 논리적 데이터 독립성 (Logical Data Independence) : 데이터베이스의 논리적인 구조(예: 테이블, 관계 등)가 변경되더라도 응용 프로그램이나 사용자에게 영향을 주지 않는 특성
> 물리적 데이터 독립성 (Physical Data Independence) : 데이터가 물리적으로 저장되는 방식(예: 디스크 상의 파일, 인덱스 구조 등)이 변경되더라도, 논리적 구조나 응용 프로그램에 영향을 주지 않는 특성

 

- 데이터 사전데이터베이스의 메타데이터를 저장하는 특별한 테이블. 메타데이터는 데이터베이스에 저장된 데이터 자체가 아니라, 데이터에 대한 정보(설명)다. 데이터 사전은 데이터베이스의 구조에 대한 정보를 제공함.

 

[ 데이터베이스 사용자 ]

- 데이터베이스 관리자

- 최종 사용자

- 응용 프로그래머

 

지금 우리가 하는 개발일은 응용 프로그래머 위치.

 

[ 그 외 ]

- 1:1 (일대일) 관계
> 한 엔티티의 한 레코드가 다른 엔티티의 한 레코드와만 관련되는 관계

- 1:N (일대다) 관계
> 한 엔티티의 한 레코드가 다른 엔티티의 여러 레코드와 관련되는 관계

- N:N (다대다) 관계
> 두 엔티티 간에 각각의 레코드가 서로 여러 개의 레코드와 관계를 맺는 관계