데이터베이스 기초(1)

Ju Young Jun·2021년 9월 9일
3

데이터: 의미를 가지면서 알려진 사실
데이터베이스(DB, database): 하나이상의 서로 관련이 되는 조직체들의 활동을 기술하는 데이터들의 모임

*주요 구성 요소
->개체(entity): 독립적으로 존재하는 것, 관계(realationship): 개체들관의 관계
Ex) 대학교의 데이터베이스에 관한 주요 개체와 관계
-> 예) 학생이 과목을 등록, 교수가 과목을 강의
예) 송지훈 학생이 DD3680 과목을 등록, A 교수가 DB과목을 강의
주요 개체들 : 학생, 과목, 교수
주요 관계들 : 등록, 강의
대학교 데이터베이스: 구성하는 개체들과 관계들의 데이터
예) 학생들 데이터, 과목들 데이터, 교수들 데이터, 등록 데이터, 강의 데이터

효율적인 데이터의 공유 및 관리, 데이터의 손상 방지, 신속한 데이터 복구 등의 강력한 기능을 지원하는 소프트웨어가 필요

=> 데이터베이스 관리 시스템(Database Management System, DBMS)

대규모의 데이터를 유지하고 사용하는 것을 돕기 위해 디자인되어 개발된 소프트웨어
시중 DBMS: RDBMS: MySQL, ORACLE, NoSQL DBMS: MongoDB
RDBMS는 DBMS의 한 유형임
=> 데이터베이스 시스템: DBMS에 데이터베이스가 포함된 시스템
DBMS + DB

RDB


-관계형 데이터 모델에 기초를 둔 데이터베이스
-모든 데이터를 2차원의 테이블 형태로 표현
❖ 투플(행,레코드)들의 집합, 일종의 테이블, (현재:current)
❖ 투플들의 집합이므로 모든 행은 서로 다르다. 각 행의 위치는 상관없음
❖ 행의 수: 카디날리티(cardinality)
❖ 필드의 수: 차수(degree or arity)

RDBMS

-RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어
-Relational Database management System의 약자로 관계형 모델을 기반으로 하는 DBMS의 유형
-RDBMS의 테이블은 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있음

DBMS의 장점

1)데이터 독립성
2)효율적인 접근
3)데이터 무결성
4)보안
5)데이터 관리
6)동시 접근
7)손상복구
8)응용개발 시간 감축

데이터의 명세 및 저장

데이터 모델: 높은 수준의 상위 개념적으로 데이터를 기술하는 구성자들의 집합
DBMS는 저장될 데이터를 데이터 모델에 기반하여 명시하도록 함

관계 데이터 모델(relation data model)
서로 연관된 데이터들을 테이로 모아두는 구조

관계 데이터 모델에서는 위 그림에서 처럼 속성값을 사용합니다.
학생이라는 관계에서는 학번과 이름 그리고 수강하는 강좌번호라는 속성이 필요하고, 강좌라는 관계에서는 강좌번호, 강좌 이름에 대한 속성이 필요한데, 이때 학생의 강좌번호와 강좌의 강좌번호를 사용하여 두 데이터를 연결시켜줍니다.

주된 구성자: 릴레이션(relation)
❖ 릴레이션: 레코드들의 집합, 행과 열로 구성된 일종의 테이블
❖ 릴레이션 이름, 릴레이션을 구성하는 필드들을 규정하는 스키마를 명시
➢ Students(sid:string, name:string, age:integer, gpa:real)
명시한 스키마에 의거하여 데이터를 저장: <50000, Dave, 19, 3.3>
❖ 현재 가장 널리 사용되는 데이터 모델 -> RDBMS

개체-관계 모델(Entity-Relationship:ER): 의미적인 데이터 모델
사용자가 조직체에 사용하는 데이터를 추상적으로 명시

3단계 데이터베이스 구조, DBMS의 추상화 단계

[ 외부 스키마 ]
일반 사용자나 응용 프로그래머가 접근하는 계층으로 전체 데이터베이스 중 하나의 논리적인 부분을 의미

여러 개의 외부 스키마가 있을 수 있음

서브 스키마(Sub Schema)라고도 하며, View의 개념임
뷰: 사용자 그룹의 요청에 따라 데이터베이스의 일부분을 접근하는 것을
기술함

외부스키마란 사용자에게 보여지는 스키마로, 겉으로 보이는 DB, Table의 형태를 의미. 사용 주체나 응용에 따라서 바라보는 구조가 다를 수 있슴. 누군가는 GUI를 이용해서 볼 수 있고, 누군가는 Select문을 이용하여 조회할 수 있는데 이 때 우리가 보게되는 것을 외부스키마라고 이해하면 댐. 아래의 외부스키마도 다이어그램처럼 표시되어 있지만 다른 형태로도 데이터를 볼 수 있고, 그것 역시도 외부스키마라고 함. 외부스키마는 개념스키마의 부분집합이 됨. (그렇다고 외부스키마가 조회된 결과값을 의미하는 것은 아닙니다.)

❖ Course_Info (cid:string, fname: string, enrollment: integer)
각 과목에 대해 가르치는 교수 이름과 수강인원 파악

[ 개념 스키마 ]
전체 데이터베이스의 정의를 의미

통합 조직별로 하나만 존재하며 DBA가 관리함

하나의 데이터베이스에는 하나의 개념 스키마가 존재

개념스키마란 개발하는데 필요한 모든 데이터베이스를 정의해 놓은 것. 그렇기에 우리에게 필요한 데이터만을 추출해 보는 외부스키마는 개념스키마의 부분집합이 될 수 밖에 없음. 개념스키마는 데이터베이스에서 매우 중요한 비중을 차지하기 때문에 하나만 존재하며 이를 DBA가 관리합니다.
❖ Students (sid: string, name: string, login: string, age: integer, gpa: real)
❖ Courses (cid: string, cname: string, credits: integer)
❖ Faculty (fid: string, fname: string, sal: real)
❖ Enrolled (sid: string, cid: string, grade: string)

[ 내부 스키마 & 물리적 스키마 ]
물리적 저장장치에 데이터베이스가 실제로 저장되는 방법의 표현

내부 스키마 역시 하나만 존재

인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨

내부스키마란 실제 구현에 관한 이야기로, 이 속성이 어떠한 형태(Integer or Varchar or 등등)이며 어느정도의 크기를 갖는지 등에 관해서 기술해둔 스키마를 의미합니다. 아래의 사진을 참고하면 쉽게 이해할 수 있습니다.

❖ 저장 및 접근 방법 명시
❖ 예: 릴레이션을 순서없이 들어오는 대로 화일로 저장 (휩 파일)

Students의 sid, Faculty의 fid로 인덱스 생성

❖ 인덱스: 검색 속도를 높이기 위해 (특정 필드 값, 그 값을 가지고 있는
레코드 주소)로 구성된 보조 파일

[ 매핑(Mapping) ]
외부/개념 매핑

개념/내부 매핑

외부/개념 매핑은 사용자의 외부스키마와 개념 스키마 간의 매핑(사상)을 의미하며 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시키는 것이다. 개념/내부 매핑은 개념 스키마의 데이터가 내부스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지를 대응시키는 것이다.

[ 논리적 데이터 독립성 ]
외부 스키마와 개념 스키마 사이의 독립성

개념스키마가 변경되어도 외부 스키마에는 영향을 미치지 않도록 지원

논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록 하는 개념

개념 스키마의 테이블을 생성하거나 변경하여도 외부 스키마가 직접 다루는 테이블이 아니면 영향이 없음

논리적 데이터 독립성의 예시를 들어 설명하면 우리가 카카오톡에서 친구들 목록을 본다고 가정합시다. 이때 카카오 선물의 빼빼로 가격이 1000원 올랐다고 하여도 우리가 직접 다루고 있는 테이블이 아니기 때문에 영향을 주지 않습니다. 이렇게 우리가 보는 외부 스키마와 개념 스키마가 서로 영향을 주지 않게 분리해 놓은 것을 논리적 데이터 독립성이라고 합니다.

[ 물리적 데이터 독립성 ]
개념 스키마와 내부 스키마 사이의 독립성

저장장치 구조 변경과 같이 내부스키마가 변경되어도 개념 스키마에 영향을 미치지 않도록 지원

성능 개선을 위해 물리적 저장 장치를 재구성할 경우 개념 스키마나 외부스키마에 영향이 없음

물리적 독립성은 논리적 독립성보다 구현하기가 쉬움

물리적 데이터 독립성의 예시를 들어 설명하면 우리가 공간의 효율성을 위해서 VARCHAR(100)의 주소라는 속성을 VARCHAR(50)으로 바꾼다고 가정할 때, 우리가 주소의 크기를 줄여도 개념 스키마에는 영향을 주지 않는데 이를 물리적 데이터 독립성이라고 합니다.

DBMS에서 질의

 데이터베이스에서 정보를 습득할 수 있는 용이성이 그 데이터베이스의 가치를 결정
 관계 데이터베이스 시스템에서는 다양한 종류의 질문을 쉽게 할 수 있음
 이러한 특징이 RDBMS가 시장에서 대중화되는데 큰 기여를 함
❖ 학생 ID가 123456인 학생의 이름
❖ 얼마나 많은 학생들이 CS564 과목을 등록하였는가? (P. 15)
 질의: DBMS에 저장되어 있는 데이터에 대한 질문
 DBMS는 질의를 작성할 수 있는 질의어를 제공
 관계모델은 강력한 질의어를 제공
❖ 관계 대수: 릴레이션을 조작하기 위한 연산자들의 모임에 기반을 둔 질의어
❖ 관계 해석: 수학적인 논리에 바탕을 둔 질의어, 직관적이며 what을 명시
 SQL(Structured Query Language): 관계 대수와 관계 해석을 기반으로 통계
관련 집단 연산자 등을 확장하여 지원하는 강력하고 심플한 언어

profile
안녕하세요 :)

0개의 댓글