컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net
Chapter 06. 데이터베이스
데이터베이스 관리 시스템(DBMS)의 장단점을 살펴본다 학습목표 데이터베이스 개념과 구성을 이해한다 데이터베이스 관리 시스템(DBMS)의 장단점을 살펴본다 데이터베이스 관련 용어의 의미를 파악한다 데이터베이스 설계와 변경 방법을 살펴본다 데이터베이스 언어인 SQL을 이해한다
Section 1. 데이터베이스 개념 – 정보 처리 시스템 데이터(data) 관찰이나 측정을 통해 현실 세계에서 수집한 사실(facts)이나 값(value) 정보(information) 어떤 상황에서 의사 결정을 돕는 데이터의 유효한 해석이나 상호 관계 데이터를 처리(data processing)해서 얻을 수 있는 경과
정보 시스템(information system) 정보 처리 시스템(계속) 정보 시스템(information system) 하나의 기관을 위해 데이터를 수집, 조직, 저장하고 정보를 생성, 분배하는 수단 경영 정보 시스템, 군사 정보 시스템 등
파일 처리 시스템의 문제점 데이터 종속성(data dependency) 데이터 중복성(data redundancy) 기존 파일 처리 시스템 파일 처리 시스템의 문제점 데이터 종속성(data dependency) 응용 프로그램과 데이터 사이의 상호 의존적인 경우 데이터 중복성(data redundancy) 파일 시스템에서 동일한 데이터를 필요로 하는 경우 일부분만 같은 데이터를 요구하는 경우 그 밖의 문제점 데이터를 동시에 공용할 수 없다 이러한 문제들을 해결하기 위해 발전한 것이 바로 데이터베이스 기술이다
데이터베이스(DB, DataBase) 데이터베이스의 성질 데이터베이스 정의와 특성 데이터베이스(DB, DataBase) 어느 한 조직의 여러 응용 시스템을 공유할 수 있도록 통합, 저장, 운영되는 데이터 집합 데이터베이스의 성질 통합된 데이터(integrated data) 저장된 데이터(stored data) 운영 데이터(operational data) 공용 데이터(shared data)
데이터베이스의 특성 실시간 접근성(real-time accessbility) 데이터베이스 정의와 특성(계속) 데이터베이스의 특성 실시간 접근성(real-time accessbility) 사용자의 요구 즉시 처리 계속적인 변화(continuous evolution) 새로운 것을 계속 갱신 동시 공유(concurrent sharing) 여러 사람이 서로 다른 목적으로 동시에 접근 내용에 의한 참조(content reference) 위치나 주소가 아닌 데이터 내용에 따라 참조
DBMS(DataBase Management System) 데이터와 응용 프로그램 사이에 존재하여 서로를 중재하는 역할을 하는 것 응용 프로그램들이 데이터베이스를 공용할 수 있도록 관리해주는 소프트웨어 시스템 데이터베이스 구성, 접근 방법, 관리, 유지에 관한 모든 기능을 통합적으로 수행할 수 있도록 작성된 소프트웨어
데이터베이스 관리 시스템(DBMS)(계속) 데이터를 정의, 조작, 제어
데이터베이스 관리 시스템(DBMS)(계속) 데이터의 중복을 최소화 데이터를 공용 데이터의 일관성을 유지 데이터의 보안을 보장 전체 데이터의 요구사항을 파악하여 조정 DBMS 단점 많은 운영비 소모 고도의 기술 요구 처리 절차에 변화 시스템의 고장에 대한 예비조치와 회복 기법이 어렵다
데이터베이스 관리 시스템(DBMS)(계속) 데이터 독립성 데이터 베이스의 수정이 요구되는 경우 데이터 독립성 필요 최소 중복 중복을 최소화하는 것이 데이터베이스의 목적 데이터 공유 서로 다른 사용자에 의하여 다른 목적에 사용 데이터 보안 데이터를 안전하게 비밀을 유지
데이터베이스 관리 시스템(DBMS)(계속) 질의어 처리기(query processor) 파일 관리자(file manager) 데이터 관리자(data manager) 예비 컴파일러(precompiler) 데이터 조작어 컴파일러(DML compiler) 데이터 정의어 컴파일러(DDL compiler) 데이터베이스(database) 데이터 사전(data dictionary)
데이터베이스 관리 시스템(DBMS) - DBMS 구성요소(계속)
개체(entity) 관계(relationship) 데이터베이스에 데이터로 표현하려고 하는 실세계의 대상체 데이터베이스 구성 요소 개체(entity) 데이터베이스에 데이터로 표현하려고 하는 실세계의 대상체 유형 또는 무형의 객체(object)로서 서로 구별되는 것 관계(relationship) 데이터베이스 시스템에는 개체에 관한 정보 뿐만 아니라 이러한 관계에 대한 정보를 표현할 수 있는 수단을 지원 개체 관계와 속성 관계
스키마(schema) 데이터베이스의 논리적 정의인 데이터 구조와 제약 조건에 대한 명세(specification)를 기술한 것 데이터베이스 구성 요소(계속) 스키마(schema) 데이터베이스의 논리적 정의인 데이터 구조와 제약 조건에 대한 명세(specification)를 기술한 것 외부 스키마(external schema) 데이터베이스의 개별 사용자나 응용 프로그래머가 접근하는 데이터베이스를 정의한 것 서브 스키마(subschema) 개념 스키마(conceptual schema) 기관이 필요로 하는 정보를 생성하기 위한 모든 데이터 개체들에 대한 정의뿐만 아니라 데이터베이스 접근 권한, 보안 정책, 무결성 규칙에 대한 명세를 기술한 스키마 내부스키마(internal schema) 물리적인 데이터 구조 저장 스키마(stored schema)
데이터베이스 구성 요소 - 스키마(계속) 3단계 데이터베이스
데이터베이스 언어 데이터 정의어(DDL, Data Definition Language) 데이터베이스 구성 요소(계속) 데이터베이스 언어 데이터 정의어(DDL, Data Definition Language) 데이터베이스의 구조나 데이터 형식, 처리 방식 등을 정의한 언어 데이터 조작어(DML, Data Manipulation Language) 데이터베이스에 대한 검색, 삽입, 삭제, 변경 연산 등을 하는 언어 데이터 제어어(DCL, Data Control Language) 데이터베이스를 공유하기 위해 파일의 데이터 구조를 서술하는 데 사용되는 언어
데이터베이스 사용자 일반 사용자 응용 프로그래머 데이터베이스 관리자(DBA, DataBase Administrator) 데이터베이스 구성 요소(계속) 데이터베이스 사용자 일반 사용자 비절차적 데이터베이스 조작어(DML)를 통해 데이터베이스를 사용하는 사용자 응용 프로그래머 호스트 프로그래밍 언어(코볼, C 등)에 데이터 조작어를 삽입시켜 데이터베이스에 접근 데이터베이스 관리자(DBA, DataBase Administrator) 데이터 정의어(DDL)와 데이터 제어어(DCL)를 통해 데이터베이스를 정의, 제어, 관리하는 관리자 데이터베이스 설계와 운영 행정 및 불평 해결 시스템 감시 및 성능 분석
데이터베이스 구성요소 – 데이터베이스 사용자(계속) 데이터베이스 시스템 구성도
Section 2. 데이터베이스 모델 및 용어 – 데이터베이스 모델 데이터베이스 구조를 묘사하는 개념 도구들을 모아놓은 것 계층적 데이터베이스(hierarchical database) 모델 지원하는 스키마의 논리적 구조는 트리 형태의 자료구조 순서화된 트리 집합 이해하기 쉽고, 데이터 검색 빠름 유연성 떨어짐
네트워크형 데이터베이스(network database) 모델 데이터베이스 모델(계속) 네트워크형 데이터베이스(network database) 모델 그래프 구조를 기반으로 구성 자식 레코드는 여러 개의 부모 레코드를 지칭할 수 있어 유연하나, 데이터 변경 어려워 확장성 떨어짐
관계형 데이터베이스(relational database) 모델 데이터베이스 모델(계속) 관계형 데이터베이스(relational database) 모델 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)로 사용하고 개체 집합들 사이의 관계를 공통 속성으로 연결하는 독립된 형태의 데이터 모델 현재 가장 많이 사용하는 모델
객체지향형 데이터베이스(object oriented database) 모델 데이터베이스 모델(계속) 객체지향형 데이터베이스(object oriented database) 모델 객체 지향의 사고 방식을 이용한 데이터 모형 여러 개의 객체가 서로 메시지를 교환하는 형태로 네트워크 운영됨
관련 용어 속성(attribute) 도메인(domain) 차수(degree) 튜플(tuple) 릴레이션(relation) 관계형 데이터베이스 관련 용어 속성(attribute) 테이블의 열을 구성하는 필드 도메인(domain) 속성에서 나타낼 수 있는 값의 집합 차수(degree) 테이블에서 속성/필드 수 튜플(tuple) 테이블의 행 릴레이션(relation)
관계형 데이터베이스(계속) 릴레이션(R)의 개념적 정의 릴레이션 스키마(relation schema)와 릴레이션 인스턴스(relation instance)로 정의 릴레이션 스키마 릴레이션 내포(intension) 릴레이션 이름과 속성 이름 포함 릴레이션 인스턴스 릴레이션 외포(extension) 어느 한 시점의 릴레이션이 포함하고 있는 튜플들의 집합
관계형 데이터베이스 – 릴레이션(R)의 개념적 정의(계속) 사원 인적사항 릴레이션의 예
관계형 데이터베이스(계속) 릴레이션의 특징 튜플의 유일성 튜플의 무순서성 속성의 무순서성 속성의 원자성
키(key) 키(key)의 종류 각 튜플들을 검색하거나 정렬할 때 기준이 되는 유일하게 구분되는 속성 집합 키본 키(primary key) 후보 키(candidate key) 대체 키(alternate key) 외래 키(foreign key)
Section 3. 데이터베이스 설계 - 관계도(ERD)의 이해와 작성 개체와 관계성을 도형으로 표시하는 모델 현실 세계를 개체 집합과 관계 집합으로 나누어서 개념적으로 표현하는 방식 데이터를 개체(entity), 관계(relationship), 속성(attribute)으로 묘사 개체-관계 다이어그램과 논리적 데이터 모델
개체-관계 다이어그램 표기법 개체-관계 다이어그램(E-R diagram) 개체-관계 다이어그램 기호 관계도의 이해와 작성(계속) 개체-관계 다이어그램 표기법 개체-관계 다이어그램(E-R diagram) 중요한 레코드 타입, 속성, 관계 등을 그림 형태로 기록한 것 개체-관계 다이어그램 기호 기호 의미 개체 타입 의존 개체 타입 관계 타입 관계 타입 식별 속성 타입 키 속성 연결자 유도된 속성
관계도의 이해와 작성 - 개체-관계 다이어그램 표기법(계속) 교수/학생/과목 관계를 표현한 개체-관계 다이어그램
데이터 모델 관계 관계 관계의 종류 관계 타입의 유형 그림 관계도의 이해와 작성(계속) 개체 타입의 모든 인스턴스들 간의 대응이나 사상을 의미 관계의 종류 개체 집합간의 관계 개체-속성 관계 속성 관계 관계 타입의 유형 그림
관계형 모델(relational model) 데이터베이스를 구성하는 개체와 관계 모두 2차원 테이블로 표현 구조가 단순해서 설계, 관리, 사용이 편리 DBMS의 성능이 다소 떨어짐 장애 발생하면 회복이 어려움
관계형 모델(relational model)(계속) 무결성 제약 조건(integrity constraint) 개체 무결성 제약 조건(entity integrity constraint) 기본 키로 지정된 속성들은 모든 튜플에 대해 널(NULL)이 될 수 없다는 제약 조건 참조 무결성 제약 조건(referential integrity constraint) 외래 키에 대한 제약 조건 릴레이션 R1이 릴레이션 R2를 참조할 경우 릴레이션 R1의 널(NULL)이 아닌 외래 키 값은 반드시 릴레이션 R2의 기본 키 값에 나타나야 한다는 것
논리적 구조와 물리적 구조 데이터베이스 설계의 기본 논리적 구조 물리적 구조 저장장치 위에 물리적으로 저장되어 있는 데이터의 실제 구조 사용자에게 중요한 측면에서 본 데이터베이스의 구조 물리적 구조 데이터를 응용하는 응용 프로그래머나 사용자의 관점에서 본 데이터 구조
데이터 종속성과 독립성 데이터 종속성 데이터 독립성 데이터베이스 설계의 기본(계속) 응용 프로그램과 데이터 간의 상호 의존 관계를 나타냄 데이터 구성 방법이나 구성 형식, 접근 방법이 변경되면 이와 관련된 응용 프로그램도 같이 변경되어야 함 데이터 독립성 데이터베이스에서 데이터와 데이터가 사용하는 응용 프로그램이 서로 영향을 받지 않는 경우 데이터가 논리적이거나 물리적으로 독립적인 상태에 있는 것
데이터베이스 설계의 기본 – 데이터 종속성과 독립성(계속) 데이터 구조간의 사상과 데이터 독립성
데이터베이스 설계의 기본(계속) 데이터베이스 분석과 설계 단계 데이터베이스 설계 단계의 생명 주기(life cycle)
데이터베이스 설계의 기본 - 데이터베이스 분석과 설계 단계(계속) 데이터베이스 설계 단계
데이터베이스 설계의 기본 - 데이터베이스 분석과 설계 단계(계속) 데이터베이스 설계 시 고려 사항 무결성 일관성 회복 보안 효율성 데이터베이스 확장
정규화 개념 정규화(normalization) 함수적 종속성 등의 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정 (ex)
제1정규형(1NF) 하나의 제한 조건을 둔 것으로 주어진 릴레이션내에 존재하는 도메인값들이 원자값만을 포함하는 경우 정규화 개념(계속) 제1정규형(1NF) 하나의 제한 조건을 둔 것으로 주어진 릴레이션내에 존재하는 도메인값들이 원자값만을 포함하는 경우 불필요한 데이터의 중복이 발생 삽입, 삭제, 갱신 등의 이상현상 발생
제2정규형(2NF) 키가 아닌 모든 속성이 기본 키에 충분한 함수적 종속을 만족하는 정규형 정규화 개념(계속) 제2정규형(2NF) 키가 아닌 모든 속성이 기본 키에 충분한 함수적 종속을 만족하는 정규형 기본 키에 이행적 함수 종속으로 인한 이상현상 발생 이행적 함수 종속 : A →B 와 B →C 가 성립하면 A →C도 성립 (ex)
제3정규형(3NF) 제2정규형을 만족하고 모든 키가 아닌 속성이 기본 키에 대해 이행적 함수 종속이 아닌 경우 정규화 개념(계속) 제3정규형(3NF) 제2정규형을 만족하고 모든 키가 아닌 속성이 기본 키에 대해 이행적 함수 종속이 아닌 경우 후보 키가 서로 중첩되는 경우 적용 불가능 (ex)
보이스 코드 정규형(BCNF) 제3정규형의 특수한 경우로 강한 제3정규형이라고도 함 모든 결정자가 후보 키를 갖는 릴레이션 정규화 개념(계속) 보이스 코드 정규형(BCNF) 제3정규형의 특수한 경우로 강한 제3정규형이라고도 함 모든 결정자가 후보 키를 갖는 릴레이션 (ex)
제4정규형(4NF) BCNF에 속하고 모든 다치 종속(MVD, MultiValued Dependency)이 함수 종속일 경우 정규화 개념(계속) 제4정규형(4NF) BCNF에 속하고 모든 다치 종속(MVD, MultiValued Dependency)이 함수 종속일 경우 다치종속(MVD) 릴레이션 R의 애트리뷰트 A,B,C에서 (A, C) 값에 대응되는 B의 값이 A에만 종속되고 C값에는 독립적이면 B는 A에 다치종속임 (A ->> B로 표기) Fagin의 정리 R(A,B,C)에서 A ->> B|C가 존재하면 R(A, B)와 R(A, C)로 분해가능
정규화 개념 – 제4정규형(4NF)(계속) (ex)
정규형 간의 관계 제5정규형(5NF) 릴레이션에 존재하는 모든 종속이 릴레이션의 후보 키를 통해서 성립할 경우 정규화 개념(계속) 제5정규형(5NF) 릴레이션에 존재하는 모든 종속이 릴레이션의 후보 키를 통해서 성립할 경우 Projection Join Normal Form(PJ/NF) 정규형 간의 관계
SQL(Structured Query Language)개요 Section 4. SQL SQL(Structured Query Language)개요 구조화 질의어 데이터베이스용 질의 언어(query language)의 일종 관계 사상(relational mapping)을 기초로 한 언어 질의 기능, 데이터 정의 기능, 조작 기능 갖춤 호스트 언어로 된 프로그램에 삽입되어서 사용 초보자들도 비교적 쉽게 사용 가능
테이블 생성문: CREATE문 스키마 정의 도메인 정의 SQL 정의어 CREATE SCHEMA 스키마_이름 AUTHORIZATION 사용자_id; (ex) CREATE SCHEMA COMPANY AUTHORIZATION KIM; 도메인 정의 CREATE DOMAIN 도메인_이름 데이터_타입[묵시값_정의] [도메인 제약 조건_정의 리스트]; (ex) CREATE DOMAIN GENDER CHAR(1) DEFAULT ‘?’ CONSTRAINT VALID-GENDER CHECK(VALUE IN('M', 'F', '?'));
SQL 정의어 – 테이블 생성문:CREATE문(게속) 테이블 정의 CREATE TABLE 기본 테이블 ({열이름 데이터_타입[NOT NULL][DEFAULT 묵시값],}+ [PRIMARY KEY(열이름_리스트),] {{UNIQUE(열이름_리스트),]}* {{FOREIGN KEY(열이름_리스트) REFERENCES 기본 테이블[(기본키_열이름)] [ON DELETE 옵션] [ON UPDATE 옵션]]};*, [CHECK(조건식)]); 인덱스 정의 CREATE [UNIQUE] INDEX 인덱스_이름 ON 테이블_이름(열_이름 [ASCIDESC]{, 열_이름 [ASCIDESC]}*) [CLUSTER]; (ex) CREATE UNIQUE INDEX IDX ON 직원(번호);
테이블 구조 변경문: ALTER문 ALTER TABLE 테이블_이름 DROP 열_이름 CASCADE; SQL 정의어(게속) 테이블 구조 변경문: ALTER문 ALTER TABLE 테이블_이름 ADD 열_이름 자료_형 DEFAULT 묵시값; ALTER TABLE 테이블_이름 ALTER 열_이름 SET DEFAULT 묵시값; ALTER TABLE 테이블_이름 DROP 열_이름 CASCADE; (ex) ALTER TABLE 직원 ADD 주소 VARCHAR(50);
테이블 삭제문: DROP문 DROP SCHEMA 스키마_이름[CASCADEIRESTRICTED]; SQL 정의어(게속) 테이블 삭제문: DROP문 DROP SCHEMA 스키마_이름[CASCADEIRESTRICTED]; DROP DOMAIN 도메인_이름[CASCADEIRESTRICTED]; DROP TABLE 테이블_이름[CASCADEIRESTRICT]; DROP INDEX 인덱스_이름; (ex) DROP SCHEMA COMPANY; DROP DOMAIN GENDER; DROP TABLE EMPLOYEE; DROP INDEX IDX;
검색문: SELECT문 SELECT [ALLIDISTINCT] 열_리스트 FROM 테이블_리스트 [WHERE 조건] SQL 조작어 검색문: SELECT문 SELECT [ALLIDISTINCT] 열_리스트 FROM 테이블_리스트 [WHERE 조건] [GROUP BY 열_리스트 [HAVING 조건]] [ORDER BY 열_리스트 [ASCIDESC]];
SQL 조작어 – 검색문:SELECT문(계속) FROM절에는 대상 테이블 WHERE절에는 관계 대수의 조인과 셀렉션 조건 GROUP BY절은 대상 테이블을 지정된 열_리스트값에 따라 그룹으로 나누어줌 HAVING은 각 그룹에 대한 조건 명세 HAVING절 사용시 GROUP BY절도 반드시 존재 ORDER BY절은 최종 검색 결과의 정렬을 수행
삽입문: INSERT문 INSERT INTO 테이블[(열_이름{,열_이름}*] VALUES(열값_리스트); (ex) SQL 조작어(계속) 삽입문: INSERT문 INSERT INTO 테이블[(열_이름{,열_이름}*] VALUES(열값_리스트); (ex) INSERT INTO 직원(번호, 이름, 나이, 봉급, 부서번호) VALUES(600, ‘가나다’, 25, 100, ‘D2’);
SQL 조작어 – 삽입문:INSERT문(계속) SELECT문을 실행하여 그 결과를 지정된 테이블에 삽입하는 경우 INSERT INTO 테이블[(열_이름{,열_이름}*] SELECTANS; (ex) INSERT INTO 인사과 직원(번호, 이름, 봉급) SELECT 번호, 이름, 봉급 FROM 직원 WHERE 부서번호=‘D1’;
갱신문: UPDATE문 UPDATE 테이블 SET 열_이름=산술식{,열_이름=산술식}* [WHERE 조건]; (ex) SQL 조작어(계속) 갱신문: UPDATE문 UPDATE 테이블 SET 열_이름=산술식{,열_이름=산술식}* [WHERE 조건]; (ex) UPDATE 직원 SET 나이=29 WHERE 번호=100;
삭제문: DELETE문 DELETE FROM 테이블[WHERE 조건]; (ex) SQL 조작어(계속)
SQL 뷰(view) 뷰(view) 하나 이상의 테이블(기본 테이블)로부터 유도되어 만들어진 가상 테이블 뷰의 정의
뷰 생성과 제거 생성 제거 SQL 뷰(view)(계속) CREATE VIEW 뷰_이름[(열_이름_리스트)] AS SELECT 문 [WITH CHECK OPTION]; (ex) CREATE VIEW 직원연락처(이름, 전화번호) AS SELECT 이름, 전화번호 FROM 직원; 제거 DROP VIEW 뷰_이름{RESTRICT | CASCADE}; (ex) DROP VIEW 직원연락처;
시스템카탈로그(system catalog) 시스템 카탈로그와 내장 SQL 시스템카탈로그(system catalog) DBMS 자신이 필요로 하는 여러 가지 객체에 대한 정보를 포함하고 있는 시스템 데이터베이스 SELECT문으로 검색 가능하나 변경은 불가 내장 SQL(embedded SQL) 호스트 프로그래밍 언어(PL/I, COBOL, C 등)에 삽입하여 사용하는 SQL 전처리기가 호스트 언어 코드와 내장된 SQL문을 구분할 수 있도록, 내장된 SQL문에서 특수문자나 명령어를 접두어로 사용
Thank you ehanbit.net