ㅇTL
DB 02 본문
*용어정리
1. Data models
=데이터의 관계, 접근과 그 흐름에 필요한 처리 과정에 관한 추상화된 모형. 데이터 모델은 데이터 구조(Data Structure)를 결정
: 디비의 구조를 잘 나타내는 개념의 집함 (ex. data types, relations, constraints)
(디비 구조 잘 설명해주는 개념들. 디비 특성 잘 보여주기 위한 것들. 잘 표현하기 위한 것들. 패션 보여주기 위한 패션 모델 처럼)
- 데이터의 대략적인 것들만 보여줌. (데이터 추상화)
- 데이터 모델은 레벨별로 분류됨 ( physical models, conceptual models, representation models)
이렇게 여러가지 데이터 모델이 있다
-> 모델의 세가지 관점
a. physical data models
: 데이터가 어떻게 저장되는가에 대한 걸 디테일하게 설명해줌
-물리적으로 어캐저장되는지
- low-level data model
-> 데이터 타입, index, access path이런걸 제공 (몇 바이트.. integer..)
b. conceptual data models
: 일반 사용자가 인식하는 데이터
- 유저가 데이터를 보는 관점과 비슷
- high-level data model
c. representational data models (거의 채택)
:physical과 conceptual 데이터 모델의 중간정도
-> 사람이 이해하기도 쉬운데, physical과도 가깝(기계와도 친숙)
= implementation data models 이렇게도 부름
* DBMS는 이걸 전제로 개발이 됨!! ex) 오라클, SQL... 각각 모두 모델 가지고 있는데 그게 이 레프레젠테이셔널 데모!!
Ex) relational model(지금은 얘가 평정), network model, hierarchical model ...
* db의 구조를 나타내기 위한 것 = 데이터 모델.
모델로 데이터 구조를 결정하게 된다.
그리고 이 표현된 구조를 schema라고 한다.
2. Schemas and instances
a. schema ( = meta-data / intension )
: 데이터 구조를 (모델을 통해서 나타내진) 말합니다. (=DB 구조와 제약조건에 대한 전반적인 명세를 기술한 것이다. )
- db 디자인할 때 정의 (디비 디자인 by db 디자이너~ 디비 유저 구분 시험 가능!!)
- 거의 잘 안바뀜
-schema diagram = 스키마를 그림으로 표현한 것 (다이어그램으로 표현한 것)
-예) 학생 테이블의 경우
Course( CourseNo : string, CourseName : string, Instructor : string )
b. database instance
: 스키마에 대한 실제 데이터. (테이블의 각 행을 의미)
- (인스턴스의 집합) = database state / snapshot / occurence / extension
- 자주 변경됨 (당연)
3. Three-Schema Architecture
* 만든 동기 : 프로그램이 데이터의 구조에 독립적이게 만들기 위함. 데이터 독립성을 위함!!
(데이터베이스 스키마를 내부단계, 논리단계, 외부단계로 구분하여 사용자에게 하부 스키마의 세부 사항을 감추고 해당 스키마의 구조에만 관심을 갖도록 한다.)
* database 디자이너 ( = 디비 구조를 결정하는 사람 = 스키마, 메타 데이터를 결정하는 사람)
- 디비에 저장될 데이터를 고름
- 구조와, 디비의 특성을 정의
- 레벨별 구분
- internal level: 전체 디비의 물리적 구조 기술, 피지컬 모델로 나타내짐
- conceptual level: 전체 디비의 개념적인(logical) 구조 기술 ( 엔티티, 데이터 타입, relation, user operation ...)
물리적 구조는감춤, conceptual/representational(대부분 이거) 모델로 표현됨
- external or view levelc : 로지컬 디비 구조의 일부분 나타냄 (유저가 보고 싶어 하는거) 즉 컨셉츄얼 레벨의 일부
conceptual과 같은 모델 사용. (가능한 모델은 당근 두가지), 유저는 여기로 접근
- Mapping
* DBMS가 알아서 큐리를 바꿔가며 사용자 요청을 처리한다
1. 유저가 external level에 데이터 달라고 큐리 보냄 query
2. external level 큐리-> conceptual level 스키마에 맵핑 (컨셉츄얼에 대한 큐리로 바꿈)
3. 컨셉츄얼 큐리-> inernal 레벨 스키마에 맵핑 (인터널에 대한 큐리로 바꿈)
4. 저장된 디비로부터 결과 가져옴
5. 결과를 external view로 맵핑
- Data independence
이 방식은 데이터 인디펜던스를 실현해주기 때문에 중요함!, 이는 DBMS의 중요한 특징
-> maintenance overhead를 줄여준다.
- 정의 : 한 레벨의 스키마를 변경했을 때, 높은 레벨의 스키마를 변경하지 않아도 되는 것 (밑은 바뀔 수 ㅇ)
(상위 단계의 스키마 정의에 영향을 주지 않고 해당 스키마 정의를 변경할 수 있는 능력)
ex) concep level schema 바꾸면 메타(밑에 레벨 스키마)는 바뀔수 있는데, 위는 안바뀜
- 종류 : logical data independence / physical level independence
1. logical Data independence
= conceptual 스키마를 바꿀 때
-> external 스키마 바꿀 필요 x
-> 어플리케이션 프로그램 변경 필요 x
2. physical level independence
= internal schema 바꿀 때
-> conceptual, external 스키마 바꿀 필요 x
-> 어플리케이션 프로그램 변경 필요 x
*데이터베이스를 구축하기 위해서 사용자는 먼저 데이터베이스 스키마를 정의한 후에 DBMS에서 제공하는 연산자들을 사용하여 데이터를 저장, 검색, 수정, 삭제하게 됨. 이러한 기능은 DBMS가 제공하는 언어로 만들게 됨
4. DBMS Language
- DBMS에 의해 제공됨, DBMS는 이것만 이해할 수 있음
- 디비를 통제하고 관리하는데 사용되는 언어
- 가장 대표적인것 = SQL
(이 네 언어는 모두 sql에 포함되는거)
a. data definition language (DDL)
: external, conceptial 스키마를 정의하는 언어
데이터리를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어
b. data manipulation language (DML)
: 데이터를 조작하는데 쓰임. retrive, insert, delete, modify ...
사용자가 데이터를 조작할 수 있게 해줌
- procedural DML
: 유저의 큐리(db에서 이것 좀 찾아줘 하는 요청)를 절차적으로 procedurally 정의한다.
*컴 언어는 procedural lan/non-p 이두개로 나뉨
절차적 = 데이터를 얻기 위해서 어떻게 해야하는지 절차적으로 디테일하게 설명해줌.
(한줄한줄. c, python, java 코드 처럼)
-Non=procedural DML
: 유저의 큐리를 선언적으로 정의한다. declaratively
어떤 데이터를 원하는지만 설명한다.
(ex. 팩스 보내라 -> 끝. 절차얘기 x. 어캐 키고 끄는지.. 설명x. 원하는게 무엇인지만 얘기함! 그리고 절차는 언어 개발자가 알아서 정의..)
c. Storage definition language (SDL)
: internal 스키마를 관리하는 언어
d. view definition language (VDL)
: external view를 명시할 때 사용되는 언어. 사용자 인터페이스를 지정함.
5. DBMS Interfaces
-> 언어를 사용하지 않고 좀 더 쉽게 만든 interface가 존재함 !! 바로 아랫것들~
a. Menu-based interfaces
: 메뉴에 있는 아이템들에서 큐리를 골라 디비에 접근하는 것 (걍 메뉴에서 골라서 클릭 뚝딱)
ex) 웹 어플리케이션
b. graphical user interfaces
: 디비 스키마의 graphical representation을 조작하여 디비에 접근하는 것
ex) atm머신
c. Forms-based interfaces
:
d. natural language interfaces
: 자연어 방식의 인터페이스로 디비 접근
(~해라 -> 알아서 시행하는 것)
d. interfaces for DBAs (adminiseter. 모니터링 하는 사람)
: DBMS 관리 환경을 위해 제공 ?
6. DBMS Component Modules
- stored data manager : 저장되어있는 모든 데이터에 대한 접근을 control 함 (user data, meta data in system catalog)
- DDL comiler (DDL : 스키마를 다루는 랭기지) : 스키마를 다루는 랭기지(DDL)의 컴파일러~ (system catalog에 이 메타데이터 저장함. 시스템 카탈로그는 메타데이터를 저장하는 테이블)
- runtime database processor :
'2-2 > 데베시' 카테고리의 다른 글
DB 03 - ER model -> conceptual modeling (0) | 2021.10.12 |
---|---|
DB 01 (0) | 2021.09.27 |