실습

XAMPP(잼프) 프로그램은 PHP, Apache, MySQL 프로그램을 패키지 형태로 설치.

데이터

데이터 기본 용어

데이터 종류

데이터는 형태에 따라 다음과 같이 분류된다.

데이터는 특성에 따라 다음과 같이 분류된다.

데이터를 정성적 데이터(qualitative data)와 정량적 데이터(quantitative data)로 분류할 수 있다.

데이터베이스(DB)

DB 정의와 특징

DB란 다음 데이터의 집합이라 정의할 수 있다.

DB의 특징으로 4가지가 있다.

3단계 데이터베이스 구조(3-level database architecture)

스키마(schema)란 데이터 구조와 제약조건을 정의한 것이다.(e.g. name char(20) not null) 그리고 스키마에 따라 DB에 저장되는 값이 인스턴스이다. DB를 쉽게 이해할 수 있도록 미국 표준화 기관에서 3단계 데이터베이스 구조(3-level database architecture)를 제안했다. 3단계 데이터베이스 구조를 표현하자면 최상위 외부단계 안에 다수의 외부스키마들이 하위 개념단계 안에 하나의 개념스키마에 연결되어 있고, 개념스키마는 하위 내부단계 안에 내부스키마와 연결되고, 내부 스키마는 물리적인 데이터베이스에 연결되어있는 구조이다.

이 방법을 통해 논리적 구조와 물리적 구조를 분리해 데이터 독립성을 보장하여 하위 스키마의 변경에 영향을 받지 않게 한다. 스키마 간의 대응관계를 사상 또는 매핑(mapping)이라하는데 다음은 두 사상(매핑)의 특징이다.

DB에 data에 접근하기 위해선 어디에 저장되었는지 알아야한다. data about data라 하여 meta data라고 불린다. DB는 데이터사전(Data Dictionary) 또는 System Catalog라는 곳에 이 데이터를 저장한다. 데이터 사전도 DB의 일종으로 System DB라고 불리고, 일반 데이터베이스를 User DB라고 한다. 데이터 사전에는 데이터의 실제 위치 정보를 데이터 디렉토리라는 곳에 담아두는데, DBMS는 데이터 사전과 데이터 디렉토리 모두를 사용할 수 있는 반면, 일반 사용자는 데이터 사전에서 검색만 가능하다. 데이터 사전에는 3가지 스키마에 대한 정보, 사상 정보도 저장된다.

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

DBMS 등장 이전

과거에는 파일 시스템을 이용해 데이터를 관리했다. 파일 시스템은 응용 프로그램이 사용하는 데이터를 파일로 관리한다. 파일 시스템은 운영체제와 함께 설치되기 때문에 구매 비용이 들지 않는다는 장점이 있지만, 다음과 같은 단점이 있다.

  1. 같은 내용의 데이터가 여러 파일에 중복 저장된다.
  2. 응용 프로그램이 데이터 파일에 종속적이다.
  3. 데이터 파일에 대한 동시 공유, 보안, 회복 기능이 부족하다.
  4. 응용 프로그램을 개발하기 쉽지 않다.

DBMS란

데이터베이스관리시스템(DBMS)이란 사용자의 명령을 받아 DB를 조작하는 소프트웨어이다. DBMS의 주기능은 크게 세가지로 나눌 수 있는데, 정의기능(DB의 구조를 정의하거나 수정), 조작기능(데이터를 삽입,삭제,수정), 제어기능(데이터를 정확하고 안전하게 유지)이다. DBMS는 파일 시스템에 비교해 다음과 같은 장점을 가진다.

  1. 데이터 중복 통제 - 별도의 파일이 아닌 통합된 DB에 저장
  2. 데이터 독립성 확보 - DB 구조의 변경이 응용 프로그램에 영향을 끼치지 않음
  3. 데이터 동시 공유 - 여러 응용 프로그램이 동시 공유 가능
  4. 데이터 보안 향상 - 권한이 없는 사용자의 접근 차단, 허용되지 않는 데이터와 연산 차단
  5. 데이터 무결성 유지 - 데이터의 연산마다 유효성을 검사하여 데이터의 무결성(정확성) 유지
  6. 표준화 - 응용 프로그램은 표준화된 방법으로 DB 접근 가능
  7. 장애 발생 시 회복 - 장애가 발생 이전 상태로 복구 가능
  8. 적은 응용 프로그램 개발 비용 - 데이터 관리를 DBMS가 대신 관리

그러나 데이터베이스 관리 시스템은 다음과 같은 단점이 있다.

  1. DBMS을 설치하고 유지하는데 비용이 많이 든다
  2. 백업과 회복 방법이 기술적으로 복잡하다
  3. 중앙 집중 관리로 인한 취약점이 존재한다

DBMS 구성

DBMS는 크게 2가지로 나눌 수 있다.

DBMS 발전과정

데이터베이스 시스템(DBS)

DBS란

데이터베이스 시스템(DBS)이란 DBMS와 DB를 아우르는 개념으로 DB에 데이터를 저장, 관리하고 필요한 정보를 생성해주는 시스템이다. DBS의 구성요소는 DB, DBMS, DB 사용자, 데이터 언어, 컴퓨터이다. DBS를 사용하는 전체적인 과정은 DB 사용자가 DBMS에게 데이터 언어를 사용해 명령을 내리고 DBMS는 데이터 언어를 해석해 DB에서 필요한 정보를 생성하여 사용자에게 명령의 결과를 알려주는 것이다.

DB 사용자

DB를 사용하는 사람들을 다음 세가지로 분류할 수 있다.

데이터 언어(Data Lenguage)

데이터 언어는 DBMS에 DB를 조작하는 명령을 내릴 때 사용하는 언어이다.

데이터 모델링

데이터 모델링과 데이터 모델

데이터 모델 구성

데이터 모델의 종류

개체-관계 모델(E-R Diagram)

개체-관계 모델(E-R Model)이란 개체(entity)와 개체 간의 관계(relationship)를 이용한 개념적 데이터 모델이다. 그리고 개체-관계 다이어그램(E-R 다이어그램)이란 E-R model을 그림으로 표현한 것이다. 다음은 E-R 모델에서 사용되는 용어이다.

속성은 다음곽 같은 종류가 있다.

관계는 다음과 같은 종류가 있다.

관계는 다음과 같은 특성을 갖는다.

관계 데이터 모델

관계 데이터 모델의 개념

관계 데이터 모델은 개체를 릴레이션이라는 테이블로 표현하는 논리적 데이터 모델이다.

릴레이션의 4가지 특성

  1. 투플의 유일성 : 모든 투플은 다른 투플과 구별되는 유일한 특성이 있어야함
  2. 투플의 무순서 : 투플 사이의 순서는 무의미
  3. 속성의 무순서 : 속성 사이의 순서는 무의미
  4. 속성의 원자성 : 속성은 다중값을 가질 수 없다

투플을 유일하게 구분하기 위해 key를 사용한다. 키는 유일성최소성을 만족해야 한다. 키의 종류는 다음과 같다.

관계 데이터모델 제약조건

관계 데이터 모델의 기본 제약 사항은 키와 관련한 무결성 제약조건이다. 무결성은 데이터에 결함이 없는 상태이다.

관계 데이터 연산(중간고사 범위)

관계 데이터 연산이란 데이터 모델의 구성요소 중 연산에 대해 관계 데이터 모델의 연산을 관계 데이터 연산이라한다.

7.데이터베이스 언어 SQL

데이터 언어는 DB를 조작하는 명령을 내릴 때 사용하는 언어이다. SQL은 관계 DB를 위한 표준 질의어로 사용되는 데이터 언어이다. SQL은 비절차wjr 언어이며, 대화식이나 삽입 방식으로 사용할 수 있다. SQL 명령어의 종류는 다음과 같다.

데이터 타입 의미
INT 또는 INTEGER 정수
SMALLINT INT보다 작은 정수
CHAR(n) 또는 CHARACTER(n) 길이가 n인 고정길이의 문자열
VARCHAR(n) 또는 CHARACTER VARYING(n) 길이가 최대 n인 가변길이의 문자열
NUMERIC(p,s) 또는 DECIMAL(p,s) 숫자의 전체 길이가 p, 소수부분이 s인 고정 소수점 실수
FLOAT(n) 길이가 n인 부동 소수점 실수
REAL 부동 소수점 실수
DATE 연,월,일로 표현되는 날짜
TIME 시,분,초로 표현되는 시간
DATETIME 날짜와 시간

create table

다음은 테이블을 생성하고 데이터를 조작하는 SQL언어이다. SQL언어는 대소문자를 구분하지 않는다.

--테이블 생성
create table member ( 
    num int not null auto_increment, --자동 증가
    id char(20) not null, 
    name char(20) not null, 
    gender char(1), 
    post_num char(8), 
    address char(80), 
    tel char(20), 
    age int, 
    primary key(num) --기본키
);
--테이블에 데이터 삽입(num은 자동증가하는 primary key이므로 삽입안해도됨)
insert into member (id, name, gender, post_num, address, tel, age) values ('yjhwang', '황영주', 'M', '100-011', '서울시 중구 충무로1가', '234-8879', 35); 
--테이블에 저장된 데이터 검색
select * from member;
select name,tel from member;
--해당 조건의 데이터 검색
select id, name, address, gender from member where gender='W';
select name, tel, gender, age from member where age>=50 and gender='M';
select name, tel, age, gender from member where ( (age>=30 and age<=39) or (age>=50 and age<=59) ) and gender='M';
--성이 황씨인 사람 검색 / 주소에 서울시가 들어가는 사람 검색
select * from member where name like '황%';
select * from member where address like '%서울시%';
--나이로 오름차순/내림차순 정렬
select * from member where address like '서울%' order by age;
select * from member where address like '서울%' order by age desc;
--테이블 데이터 수정
update member set tel='123-4567' where name='고재진'; 
--테이블에 데이터 삭제
delete from member where name='김수련'; 
--테이블 삭제(delete from table;)과는 다르게 구조까지 완전삭제 한다는것
drop table member;

8.데이터베이스 설계

9.정규화

정규화 - 이상현상이 발생하지 함수적 종속성을 이용해 릴레이션을 연관성 있는 속성들로만 구성되도록 분해

이상현상

함수 종속

기본 정규형, 고급정규형

10.회복과 병행 제어

11.보안과 권한 관리

12.데이터베이스 응용 기술

13.데이터 과학과 빅데이터

14.데이터베이스 활용