스키마(Schema)

 

데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술하는 것

명세 : 자세히

기술 : 대상의 과정의 내용과 특징을 있는 그대로 서술

 

영문사이트

https://www.educative.io/blog/what-are-database-schemas-examples#what

데이터베이스에 데이터를 저장하는 것을 타나내는 추상적인 디자인

 

=>한마디로 데이터베이스의 디자인을 어떻게 할것인가? (설계도 느낌)

디자인이라 하니까 이해하기 편해졌다.


스키마의 종류

 

추상적인 디자인이라 하였는데 시점에 따라 3가지로 디자인이 나뉜다.

 

1.개념스키마(Conceptual Schema)= 데이터베이스 관리자의 시점

 

데이터베이스 관리자의 시점이라는건 부분부분적인 데이터가 아닌

전체 데이터베이스 를 목적으로하는 시점이며 (정말 개발하는데 있어서 저장되는 모든 데이터)

데이터베이스 : 데이터의 모음

개체 간의 관계와 제약조건을 디자인한다. (접근권한, 보안 및 무결성 규칙)

개체 : 실제로 저장된 값(인스턴스)

 

 

2.외부스키마(External Schema) = 서브 스키마 = 사용자 뷰

 

개념스키마가 전체적인 데이터를 의미한다.

그럼 사용자는 그 전체적인 데이터를 다 알아야할까?

사용자는 필요한 데이터만 접근하면 된다.

즉, 사용자에게 필요한 데이터를 목적으로하는 구성을 디자인한다.

이게 좀 이해하기 애매했었는데 내 생각에는 DB가 응용프로그램 하나에만 쓰이는게 아니라 여러 프로그램에 쓰이기 때문에

각 프로그램마다 필요한 데이터구성이 있을텐데 이 하나하나의 디자인을 외부스키마라고 하는거 같다.

 

3.내부스키마(Internal Schema) = 저장 스키마

 

저장장치의 시점으로 보는 디자인이다.

말 그대로 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 디자인

(레코드의 구조, 필드 크기, 표현방법...)

 

이 그림이 이해하기 제일 쉬웠다.


데이터베이스 언어(Database Language)

 

DBMS를 통해 사용 가능하며 기능과 목적에 의해 3가지로 나뉜다. 아잇싯팔 또 세가지네

 

1. 데이터 정의 언어(DDL : Data Definition Language)

 

DB를 구축하거나 수정할 목적으로 사용하는 언어

수정할 목적 : DB구조, 데이터 형식, 접근 방식, 외부 스키마 정의, 데이터의 물리적 순서 등 

데이터베이스 관리자가 사용한다.

종류 역할
CREATE DB, 테이블등을 생성
ALTER 테이블을 수정
DROP DB, 테이블을 삭제
TRUNCATE 테이블 초기화

 

2. 데이터 조작 언어(DML : Data Manipulation Language)

 

사용자로 하여금 데이터를 처리할 수 있게 하는 언어,

사용자와 DBMS간의 인터페이스를 제공한다.

사용자가 사용한다는걸 옆집 개도 알수있다.

종류 역할
SELECT 데이터를 조회
INSERT 데이터를 삽입
UPDATE 데이터를 수정
DELETE 데이터를 삭제

 

3.데이터 제어 언어(DCL : Data Control Language)

 

데이터를 보호하고 데이터를 관리하는 목적으로 사용

데이터를 관리 : 보안, 무결성, 데이터 회복....

종류 역할
GRANT 특정 DB사용자에게 특정 작업에 대한 수행권 부여
REVOKE 특정 DB사용자에게 특정 작업에 대한 수행권 박탈
COMMIT 데이터 처리의 작업 결과를 저장 반영,
하나의 복구 기점이 된다.
ROLLBACK 마지막 commit시점의 상태로 복원

 

 

파일 시스템

 

데이터를 파일 단위로 파일서버에 저장하는 방식도 있고

로컬에서 참조하는 파일을 뜻하는 방식도 있었다.

(=서버가 아닌 자신의 보조기억장치에 저장되어있는 파일)

보통 DBMS와 비교할때 사용되는 건 로컬에서 참조하는 파일을 뜻하는 경우 같다.

 

 

프로그램과 데이터 파일의 종속성이 높다.

파일 시스템은 쉬운 질의기능이 없기 때문에 개발자가 만들어야 한다.

  • 나중에 추가로 다른 데이터가 생겨 그 데이터를 다루는 기능이 필요할 경우 추가로 그에 맞게 이 파일을 사용하는 모든 프로그램을 다 변경해줘야 한다
  • 파일의 레코드 구조나 확장자가 변경되면 그에 맞게 이 파일을 사용하는 모든 프로그램을 다 변경해줘야 한다

 

동시성 없다

두 개 이상의 클라이언트가 파일에 접근할 때 동기화가 되지 않아 데이터가 제대로 저장되지 않을 수 있다

 

 

데이터 중복성이 높다

데이터의 중복을 피하는 기능이 없기에 중복된 데이터를 가질 수 있다.

밑의 단점들은 데이터가 중복되었을 경우 나오는 단점이다.

  • 일관성이 없음, 중복된 데이터에서 값이 변경될 경우 하나만 변경될 가능성도 있기에 
  • 각 프로그램마다 보안 기능이 다르다 =  중복된 데이터마다 동등한 보안 수준 유지 어려움
  • 경제성이 떨어짐, 같은 데이터가 여러 개 존재하니 저장공간 낭비다 
  • 무결성 유지 힘듦, 아무리 찾아봐도 일관성과 다른 게 없다.

 

 

DBMS(DataBase Management System)

 

데이터베이스를 공유하거나 데이터를 검색하거나 데이터를 저장하는 것처럼

데이터베이스를 조작, 관리하는 시스템

ex) Oracle, MySQL, MSSQL, MariaDB

 

 

DBMS의 기능

  • 정의(Definition): 데이터베이스에 저장될 데이터의 구조에 대한 정의(데이터 삽입이 아님!)와 응용프로그램이 이를 이용하는 방식을 정의하는 기능
  • 조작(Manipulation): 응용프로그램이 요청하는 데이터의 검색, 갱신, 삽입, 수정, 삭제 작업을 지원함
  • 제어(Contorl): DB에 접근하는 갱신, 삽입, 삭제 작업이 정확히 수행되어 무결성 유지, 허가된 사용자에게 허가된 데이터만 접근할 수 있도록 보안 유지, 여러 사용자가 동시에 접근하여도 항상 정확성을 유지할 수 있어야 한다.

 

DBMS의 장단점

장점 단점
데이터의 중복을 피할 수 있음
동시성 가능
일관성 유지
무결성 유지
보안 유지
데이터 통합 관리 가능
항상 최신의 데이터를 유지
데이터의 실시간 처리 가능
데이터의 논리적, 물리적 독립성이 보장
시스템이 복잡함
DBMS을 운영하기 위한 비용과 자원 요구

※ 논리적 독립성: 데이터의 논리적 구소를 변경하더라도 프로그램은 변경되지 않음

※ 물리적 독립성: 프로그램과 보조기억장치에서 독립시켜 새로운 보조기억장치로 변경하더라도 프로그램에 영향을 주지 않음

  • 자료&정보

자료(Data): 단순한 사실이나 결과 값

[내가 지금 먹는 음료수의 칼로리, 내 핸드폰의 최대 데시벨]

 

정보(Information) : 자료를 가공하여 의사결정에 도움을 줄 수 있는 결과물

그렇다면 비교하면 정보가 될 수 있지 않을까?

[다이어트 중이라 제일 낮은 칼로리의 음료수를 먹을 거다, 3가지 음료수의 칼로리를 보고 가장 낮은 음료수를 파악,

여기서 "칼로리"들이 자료들이 되겠고 정보는 "3가지 음료수중에 결정한 음료수가 가장 낮은 칼로리를 가지고 있다"가 되겠다]


  • 데이터 베이스 정의

데이터 베이스에 관해 검색하면 4가지가 많이 나온다

 

통합된 데이터 : 자료의 중복을 배제한 데이터

[회원가입을 하였는데 내 정보가 한 번만 저장되지 않고 두 번 이상 저장되는 것처럼 중복을 배제한다]

저장된 데이터 : 컴퓨터 같은 저장 매체에 저장된 데이터

[종이나 책, 이러한 매체가 아닌 컴퓨터, 핸드폰처럼 저장장치에 저장을 한다]

운영 데이터 : 조직의 업무를 수행하는데 반드시 필요한 데이터

[음료수를 만드는 조직인데 뜬금없이 학생들의 키, 몸무게 이러한 데이터를 저장하지 않는다]

공용 데이터 : 여러 응용 시스템들이 같이 공용으로 사용하는 데이터

[은행에서 수납, 저축, 카드 등록 업무가 있다면 수납 데이터베이스, 저축 데이터베이스, 카드등록 데이터베이스

이렇게 나누지 않고 하나의 통합 데이터 베이스를 구축하여 세 업무 모두 사용할 수 있다는 뜻 같다]

 

근데 이게 정의라고 많이 나오는데 나는 어떠한 데이터가 들어가야 하는가 를 말하는 쪽에 더 가깝게 느껴졌다


  • 데이터 베이스 특징

실시간 접근성 : 말 그대로 질의에 대하여 실시간으로 처리가 가능하다

[내가 밥 먹을 때나 화장실에 있을 때나 원할 때 언제든지 질의하면 그에 맞는 데이터를 얻을 수 있다]

계속적인 변화 : 항상 최신 데이터를 유지한다

[내가 데이터를 얻으려고 요청했는데 1년 전 데이터나 1시간 전 데이터를 받지 않는다]

동시 공유 : 여러 사용자에게 동시에 공유된다

[동시에 나와 친구가 같은 데이터 건 다른 데이터건 데이터를 참조할 수 있다]

내용에 의한 참조 : 데이터를 찾을 때 어떠한 주소가 아닌 값 그 자체로 데이터를 찾을 수 있다

[0x010222처럼 주소로 데이터를 요청하는 게 아니라 "사과" , "160cm" 이러한 값들로 원하는 데이터를 요청할 수 있다]

 

 


이곳은 설명이 제일 깔끔하고 너무 설명이 잘 되어있었다

https://mangkyu.tistory.com/19

'컴퓨터 공학 > 데이터 베이스' 카테고리의 다른 글

스키마, 데이터 베이스 언어  (0) 2022.02.05
DataBase Management System  (0) 2022.01.27

+ Recent posts