# Tri-Level Schema Structure, Data independence, DBMS Language, DBMS Interface
💡DBMS는
① Program-data independence (상호간의 독립성) 제공
② 데이터의 복수개의 뷰 제공
위 2개의 특성들을 지원하기 위해 만들어진 구조이다.
- External schemas | 데이터를 바라보는 관점들이 다 다르기 때문에 (다양한 사용자 view) 제공
- Conceptual schema | 전체 데이터베이스에 대한 데이터의 구조와 그 데이터에 부여되는 제약조건들을 기술하는 레벨
- Internal schema | Physical data model(low level schema)을 표현해주는 것 . Data storage 구조와 Access path들과 같은 디스크에 어떻게 저장할 것인가를 표현
: conceptual schema를 바라보는 다양한 관점이 존재
: 우리가 만든 conceptual schema 레벨
: 물리적인 특성을 설명하는 레벨로 어떤 데이터베이스에 어떤 방법으로 접근할 것인가에 대한 구체적인 전략 방법, 연산, 제약조건을 다루는 것
Program이 하는 일 = mapping = 각 레벨 간의 query 변환
프로그램들이 external schema(high-level)를 참조할 때 필요하게 된다.
DBMS가 그 프로그램의 수행을 위해, Internal schema에 map하기 위해 필요하다
→ external schema(고수준)를 참조하는 프로그램들은 internal schema(저수준)를 참조하는 프로그램으로 변경되어야 한다.
하위 레벨로부터 독립하자! 상위 레벨을 안 바꾸고, Mapping만 바꾸자!
데이터 독립성은 하위레벨에 있는 어떤 schema에 변경이 생겼을 때 변경된 schema와 그것의 상위레벨 schema 사이에 차이가 생긴다. 이때 단순히 ‘mapping’만을 변경해서, 데이터 독립성을 지원하고,, 그 상위 레벨 schema들은 안바뀌도록한다. 그러므로 응용프로그램은 external schema를 참조하기 때문에 변경하지 않아도 되는 것이다 .
Conceptual Schema – ('참조') → View —('작성') → External Schema
: 스키마 정의 언어 (DBMS와 대화하기 위한 준비 언어)
데이터 베이스의 Conceptual schema를 표현하기 위해서 사용
= SQL
데이터베이스의 내용을 추출하고 갱신하기 위한 언어
① 목적만 명시
② 모든 과정을 구체적 명시 (looping으로 하나씩 찾고 추출,,,)
1. DBMS Programming Language Interfaces
2. User-Friendly DBMS Interfaces
Data Dictionary
Dictionary ⊃ Catalog
- Passive data dictionary is accessed by users / DBA only
(DBA가 수동적으로 관리 함)