오래 못 할 짓 하지 않기
[ 데이터베이스 ] 1. 기본 개념들 ( DB , DBMS ) 본문
DB란?
"관련있는" 데이터들의 "조직화된" 집합
관련있는 데이터들을 조직화해서 정리해야한다.
→ 도서관에 책에 정리가 되어있지 않으면 불편함을 넘어서, 제 역할을 할 수 없을 수도 있다.
- 조직화를 통한 장점
1. 원하는 데이터를 빨리 찾을 수 있다.
2. 중복을 피할 수 있다.
3. 데이터의 불일치도 막을 수 있다.
( 도서관에 책을 정리를 해놓았을 때 장점과 같다. )
DBMS
Database management systems
: 사용자가 DB를 정의하고 만들고 관리하는 기능을 더 편하게 사용할 수 있게 하는 시스템
→ DB를 정의하다보면 부가적인 데이터가 발생한다 ( = metadata )
Metadata = data about data
주로 데이터의 유형, 구조 , 조건 , 저장 , 인덱스 이런 것들에 대한 정보.
이런 것들도 DBMS에 저장된다.
Database system ( = 줄여서 Database라고 함 )
: database + DBMS + 연관된 Application
Data model
Data Model을 3가지로 분류할 수 있는데
- Conceptual (or high-level) data models
- Logical (or represetational) data models
- Physical (or low-level) data models
- Conceptual (or high-level) data models
1) 일반 사용자들이 쉽게 이해할 수 있는 개념
2) 추상화 수준이 가장 높음
ex) Entity-Relationship model
- Logical data models
1) 이해하기 어렵지 않고 + 디테일하게 DB를 구조화 할 수 있는 개념을 제공
2) 데이터가 저장될 때의 구조와 비슷하며, DB구조화를 가능하게 한다.
3) 특정 DBMS에 종속되지 않는 수준으로 DB구조화 가능
ex) relational data model
이 외에도
Object data model이 있고,
둘을 합친 object-relational data model도 있다.
하지만 제일 많이 쓰이는 건 relational data model
- Physical (or low-level) models
1) 컴퓨터에 데이터가 어떤 형태로 저장되는지를 기술할 수 있는 수단 제공
2) data format, data orderings, access path 등을 제공한다.
+ access path : 데이터 검색을 빠르게 하기 위한 구조체 // ex) index
DB Schema / State
Database Schema
: Data model을 바탕으로 DB의 구조를 기술한 것
→ 설계할 때 정해지며, 한 번 정해지면 변하지 않음.
Database State
: DB에 들어있는 데이터의 상태
→ 특정 시점에 DB에 있는 데이터 = DB state , snapshot
= 현재 DB에 있는 instances의 집합
Three-schema architecture
사용 목적 : User application으로부터 Phisical DB를 분리시키는 목적
= Phisical DB가 바뀌어도 사용에는 지장이 없도록
DB system은 추상화 정도에 맞춰 3단계로 구분할 수 있다.
DB가 내부적으로는 어렵게 작동하지만, 이 관점에 맞추어 편하게 이해할 수 있다.
Three-schema architecture를 통해 Phsical DB가 변하더라도, User가 사용하는 데에는 큰 지장이 없게 하려 함이다.
- External schemas at external level ( = 외부 단계 ) // External = user view
- Conceptual schemas at conceptual level ( = 개념 단계 )
- Internal schemas at internal level ( = 내부 단계 )
Internal Schema
: 물리적으로 DB에 가장 가까이 있는 Schema
→ 물리적으로 Data가 어떻게 저장되는지 나타냄 ( with Physical data model )
Data storage, structure, Access path와 같이 실체가 있는 내용을 기술한다.
External Schema (제일 간결하다고 보면 된다)
: External views, user views라고 부름
● 유저들이 [ 필요로 하는 데이터만 표현 ] 한다!
● 그 외에 알려줄 필요없는 데이터는 숨김 ( ex) id )
● Logical Data model로 표현
근데 이렇게 Ex/Internal schema 두 개로만 하다보니
각각의 유저마다 필요로 하는 data가 달라서, Internal level에서도 중복이 생기게 된다.
이런 것도 맞춰 schema를 만들려고 하다보니 조금씩 다른 Internal schema가 계속해서 생겨나서 복잡해지게 되었다.
이 문제를 해결하기 위해 만들어진 게 두 단계 사이에 하나의 단계를 추가한 것이다.
Conceptual Schema (Internal과 external의 중간 단계)
: Internal schema를 한 번 추상화 한 단계.
- 전체 DB에 대한 구조를 기술한다.
- Internal에서 하는 저장 구조,방법에 대한 내용은 숨긴다.
- Logical data model을 통해 표현
가령 Internal schema(external)가 변하더라도, Conceptual scema 가 바뀔 필요는 없다.
▶ 둘 사이의 mapping만 바꾸면 된다.
추상적으로 우리 편의에 따라 표현하는 것이지, 실제로 Data는 Internal level에 존재한다.
Data Definition Language ( DDL )
: Conceptual Schema를 정의하기 위해 사용되는 언어
Internal Schema는 주로 Parameter로 정의된다.
Stroage Definition Language ( SDL )
: Internal Schema를 정의하는 용도로 사용되는 언어
- 요즘은, 트깋 관계형 DBMS에서는
SDL을 잘 쓰지 않고 DDL에서 Parameter로 정의한다.
View Definition Language ( VDL )
: EXternal Schema를 정의하는 용도로 사용되는 언어
- 대부분의 DBMS에서는 DDL이 이거까지 다 함
Data Manipulation Language ( DML )
: DB에 있는 data를 활용하기 위한 언어
ex) data 추가, 삭제, 수정, 검색 같은 기능을 제공하는 언어
요새는 DML VDL DDL 따로 존재하는 게 아니라 통합되어있음
대표적으로 Relational database language : SQL
(참고)
유튜브 쉬운코드
'3학년 1학기 > 데이터베이스(DB)' 카테고리의 다른 글
[ 데이터베이스 ] 6. NULL / 3 valued logic (0) | 2023.12.31 |
---|---|
[ 데이터베이스 ] 5. Subquery (0) | 2023.12.31 |
[ 데이터베이스 ] 4. SQL 활용 ( 추가/수정/삭제 ) (0) | 2023.12.30 |
[ 데이터베이스 ] 3. SQL (0) | 2023.12.28 |
[ 데이터베이스 ] 2. Relational Database (0) | 2023.12.26 |