본문 바로가기

Develop/Database & SQL

Database 정리

제목 : Database 정리


▶ 데이터베이스(DataBase) 정의

데이터베이스(DataBase)는 데이터(data)의 모임이다. 동시에 복수의 적용 업무를 지원할 수 있도록 복수 이용자의 요구에 호응해서 데이터를 받아들이고 저장, 공급하기 위하여 일정한 구조에 따라서 편성된 데이터의 집합이다.

▶ 데이터베이스(DataBase) 목적
? 가장 정확한 데이터를 가장 효율적으로 응용할 수 있게 관리
? 데이터의 관리 단위는 ‘테이블(table)’
? 서로 다른 언어로 이루어진 S/W라 할지라도 표준 명령어(SQL)를 만들어서 필요한
DATA가 필요하면, SQL을 DBMS에 넘겨주어 원하는 DATA를 얻을 수 있다.

▶ 데이터베이스(DataBase) 특성

① 실시간 접근성 : 수시적이고 비정형적인 질의(query)에 대하여 실시간에 처리 응답할
수 있어야 함, 온라인 시스템이라고도 하며 사용자가 요구하는 상태에 대해서 일정
한 입력 조건을 주었을 때 즉시 그 결과를 받을 수 있는 시스템이어야 한다.
② 변화(Continuous Evolution) : 데이터는 고정적으로 있는 것이 아니라 사용자에
의해 데이터를 삽입 삭제, 변경이 항상 발생하고 그 속에서도 항상 정확한 데이터를
유지해야한다.
③ 공유(Concurrent Sharing) : 한 개인이나 한 조직에서만 사용하는 것이 아니라 동시
에 여러 사용자가 접근할 수 있어야 하고, 자신이 필요한 데이터에 동시에 접근할 수
있어야 한다.
④ 내용에 의한 참조(Content Reference) : DB내의 데이터 레코드들은 주소나 위치에
의해 참조되는 것이 아니고 데이터의 내용 ,즉 데이터가 가지고 있는 값에 의해 참조
됨. 사용자로 하여금 저장 형태, 방식 등을 알지 못해도 사용자가 찾고자 하는 데이
터의 일부 내용으로 전체 내용을 찾을 수 있는 방법을 제시해야 한다.
예) 기말 성적이 90점 이상인 학생을 검색하라

▶ 데이터베이스(DataBase) 시스템의 장단점

① 장점
- 데이터의 중복성을 최소화한다.
- 데이터의 일관성을 유지할 수 있다
- 데이터의 무결성을 유지할 수 있다
- 데이터의 독립성 제공
- 데이터의 보안성이 보장 된다
- 데이터의 표준화가 가능하다.

② 단점
- 운영비의 Overhead가 발생한다.
- 자료처리 방법의 복잡해 질 수 있다.
- Backup과 Recovery 기법이 더 어려워진다.
- 시스템 자원(Resource)의 과대 사용 및 처리 속도 저하시킬 수 있다.
- 시스템의 취약성이 존재한다.

▶ 데이터베이스(DataBase)에서 DATA의 의미

? DATA는 이름, 값(Value)으로 구성
* DB가 싫어하는 형태 - ①NULL(이름O,값X) ②중복

? 특정한 이름에 대한 값(Value) 정의 - 미리 지정해주면, 연산 과정 줄일 수 있다


?? Value Type

문자 - 고정문자[char] 가변문자[varchar] 매우긴문자[text]
숫자 - 일반숫자[decimal] 날짜[datetime]

?? Value Size

char(1) ~ char(8000)
varchar(1) ~ varchar(8000)
text - 2GB 이상일 때
decimal -99.00 ~ 99.99

▶ 데이터의 관리 단위 테이블 (Table)

? 관련성 있는 data를 모아서 table에서 관리
? 하나의 table단위로 관리함
* table = column + row
* data = 이름 + 값(value)


▶ DATA의 제약조건 * Data Integrity - 자료 무결성

① Primary Key (P.K)
= Unique (U) + Not Null (N.N)

② Unique (U)
값(Value)이 일해야 하고, 중복되면 안됨

③ Not Null (N.N)
값이 반드시 있어야 함

④ Check (C)
사용자 정의 조건

⑤ Foreign Key (F.K)
Table이 2개 이상일 때 사용

-------------------------------------------------------

▶ 데이터베이스 모델

(1) 데이터 모델의 개념
- 데이터 모델은 데이터 그 자체와, 데이터간의 관계, 데이터의 의미(semantics), 데이터 값들이 지켜야 할 제약 조건들을 기술하기 위한 개념적 도구(conceptual tool)의 집합체라고 볼 수 있다.
- 엔티티(entity) : 추상적 개념은 현실세계의 객체(object)들을 추상화해서 얻음.
몇 개의 속성들로 표현.
- 엔티티 세트(entity set) : 속성을 갖는 엔티티의 집합.
- 속성(attribute) : 현실세계의 객체들이 가질 수 있는 특성.

(2) 관계
: 현실세계를 개념 세계로 표현하는 데 있어서 가장 중요한 것.
-> 단순한 데이터 값의 집합, 그 자체로는 별 중요한 의미를 주지 못하고, 이 집합들 간의 관계에 따라 어떤 의미를 얻을 수 있고, 정보로서 가치를 인정하게 된다.

(3) ER(Entity-Relationship)다이어 그램
: 현실세계에 있는 객체(object)들과 그들 간의 관계(relationship)들을 물리적 데이터베이스로 구현하기 위해서 개념적으로 표현할 필요가 있는데, 이 개념적 표현에서의 관심대상이 되는 객체, 그 객체들의 성질, 그들 간의 관계 등 현실세계가 내포하고 있는 의미를 표현하는 방법.
--> 사각형(엔티티 세트), 다이아몬드(관계), 원(내트리 뷰트)으로 구성

* 데이터 모델
- 관계 데이터 모델(Relational data model)
- 계층 데이터 모델(Network data model)

* 데이터 모델링
: 개념세계는 다시 컴퓨터가 이해하고 처리할 수 있는 물리적 저장장치에 데이터를 수록 저장할 수 있도록 변환되어야 하고, 그러기 위해서는 DBMS가 지원하는 어떤 데이터 모델로 변환해야 하는데, 이 과정을 데이터 모델링이라 한다.

(4) 관계 데이터 모델
- 사용자에게 데이터베이스 구조를 테이블(table)형태로 보여준다.
- 모든 엔티티 세트(entity set)들은 물론 관계(relationship)들도 모두 똑같이 테이블 형태
로 표현한다.
- 열(column) : 엔티티의 특성을 나타내는 속성을 나타냄.
- 행(row) : 엔티티 세트를 구성하고 있는 엔티티를 나타냄.
관계데이터 모델에서는 특별히 튜플(tuple)이라 하는데,
일반적으로 레코드에 해당됨.


▶ 데이터 독립성(data independence)

데이터베이스의 변동이 요구될 때, 변동업무가 아무리 사소한 것일 지라도, 그것에 대응되어 수정되는 시스템 측면에서는 매우 큰 부담을 가지게 된다. 이러한 문제에 대한 해결책이 데이터 독립성이다.

(1) 물리적 데이터 독립
: 물리적 구조의 변경이 논리적 구조와 사용자의 여러 응용 프로그램에 전혀 영향을 끼
치지 않게 하는 것을 말한다. 이런 기능은 데이터 관리 소프트웨어가 제공한다.
(2) 논리적 데이터독립
: 논리적 구조의 변경이 사용자가 프로그래밍 시 보는 파일 구조(뷰:view)에 전혀 영향을 끼치지 않게 하는 것을 말한다. 이런 독립성을 보장하는 것은 데이터 관리 소프트웨어의 책임이다.


▶ 데이터베이스 관리 시스템(DBMS)

(1) DBMS의 정의
- 파일시스템에서 야기되는 데이터의 종속성과 중복성의 문제점을 해결하기 위한 방
법으로 제안된 소프트웨어 시스템.
- 응용프로그램과 데이터의 중재자 역할.
- 데이터베이스의 구성, 접근 방법, 관리유지에 대한 모든 책임을 지고 있다는 것을
의미.
- DBMS을 이용하는 응용프로그램은 데이터베이스 전체의 생성, 접근방법, 조작절차,
보안, 물리적구조 등에 대해서 자세히 관련할 필요 없이 원하는 데이터와 처리작업을
DBMS에 요구하면 된다.

(2) DBMS의 필수기능
- 정의기능
: 응용프로그램과 데이터베이스 간의 상호작용수단을 제공.
- 조작기능
: 사용자와 데이터베이스 간의 상호작용의 수단을 제공.
- 제어기능
: DBMS는 공용목적으로 관리되는 데이터베이스의 내용을 항상 정확하게 유지할 수
있어야 한다.

(3) DBMS의 주요목적
사용자에게 데이터에 대한 추상화 뷰(abstract view)를 제공하는 것, 데이터가 어떻게 구상되는지, 어떻게 유지, 관리되는지에 대한 자세한 것을 몰라도 사용자가 데이터베이스 시스템을 쉽게 사용할 수 있도록 시스템 자체가 내부의 자세한 사항을 사용자에게 숨기는 역할 (data hiding)을 한다.


▶ 3층 스키마

- 데이터를 일정한 규칙에 의하여 구성하는 것을 파일 시스템은 물론이고, 데이터베이스
시스템에서도 필요하다.
- 전반적인 데이터베이스 기술(description)을 스키마(schema)라고 한다.
- 논리적인 데이터베이스의 기술부터 물리적인 데이터베이스 기술까지 3층으로 구분하여
3층 스키마라고 한다.

(1) 외부 스키마
- 사용자가 직접 인터페이스 할 수 있는 바깥쪽의 스키마로서, 일반적으로 서브스키마
라 한다.
- 응용 프로그래머가 데이터베이스를 바라보는 관점을 나타낸 것으로, 하나의 스키마
는 여러 개의 서브스키마로 나누어 질 수 있다.
- 응용프로그래머와 단일사용자들이 접근할 수 있는 데이터베이스.
(2) 개념 스키마
- 서브스키마와 대조적인 개념스키마는 일반적으로 스키마라고 부른다.
- 논리적인 전체구조를 의미한다.
- 데이터베이스 파일에 저장되어 있는 데이터의 형태를 나타내는 도표이다.
(3) 내부 스키마
- 물리적인 전체구조를 의미한다.
- 기억장치 내에 데이터가 저장되어 있는, 데이터의 물리적인 설계도를 말한다.
- 시스템 프로그래머나 시스템 설계자가 바라보는 데이터베이스의 관점이다.
- 시스템의 효율을 계산하면서 데이터의 저장원칙, 데이터의 구조, 파일 구성 및
보완대책 등을 결정한다.


▶ 데이터베이스 언어

(1) 데이터 정의어 (DDL: Data Description Language)
(데이터베이스 관리자와 시스템 프로그래머가) 데이터베이스를 정확히 기술하고, 가장 효율적인 데이터구조를 이용하기 위해서는 데이터 정의어를 통해서만이 가능하다.

* 논리적인 데이터의 정의 또는 기술을 위하여 사용되는 데이터 정의어의 기능
- 데이터 항목, 레코드, 세그먼트, 그리고 데이터베이스 파일의 형식을 규정한다.

즉, 논리적인 데이터베이스 구조를 규정한다.
- 데이터 항목, 레코드, 세그먼트, 그리고 데이터베이스 파일의 이름을 규정한다.
- 키(key)가 되는 데이터항목을 규정하며, 그 키가 유일한 것인지 중복된 것인지를
명시한다.
- 데이터 항목의 형(type)과 값의 범위를 규정하며, 형이라 함은 정수형, 실수형, 문자형을 의미한다.
- 데이터베이스 파일에 저장할 수 있는 최대의 레코드 수를 규정한다.
- 접근권한이 없는 사람의 데이터 접근을 방지하기 위한 보안장치를 규정한다.
- 파일 구성 중에서 접근 방법(access method)을 규정한다.
CREATE: 데이터베이스 객체를 생성
DROP: 데이터베이스 객체를 삭제
ALTER: 기존에 존재하는 데이터베이스 객체를 다시 정의하는 역할

(2)기본 데이터 질의어 (Data Query Language)
SELECT: 원하는 내용을 질의를 통해 출력

(3) 데이터 조작어 (DML : Data Manipulation Language)
- 응용 프로그램 언어의 확장언어
- 범용언어와 데이터 조작어가 혼합되어 하나의 프로그램을 구성하였을 때, 두 부분이
수행하는 기능은 서로 다르다.
INSERT: 데이터베이스 객체에 데이터를 입력
DELETE: 데이터베이스 객체에 데이터를 삭제
UPDATE: 기존에 존재하는 데이터베이스 객체안의 데이터 수정

(4) 트랜젝션 제어어( TCL : Transaction Control Language )
데이터베이스에서 트랜잭션(Transaction)이란 논리적인 일의 단위를 말한다.

사용자가 INSERT 문을 사용해 데이터를 삽입하고, UPDATE 문으로 데이터를 갱신하고, DELETE 문으로 데이터를 삭제하였다고 예를 들어보자. 만약 이 모든 과정이 오류 없이 수행되었다면 지금까지 실행한 모든 작업을 '실제로' 수행하라는 명령을 내릴 수 있는데 이 때의 명령이 바로 'COMMIT' 명령이라고 한다. 'COMMIT' 명령을 주기 전까지의 모든 작업은 'ROLLBACK' 명령으로 원상태로 되돌릴 수 있습니다.
이와 같이 COMMIT 명령으로 하나의 작업이 성공적으로 끝났을 때 우리는 트랜잭션이 성공적으로 수행되었다고 말합니다.

트랜잭션 제어를 위한 명령어(Transaction Coltrol Language)에는 다음과 같은 것들이 있습니다.
COMMIT: 저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재의 트랜잭션을 종료하라는 명령
ROLLBACK: 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 끝내라는 명령

(5) 데이터 제어어 (DCL : Data Control Language)
- 데이터베이스 사용자의 권한을 제어 데이터 제어어(관리어)
GRANT: 데이터베이스 객체에 권한을 부여
REVOKE: 이미 부여된 데이터베이스객체의 권한을 취소
LOCK: 작업시 잠금

'Develop > Database & SQL' 카테고리의 다른 글

[MySQL] 데이터베이스 명명 규칙  (0) 2018.10.30
오라클 쿼리 테스트  (0) 2017.04.26
SQL서버 응응프로그램의 속도향상  (0) 2005.02.27
Mysql 유저등록 SQL문  (0) 2005.02.17
MySQL - 메모장  (0) 2005.01.07