기초 용어 정리
데이터: 관찰의 결과로 나타난 정량적 혹은 정성적인 실제 값
정보: 데이터에 의미를 부여한것
지식: 사물이나 현상에 대한 이해
데이터베이스: 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
- 데이터의 검색과 변경 작업을 주로 수행
- 변경: 시간에 따라 변하는 데이터의 값을 데이터베이스에 반영하기 위해 수행하는 삽입, 삭제, 수정 등의 작업
데이터베이스의 개념
① 통합된 데이터 (Intergrated Data)
- 데이터를 통합하는 개념
- 데이터의 중복을 최소화하여 중복으로 인한 데이터 불일치 현상 제거
② 저장된 데이터 (Stored Data)
- 문서로 보관된 데이터가 아닌 컴퓨터 저장장치에 저장된 데이터 (ex. 디스크, 테이프)
③ 운영 데이터 (Operational Data)
- 조직의 목적을 위해 사용되는 데이터 / 업무를 위한 검색 목적으로 저장된 데이터
④ 공용 데이터 (Shared Data)
- 공동으로 사용되는 데이터
데이터베이스의 특징
① 실시간 접근성 (Real Time Accessibility)
- 사용자가 데이터 요청 시 수초 내에 실시간으로 서비스함
② 계속적인 변화 (Continuous Change)
- 데이터의 값은 시간에 따라 계속 변화함 (ex. 예약시스템, 교통정보, 판매정보 등)
- 삽입, 삭제, 수정 등의 작업을 통해 바뀐 데이터 값 저장함
③ 동시공유 (Concurrent Sharing)
- 여러 사용자에게 동시 공유됨
- 데이터베이스에 접근하는 프로그램이 여러 개 있다는 의미임
④ 내용에 따른 참조 (Reference by Content)
- 데이터의 물리적인 위치가 아닌 데이터의 값에 따라 참조됨
데이터베이스 시스템의 구성
① DBMS: 사용자와 데이터베이스를 연결시켜주는 소프트웨어
- 주기억장치에 상주
② 데이터 베이스: 모아둔 데이터
- 하드디스크에 저장
③ 데이터 모델: 눈에 보이지 않는 논리적인 개념(데이터가 저장되는 기법에 관한 내용)
용어
○ DBA(DataBase Administrator): 데이터베이스 관리자
○ DDL(Data Definition Language): 데이터 정의어
○ DML(Data Manipulation Language): 데이터 조작어
○ Embedded DML(내장형 데이터 조작어): 코딩시 필요
○ 스키마: DB의 구조를 정의해 놓은 것
ex) 테이블에서 속성, 구조, 속성 값의 타입 등 정의함
○ 인덱스: 자료를 쉽고 빠르게 찾을 수 있도록 만든 데이터 구조
○ 데이터 사전: 데이터에 대한 설명
정보시스템의 발전
① 파일 시스템
○ 데이터를 파일 단위로 파일서버에 저장 (파일 연동 X)
○ LAN으로 파일 서버에 컴퓨터 연결 → 데이터 사용위해 각 컴퓨터의 응용프로그램에서 파일의 열기와 닫기 요청
○ 데이터 중복 저장 가능성↑ + 데이터의 일관성 훼손 가능성↑
② 데이터베이스 시스템
○ DBMS 이용해 데이터를 통합 관리함
○ 서버: 데이터를 가진 쪽 / 클라이언트: 외부에서 데이터 요청하는 쪽
○ 데이터의 일관성유지, 복구, 동시접근 제어 등 수행 → 데이터의 중복 줄이고 데이터 표준화해 무결성 유지함
③ 웹 데이터베이스 시스템
○ 데이터베이스를 웹 브라우저에서 사용할 수 있도록 서비스함 (ex. 온라인 상거래, 공공민원 서비스)
○ 클라이언트가 웹브라우저 통해서 웹서버에 접속해 데이터 요청 → 웹서버는 DBMS 서버에 데이터 요청
④ 분산 데이터베이스 시스템
○ 여러 곳에 분산된 DBMS 서버 연결해 운영함 (ex, 대규모 응용 시스템)
⑤ 클라우드 데이터베이스 시스템
○ 클라우드 상에 DBMS서버 올려놓고 운영하는 시스템
○ 보안 문제, 오류 시 전세계 시스템 마비문제
파일시스템과 DBMS의 비교
구분 | 파일시스템 | DBMS |
데이터 정의 및 저장 | - 데이터 정의: 프로그램 - 데이터 저장: 파일 시스템 |
- 데이터 정의: DBMS - 데이터 저장: 데이터베이스 |
데이터 접근 방법 | 응용 프로그램이 파일에 직접 접근 | 응용 프로그램이 DBMS에 파일 접근 요청 |
사용 언어 | 자바, C, C++, ... | 자바, C, C++ 과 SQL |
CPU/주기억장치 사용 |
적음 | 많음 |
데이터 중복 | 데이터를 파일 단위로 저장해 중복가능 | DBMS를 이용해 데이터를 공유해 중복 가능성 낮음 |
데이터 일관성 | 데이터 중복저장으로 일관성 결여됨 | 중복제거로 데이터 일관성 유지 |
데이터 독립성 | 독립성 유지 불가능 → 데이터와 프로그램의 분리가 어려움 | 독립성 유지가능 → 데이터와 프로그램 분리가능 |
관리 기능 | 보통 | 데이터 복구, 보안, 동시성 제어, 데이터 관리 기능 수행 |
프로그램 개발 생산성 |
나쁨 | 짧은 시간애네 개발 가능 |
기타 장점 | 보통 | 데이터 무결성 유지, 데이터 표준 준수 용이 |
데이터베이스 언어 (SQL)
● 데이터 정의어 (DDL, Data Definition Language)
- DBMS에 저장된 테이블 구조 정의
- CREATE, ALTER, DROP
● 데이터 조작어 (DML, Data Manipulation Language)
- 데이터를 검색, 삽입, 삭제, 수정하는데 사용
- SELECT, INSERT, DELETE, UPDATE
● 데이터 제어어 (DCL, Data Control Language)
- 데이터의 사용 권한 관리
- GRANT, REVOKE
데이터베이스 사용자
● 일반사용자
- 데이터를 다루는 업무를 하는 사람
- 응용프로그램으로 데이터베이스에 접근하는 일반인
● 응용프로그래머
- 프로그래밍 언어 + SQL 사용해 일반사용자가 사용할 수 있도록 응용 프로그램 만드는 사람
● SQL 사용자
- 응용 프로그램으로 구현되어 있지 않은 업무를 SQL 사용해 처리하는 사람
● 데이터베이스 관리자 (DBA, DataBase Administrator)
- 데이터베이스 시스템(설계, 구현, 유지보수)을 총괄
- 업무: 데이터베이스 사용자 통제, 보안, 성능 모니터링, 데이터 전체 파악 및 관리, 데이터 이동 및 복사 등
SQL 언어 | 프로그래밍 능력 | DBMS 지식 | 데이터 구성 | |
일반 사용자 | X | X | X | X |
응용 프로그래머 | ◎ | ◎ | O | O |
SQL 사용자 | ◎ | X | O | O |
데이터베이스 관리자 |
◎ | O | ◎ | ◎ |
DBMS의 기능
● 데이터 정의(Definition): 데이터 구조 정의하고 데이터 구조에 대한 삭제 및 변경 기능 수행
● 데이터 조작(Manipulation): 데이터 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정, 삭제 작업 지원
● 데이터 추출(Retrieval): 사용자가 조회하는 데이터나 응용 프로그램의 데이터 추출
● 데이터 제어(Control): 데이터베이스 사용자 생성하고 모니터링하며 접근을 제어 / 백업, 회복, 동시성 제어 기능 지원
데이터 모델
① 계층 데이터 모델 (Hierarchical Data Model)
- IMS(IBM)
② 네트워크 데이터 모델 (Network Data Model)
- IDS(GE)
③ 객체 데이터 모델 (Object Data Model)
- Oracle(Oracle), System R(IBM), dBase(Ashton), MySQL(썬마이크로시스템), SQL Server(마이크로소프트)
④ 관계 데이터 모델 (Relational Data Model) → 가장 많이 쓰인다
- Gemstone, ObjectStone
- 관계 데이터 모델이 갖는 텍스트 위주의 한계를 극복하기 위해 객체 개념에 기반해 만들었다
⑤ 객체-관계 데이터 모델 (Object-relational Data Model) → 관계 데이터 모델 + 객체 데이터 모델의 장점 결합
- UniSQL
- 현재 데이터베이스 시스템은 관계 데이터 모델을 기본개념으로 객체 데이터 모델의 장점을 이부 수용한 객체-관계 데이터 모델로 발전하고 있다
● 데이터 모델: 데이터 베이스 시스템에서 데이터를 저장하는 이론적인 방법, 데이터베이스에 데이터가 어떻게 구조화되어 저장될지를 결정함 (역사: 4강 p.28)
○ 데이터를 간에 관계를 표현하는 방법
1) 포인터 사용: 계층 데이터 모델, 네트워크 데이터 모델
- 데이터를 직접 찾아갈 수 있어 프로그램 속도 빠르지만 응용 프로그램 개발 속도가 느리다
2) 속성 값 사용: 관계 데이터 모델 ← 가장 많이 사용함
- 포인터 사용할 때보다 속도는 조금 느리지만 개념이 쉽고 프로그램 개발이 빠르다
3) 객체식별자 사용: 객체 데이터 모델
- 객체지향 언어의 상속, 캡슐화 등의 개념을 도입
데이터 베이스의 개념적 구조
● 1975년 ANSI에서 데이터베이스를 개념적으로 이해하기 위해 데이터베이스 구조에 관한 안을 만들었다
- 데이터베이스를 보는 관점을 3개의 단계로 분리한 것 = 3단계 데이터베이스 구조(3-Layer Database Architecture)
- 3단계 데이터베이스 구조는 데이터베이스의 복잡한 구조를 단순화하여 표현했다
◇ 스키마
: 데이터베이스의 조직이나 구조를 의미함
○ 릴레이션이 어떻게 구성되는지 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의함
○ 테이블에서 스키마는 테이블의 첫 행인 헤더(속성)에 나타나고 데이터의 특징을 나타내는 속성, 자료타입 등의 정보를 담고 있음
① 외부 스키마(External Schema)
○ 일반 사용자나 응용 프로그래머가 접근하는 계층
○ 전체 데이터베이스 중에서 하나의 논리적인 부분
○ 여러개의 외부스카마가 있을 수 있다
○ 서브 스키마라고도 하고 뷰의 개념이다
② 개념 스키마(Conceptual Schema)
○ 전체 데이터베이스의 정의를 의미한다
○ 하나만 존재하고 DBA가 관리한다
○ 하나의 데이터베이스에는 하나의 개념 스키마가 존재
○ 데이터관계, 제약사랑, 무결성의 내용이 포함
③ 내부 스키마(Internal Schema)
○ 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법을 표현
○ 하나만 존재
○ 인덱스, 데이터레코드 배치방법, 데이터 압축의 내용이 포함
◇ 매핑(Mapping)
○ DBMS는 매핑을 통해 각 단계 간 대응 관계를 정의
① 외부/개념 매핑 (External-conceptual mapping)
○ 사용자의 외부 스키마와 개념 스키마 간의 매핑
○ 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는지 대응시킨다
② 개념/내부 매핑 (Conceptual-internal mapping)
○ 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어느곳에 어떤 방법으로 저장되는지 대응시킨다
◇ 데이터 독립성
○ 3단계 데이터베이스 구조의 특징은 데이터 독립성에 있다
○ 하위단계(물리적)의 세부 사항을 상위단계(논리적)에 추상화해 숨김으로써 한 단계 내의 변경에 대해서 다른단계와 상호 갑섭이 없도록한다
○ 일반사용자는 사용자별로 외부스키마를 사용하므로 다른 스키마에 영향을 주지않고 DBA는 일반사용자의 외부스키마에 영향 안주면서 개념스키마나 내부스키마의 물리적인 저장 방법을 바꿀 수 있다
① 논리적 데이터 독립성 (Logical Data Independence)
○ 외부스키마와 개념스키마 사이의 독립성
○ 개념스키마가 변경되어도 외부스키마에는 영향을 미치지 않도록 지원
○ 논리적 구조가 변경되도 응용프로그램에는 영향 없도록 함
○ 개념스키마의 테이블을 생성하거나 변경해도 외부스키마가 직접 다루는 테이블아니면 영향없다
② 물리적 데이터 독립성 (Physical Data Independence)
○ 개념스키마와 내부스키마 사이의 독립성
○ 저장창치 구조 변경처럼 내부스키마가 변경되도 개념스키마에 영향 미치지 않도록 지원
○ 성능 개선 위해 물리적 저장 장치를 재구성할 경우에도 개념스키마나 응용프로그램같은 외부스키마에 영향없다
○ 논리적 독립성보다 구현하기 쉽다
릴레이션
: 행과 열로 구정된 테이블, 스키마와 인스턴스로 이루어짐
- 스키마 설명은 위에
-인스턴스: 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합
① 릴레이션 내에서 관계: 릴레이션 내 데이터들의 관계로 관련있는 실제 데이터들의 집합으로 이루어
② 릴레이션 간에 관계: 한 릴레이션에서 다른 릴레이션으로 식별 가능한 값을 이용해 연결함
◇ 스키마의 요소
□ 속성(Atrribute) = 열
□ 도메인: 속성이 가질 수 있는 값
□ 차수(Degree): 속성의 개수
◇ 인스턴스의 요소
□ 투플(Tuple) = 행
- 각 투플의 속성값은 릴레이션 스키마에서 정의한 도메인 값으로 구성
- 투플의 속성의 개수는 릴레이션 스키마의 차수와 동일
- 모든 투플들은 서로 중복되지 않아야 함
□ 카디날리티(Cardinality) = 투플의 수
- 투플의 삽입, 삭제, 수정 등에 따라 수시로 변함
릴레이션 용어 | 같은 의미로 통용되는 용어 | 파일 시스템 용어 |
릴레이션 | 테이블 | 파일 |
스키마 | 내포 | 헤더 |
인스턴스 | 외연 | 데이터 |
투플 | 행 | 레코드 |
속성 | 열 | 필 |
◇ 릴레이션의 특징
① 한 속성의 값은 모두 같은 도메인을 값을 갖는다
② 속성은 단일값을 갖는다
③ 속성은 서로 다름이름을 가진다
④ 속성의 순서는 상관없다
⑤투플의 순서는 상관없다
⑥ 릴레이션 내의 중복된 투플은 허용하지 않는다
관계 데이터 모델
● 데이터를 2차원 테이블 형태인 릴레이션으로 표현해놓은 것
● 제약조건과 관계연산을 위한 관계대수를 정의해 놓음
● 제약조건 : 각 릴레이션에 저장된 데이터 값이 가져야하는 제약
● 관계연산 : 릴레이션을 다루는 연산 규칙
● 관계 데이터베이스 시스템: 관계 데이터 모델을 컴퓨터 시스템에 구현한 것
- SQL 기반으로 구현
키
: 특정 투플을 식별할 때 사용하는 속성(의 집합)
- 속성의 값은 반드시 달라야하고 투플들을 서로 구별할 수 있어야한다
1) 슈퍼키: 튜플을 유일하게 식별할 수 있는 값
- 슈퍼키는 포함하지 않아도 되는 속성을 포함할 수 있음
2) 후보키: 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
3) 기본키(Primary Key): 후보키 중 하나를 선택해 대표로 삼은 키
- 스키마 표현시 밑줄을 그어 표시한다
- 선정시 고려사항
① 릴레이션 내 투플을 식별할 수 있는 고유한 값을 가져야한다
② 키 값의 변동이 일어나지 않아야 한다
③ 최대한 적은 수의 속성으로 구성해야 한다
④ 향후 기본키 사용시에 문제발생 소지가 없어야 한다
⑤ NULL값은 허용 안한다
4) 대리키(인조키): 기본키가 보안을 요구하거나 + 여러속성으로 구성되어 복잡하거나 + 기본키로 마땅한 것이 없을 때 = 가상의 속성을 만들어서 기본키로 삼은 것
- 임의로 생성하는 값으로 사용자는 직관적으로 그 값의 의미를 알 수 없다
5) 대체키: 기본키로 선정되지 않은 후보키
- 기본키에 문제 생길것을 대비해서 대체할 키를 만들어 두는 것
6) 외래키(Foreign Key, FK): 다른 릴레이션의 기본키를 참조하는 속성
- 다른 릴레이션의 기본키를 참조해 관계 데이터모델의 특징인 릴레이션 간의 관계를 만들 때 사용된다
- 특징
① 관계 데이터 모델의 릴레이션 간의 관계를 표현하기 위해 사용
② 다른 릴레이션의 기본키 참조
③ 외래키와 기본키의 릴레이션 도메인은 서로 같아야 함
④ NULL값 허용
⑤ 중복값 허용
⑥ 기본키값이 변경되면 외래키값도 변경
- 외래키는 항상 데이터의 일관성을 유지함 (외래키 제약조건 = 참조 무결성 제약조건)
⑦ 기본키의 일부를 외래키로 사용
⑧ 자기 자신의 기본키를 참조하는 외래키도 가능
- 외래키 사용 시 참조하는 릴레이션과 참조되는 릴레이션이 꼭 다른 릴레이션일 필요는 없음
무결성 제약조건(Integrity Constraint)
● 데이터 무결성: 데이터베이스에 저장된 데이터의 일관성과 정확성 지킴
● 무결성 유지위해 튜플 삽입, 삭제, 수정 시 제약조건 준수 여부 확인해야함
① 도메인 무결성 제약조건
- 릴레이션 내의 투플은 각 속성이 지정한 도메인 값만을 가져야 함
- 데이터형식(Type), 널(Null, Not Null), 기본값(Default), 체크(Check) 등을 사용해 지정 가능
② 개체 무결성 제약조건(Entity Constraint) (=기본키 제약)
- 기본키는 NULL값 못가짐
- 릴레이션 내에 오직 하나의 값만 존재해야 함
- 기본키 값이 같으면 삽입, 수정 금지
- 특별한 확인이 필요하지 않으며 즉시 수행 가능
③ 참조 무결성 제약조건(Referential Constraint) (=외래키 제약)
- 자식 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 함
- 외래키가 부모 테이블의 기본키와 다르면 삽입 금지(NULL 예외)
- 자식 릴레이션 값이 변경될 때 부모 릴레이션의 제약 받음
- 부모 릴레이션을 참조하는 테이블이 있으면 삭제를 금지하거나 추가 작업 필요
'시큐리티 아카데미' 카테고리의 다른 글
정보보호 법/제도 1 (2) | 2024.09.11 |
---|---|
데이터베이스 관계대수 (0) | 2024.07.29 |
리눅스 8 (2) | 2024.07.22 |
악성코드분석 (11) | 2024.07.22 |
리눅스 7 (0) | 2024.07.19 |