공부해봅시당
[DATABASE] SQLD 데이터 독립성에서부터 스키마 3계층까지 본문
1. 데이터 독립성이란?
`데이터 독립성`이란 데이터베이스의 구조와 데이터의 내용이 서로 영향을 미치지 않는 것을 의미한다.
데이터 독립성은 `논리적 데이터 독립성`과 `물리적 데이터 독립성`으로 나눌 수 있다.
1-1. 논리적 데이터 독립성
`논리적 데이터 독립성`은 데이터베이스의 논리적 구조가 변경되어도 응용 프로그램이나 사용자의 요구에 영향을 주지 않는 것을 말한다.
예를 들어, 테이블의 속성이나 관계가 추가되거나 삭제되어도 기존의 쿼리나 트랜잭션은 그대로 유지될 수 있다.
1-2. 물리적 데이터 독립성
`물리적 데이터 독립성`은 데이터베이스의 물리적 구조가 변경되어도 논리적 구조나 데이터의 내용에 영향을 주지 않는 것을 말한다.
예를 들어, 파일의 저장 방식이나 인덱스의 구성이 바뀌어도 데이터베이스의 스키마나 데이터는 그대로 유지될 수 있다.
데이터 독립성은 데이터베이스의 유지보수와 확장성을 향상시키는 장점을 가집니다.
데이터베이스의 구조가 변경되더라도 응용 프로그램이나 사용자에게 영향을 주지 않으므로, 시스템의 안정성과 신뢰성을 높일 수 있다.
또한, 데이터베이스의 성능이나 보안을 개선하기 위해 필요한 조치를 쉽게 적용할 수 있다.
데이터 독립성 보장을 위한 데이터베이스 구조에는 `3단계 데이터베이스 구조`가 있다.
`3단계 데이터베이스 구조`를 알아보기 전에 `스키마`에 대해 먼저 알아보자.
2. 스키마란?
스키마란 한마디로 정의하면 `데이터의 구조` 또는 `데이터베이스의 설계` 를 의미한다.
데이터베이스 스키마는 논리적 보기를 나타내는 일종의 골격구조와 같은데,
데이터베이스의 데이터에 적용되는 모든 제약 조건을 이 골격구조로 고안해 낸다.
스키마는 데이터베이스를 구성하는 데이터 개체(entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.
정리하면, 사용자들이 즉 검색을 하는 사람(=결과값을 기다리는 사람=뷰어)들이 여러가지 각각의 궁금증을 가지고 검색을 하게 되었을 때
맨 아래 저장되어 있는 데이터베이스까지 가 닿아 정보를 얻기까지의 구조,
그 일련의 데이터 처리 프로세스,
자료들간의 전반적인 협력관계 등이
아주 긴밀하게 움직이게 되는데 이를 ‘형식 언어’로 나타낸 데이터베이스의 구조를 뜻한다.
이를 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다 라고 설명한다.
쉽게 말해 DB 내에 데이터가 어떤 구조로 저장되는가를 나타내는 데이터베이스 구조를 `스키마`라고 한다.
3. 스키마의 3계층
스키마의 3계층: 사용자의 관점에 따라
- 사용자 관점에서 논리적 구조를 기술한 `외부 스키마`
- 물리적인 저장장치의 면에서 논리적인 구조를 기술한 `내부 스키마`
- 조직체나 기관의 관점에서 논리적 구조를 기술한 `개념 스키마`
3-1. 외부 스키마(External Schema) (== 서브 스키마 == 사용자뷰): 외형적 개념
1) 외부 스키마 정의와 특징
프로그래머나 사용자의 입장(관점)에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것
- 실제로 존재하는 데이터들을 어떻게 구조하고 어떻게 배치하여 화면을 통해 사용자에게 보여줄 것인가
- 사용자나 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의
- 외부 스키마는 사용자의 요구에 따라 다양하게 정의될 수 있으므로, 사용자의 관점에서 데이터를 접근하고 조작할 수 있음
== 사용자에 따라 다르게 출력되며, 여러 개가 존재함 - 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있음(=사용자가 여러가지 각각의 방향으로 검색어를 넣기 때문)
예) <운전면허시험>에 대한 전반적인 정보를 얻고자 할 때, 어떤 사용자는 운전면허시험 이라고 검색할 것이고 또 어떤 사용자는 운전면허증, 다른 사람은 운전면허필기시험 이라고 검색할 것 - 하나의 외부 스키마를 여러개의 응용 프로그램 혹은 사용자가 공유할 수 있음
- 같은 데이터 베이스에 대해서도 서로 다른 관점을 정의할 수 있도록 허용함
- 일반 사용자는 SQL과 같은 질의어를 이용하여 DB를 쉽게 사용할 수 있음
- 응용 프로그래머는 C, JAVA 등의 언어를 사용해 DB에 접근함
2) 외부 스키마를 나타내는 도구나 방법
- 뷰 정의(View Definitions)
SQL 같은 데이터베이스 질의 언어를 사용하여 특정 사용자나 응용 프로그램에 필요한 데이터의 부분집합을 정의한다.
뷰는 실제 데이터를 저장하지 않고 데이터의 특정 "보기"를 제공하여 외부 스키마를 구현한다.
- 응용 프로그램 인터페이스(APIs)
특정 응용 프로그램이 데이터에 접근하고 이를 사용할 수 있도록 하는 프로그래밍 인터페이스를 말한다.
이는 외부 스키마의 구현을 위해 사용될 수 있다.
- 사용자 인터페이스
사용자가 데이터와 상호작용하는 방식을 정의한다.
이는 웹 페이지, 모바일 앱 화면, 또는 다른 사용자 인터페이스를 통해 구현될 수 있다.
3-2. 개념 스키마(== 스키마)
1) 개념 스키마 정의와 특징
일반적으로 그냥 스키마라고 할 때는 개념 스키마에 대해 이야기 하는 것
사용자 관점으로, 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한
조직 전체의 데이터베이스 구조를 논리적으로 정의(명세)한 것
- 위의 외부스키마를 응용 인터페이스에서 맵핑(Mapping)을 통해 개념 스키마와 연동이 이루어짐
- 내부 스키마 데이터를 외부 스키마에 매핑한다고 이야기 함
- 데이터베이스는 1.사람이 이해하는 논리구조와 2.컴퓨터가 이해하는 물리구조로 나뉘는데, 그 중 사람이 이해하는 논리구조가 바로 우리가 지금 이야기 하고 있는 두번째 특징인 개념스키마
- 데이터베이스의 ‘전체’를 정의한 것으로 데이터 개체, 관계, 제약조건, 접근권한, 무결성 규칙등을 명세한 것이며 데이터베이스의 전체적인 구조를 우리가(사용자가) 알아볼 수 있게 표현한 것
-> 개념 스키마를 나타내기 위해 ERD가 자주 사용됨
- 개념 스키마는 데이터베이스의 전체적인 논리적인 구조를 표현하므로, 데이터의 독립성을 보장
즉, 내부 스키마가 변경되어도 개념 스키마는 유지되므로, 외부 스키마에 영향을 주지 않음 - 데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재
- 개념 스키마는 개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의
- 데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마라고 하면 개념 스키마를 의미
2) 개념 스키마를 나타내는 도구나 방법
개념 스키마를 나타내는 데 사용되는 방법은 데이터베이스의 논리적 구조를 중립적인 관점에서 정의하고 설계하는 데 초점을 맞춘다.
개념 스키마는 데이터베이스의 전체적인 구조를 포괄하며, 데이터 항목, 그들 사이의 관계, 데이터의 제약 조건 등을 설명한다.
이를 위해 사용되는 방법은 다음과 같다.
- UML 클래스 다이어그램(Unified Modeling Language Class Diagram)
UML 클래스 다이어그램은 객체 지향 설계와 개발에서 널리 사용되며, 개념 스키마를 나타내는 데에도 사용될 수 있다.
클래스 다이어그램은 시스템 내의 클래스들과 그 클래스들 사이의 관계를 보여주며, 클래스의 속성과 메서드를 포함할 수 있다.
데이터 모델링 컨텍스트에서는 주로 엔티티, 엔티티의 속성, 그리고 엔티티 간의 관계를 표현하는 데 사용된다.
- 논리적 데이터 모델(Logical Data Model)
논리적 데이터 모델은 데이터베이스의 구조를 상세하게 나타내는 모델로, 데이터 항목, 그 항목들 사이의 관계, 그리고 데이터베이스에 적용되는 규칙이나 제약 조건을 포함한다.
이 모델은 데이터 타입, 기본 키(Primary Key), 외래 키(Foreign Key) 등의 데이터베이스 구조 요소를 정의한다.
논리적 데이터 모델의 구체적인 산출물 중 하나로 ERD가 주로 사용된다. ERD는 논리적 데이터 모델링 과정을 통해 개발되고 활용된다.
- 엔티티-관계 다이어그램(Entity-Relationship Diagram, ERD)
바로 위에서 설명했던
ERD는 개념 스키마를 나타내는 데 가장 널리 사용되는 도구 중 하나이다.
엔티티(객체)들과 그 엔티티들 사이의 관계를 그래픽으로 표현한다.
엔티티는 데이터베이스에 저장되는 정보의 단위로, 속성(Attributes)을 가진다.
관계(Relationships)는 엔티티들 사이의 연결을 나타내며, 이러한 연결을 통해 데이터의 구조를 명확하게 이해할 수 있다.
3-3. 내부 스키마
1) 내부 스키마 정의와 특징
물리적 저장창지 관점에서의 정의라고 표현하며 이는 ‘실제 데이터베이스’를 저장하는 장치라는 뜻
- 바로 위의 개념 스키마가 우리(=사용자)들이 가지고 있는 개념에 바탕한 관점이라면 이번 내부스키마는 반대로 컴퓨터(=데이터베이스) 관점에서의 정의
- 디스크 또는 물리적 저장 장치에 데이터의 물리적인 저장
- DB의 전체적인 구조로써 단 하나만 존재할 수 있음
- 데이터베이스가 사용자들에게 제공되기 위해서 ‘실제적인 기계적 처리’에 의해서 분배되고 저장되어야 하는데 이렇게 기계적 처리를 하는 일련의 과정을 의미
- 물리적인 설계이고 즉 사용자들이 아무나 접근하면 안되기 때문에 DBA가 직접 관리(실제 하드디스크에 저장되어 있는 구조)
- 내부 스키마는 데이터베이스의 물리적인 저장 방식을 결정하므로, 데이터의 효율적인 저장과 검색을 위한 최적화가 가능
- 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유/무 등을 나타냄
2) 내부 스키마를 나타내는 도구나 방법
- 데이터 저장 구조 정의
데이터의 물리적 저장 방식을 설명한다.
이는 파일 구조, 인덱싱 방법, 데이터 압축 방식 등을 포함할 수 있다.
- 접근 경로(Access Paths)
데이터에 접근하는 데 사용되는 경로를 정의한다.
이는 데이터를 효율적으로 검색하고 관리하기 위한 인덱스, 해시 테이블 등의 구조를 포함한다.
- 물리적 데이터 모델
데이터베이스의 물리적 구조를 설계하고 나타내는 데 사용되는 다이어그램이나 모델이다.
이는 내부 스키마를 시각적으로 표현하며, 데이터가 실제로 어떻게 저장되고 처리되는지를 보여준다.
두번째에서 설명한 개념스키마가 다시 저장 인터페이스를 통해 내부스키마로 세분화하여 물리적 저장장치까지 구조화된다. 이런 일련의 프로세스를 스키마의 3계층 이라고 한다.
스키마를 분리함으로써 얻는 장점은 정보의 독립성과 정보 중복의 배제이다.
참조
[데이터베이스] 데이터 독립성과 스키마
데이터 독립성이란 데이터베이스의 구조와 데이터의 내용이 서로 영향을 미치지 않는 것을 의미합니다. 데이터 독립성은 논리적 데이터 독립성과 물리적 데이터 독립성으로 나눌 수 있습니다.
velog.io
https://www.hedleyonline.com/ko/blog/%EC%8A%A4%ED%82%A4%EB%A7%88/
'STUDY > DATABASE' 카테고리의 다른 글
[DATABASE] Partitioning VS Sharding (0) | 2024.03.12 |
---|---|
[DATABASE] 정규화와 반정규화 (0) | 2024.03.08 |
[자습시간! DataBase] 트랜잭션에 대해 알아보자 (0) | 2021.07.28 |
[자습시간! DataBase] JDBC와 DBCP에 대해 알아보자 (0) | 2021.07.12 |
[자습시간! DataBase] InnoDB와 MyISAM을 알아보자 (0) | 2021.07.12 |