1. 데이터베이스의 역사
1.1. 파일 시스템(File System)
: '파일(File)' 개념은 자료를 저장하는 기본적인 방법으로 사용
: 파일에 기초하여 자료나 정보를 처리하는 시스템
: 파일 시스템에서는 개별 응용프로그램이 직접 파일에 접근하여 기록, 갱신, 삭제를 할 수 있으며, 파일에 있는 데이터의 올바른 관리 여부는 전적으로 응용프로그램에 달려 있다.
[파일 시스템의 문제점]
1.1.1. 데이터 종속성(data dependency)
: 데이터를 사용하는 프로그램의 구조가 데이터 구조(파일 구조)의 영향을 받는다.
: 개발과 유지보수가 어려워진다.
1.1.2. 데이터 무결성(data integrity)의 침해
: 저장된 데이터의 내용이 본래 의도했던 데이터의 형식, 범위를 준수해야 한다.
: 응용프로그램에서 사용자가 데이터를 올바르게 입력했는지 검사하는 기능을 구현해야 한다.
1.1.3. 데이터 중복성(data redundancy)
: 같은 내용의 데이터가 여러 곳에 중복하여 저장되는 것을 의미한다.
: 데이터가 중복 저장되면 저장 공간의 낭비라는 문제 외에도 다음에 설명할 데이터의 불일치, 보안의 어려움과 같은 문제들이 발생할 수 있다.
1.1.4. 데이터 불일치(data inconsistency)
: 중복 저장된 데이터들이 서로 일치하지 않는 것을 의미한다.
1.1.5. 데이터 표준화(data standard)의 어려움
: 많은 수의 개발자들이 협력 작업을 하는 작업환경에서 개발자들간의 코딩 방식이나 변수 선언에서 차이점이 생겨 제 3자가 프로그램에 대한 이해가 어려워지고 두 응용프로그램 간의 호환성에 문제가 생긴다.
1.1.6. 데이터 보안성(data security)의 결여
: 데이터가 저장되어 있는 파일은 그 내용이 Text 형식이나 잘 알려진 형식으로 저장되기 때문에 보안을 유지하기가 어렵다.
1.2. 데이터 베이스의 등장
- 데이터베이스
: 모아놓은 데이터의 집합
- 데이터베이스 관리 시스템
: 데이터를 관리 하는 S/W
- 데이터베이스 시스템
: 데이터베이스에 기초해서 데이터나 정보를 처리하는 체제
1.2.1. 데이터 독립성(independency) 지원
: 사용자 또는 응용프로그램이 직접 데이터베이스에 접근할 수 없고 반드시 DBMS를 통해서만 접근이 가능하다.
: DBMS는 데이터베이스 내에 있는 데이터의 물리적, 논리적 변화가 응용 시스템에 영향을 미치지 않도록 함으로써 데이터 독립성을 보장한다.
1.2.2. 데이터 무결성 유지
: DBMS는 데이터베이스 내에 저장될 데이터에 대하여 데이터의 타입(type), 길이, 값의 범위 등에 대한 정보를 가지고 있다.
: 위반하는 데이터가 들어올 경우 처리를 거절함으로써 데이터의 무결성을 지원
1.2.3. 데이터 중복성 및 불일치 최소화
: 데이터베이스를 공용하는 조직 전체의 관점에서 관리한다.
: 중복성을 방지하며 그 결과로서 중복된 데이터 간의 불일치 문제를 해결한다.
1.2.4. 데이터 표준화의 용이성
: 데이터베이스 관리자(DBA)가 존재
: DBA는 데이터베이스의 설계과정을 주도함으로써 부서 간 이해를 조정하고 관리될 데이터를 표준화 시킬수 있다.
: DBMS는 데이터의 구조에 관한 정보를 가지고 있으며 응용프로그램에서 데이터에 접근하기 위해서 DBMS가 가지고 있는 구조 정보에 따라야 하기 때문에 자연스럽게 표준화가 이루어질 수 있다.
1.2.5. 높은 데이터 보안성
: 데이터에 대한 접근을 제한 할 수 있다.
: 저장된 데이터베이스는 일반적으로 DBMS를 통하지 않고는 외부에서 내용을 알아내기 매우 어렵기 때문에 데이터가 보호될 수 있다.
1.2.6. 데이터 공유(data sharing)의 용이성
: 데이터를 통합 관리하고 DBMS를 통해 여러 사용자의 요구를 동시적으로 처리할 수 있는 능력을 가지고 있으며 데이터를 쉽게 이용할 수 있는 수단을 제공한다.
1.3. 관계형 데이터베이스 모델
- 데이터베이스의 모델
: 계층형 모델
: 네트워크 모델
: 관계형 모델
: 데이터가 테이블 형태로 표현
: 민감한 데이터에 대한 엑세스 제어를 구현하기 쉬움
: 데이터베이스의 간결성(Clarity)와 가시성(Visibility)이 증진됨 ( 표 형식의 데이터 요소 탐색 )
: 사용자가 데이터를 쉽게 다룰 수 있도록 해주는 질의어(SQL)가 제공된다.
2. 관계형 데이터베이스 용어
2.1. 릴레이션(Relation), 테이블(Table), 관계
: 지금까지 테이블이라고 지칭했던 것으로 관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위.
: 서로 구분할 수 있는 이름을 갖는다.
: 동일한 데이터베이스 내에서는 같은 이름을 가진 릴레이션이 존재할 수 없다.
2.2. 속성(Attribute), 열(Column)
: 객체가 지닌 구체적인 정보의 항목에 해당하는 것.
: 관리해야 할 필요가 있는 속성들의 집합.
2.3. 튜플(Tuple), 행(Row), 레코드(Record)
: 값의 나열(리스트), 테이블의 행.
: 개체에 속한 구성원들 개개의 정보를 표현.
2.4. 도메인(Domain), 타입(Type)
: 하나의 속성이 취할 수 있는 허가된 값의 집합.
: 테이블에 포함된 각각의 속성(열)들이 가질 수 있는 값들의 집합.
: 테이블에 저장되는 데이터 값들이 본래 의도했던 값들만 저장되고 관리되도록 하기 위함.
3. 기본키와 외래키
- 키의 필요성
: 관계형 데이터베이스에서는 중복된 튜플(행, 레코드)의 삽입을 막아야 할 필요가 있다.
3.1. 기본키(Primary key)
: 튜플(행, 레코드)를 구분하는 기준으로 사용되는 키
: 기본적으로 데이터의 길이가 짧은 것을 기본 키로 정한다.
3.2. 후보키(Candidate key)
: 레코드의 중복 여부를 확인
- 후보키의 속성
: 최소성, 유일성
- 후보키의 개념
: 테이블에서 각 튜플(행, 레코드)를 구별하는데 기준이 되는 하나 혹은 그 이상의 컬럼들의 집합
(후보키는 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야 한다.)
3.3. 대체키(Alternate key)
: 선택되지 않은 후보키
3.4. 복합키(Composite key)
: 두 개 이상의 속성, 열이 모여 키의 역할을 하는 경우
3.5. 외래키(Foreign Key)
: 테이블 간의 데이터의 일치와 무결성을 보증해주는 수단
* 무결성이 깨어지게 되면 이를 막기 위한 DBMS의 조치
- 제한(restricted)
: 삭제하려는 레코드의 부서번호값을 사원 테이블에서 가지고 있는 레코드가 있으면 삭제 연산 거절
- 연쇄(cascade)
: 삭제 연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원 테이블의 레코드도 함께 삭제
- 널값으로 대체(nullify)
: 삭제 연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원 테이블의 레코드에서 부서번호를 null값으로 바꾼다.
4. 뷰
- 가상 테이블
: 데이터를 바라볼 수 있도록 해주는 수단
: 데이터베이스 관리자는 사용자에 따라 필요에 맞는 뷰를 생성하여 제공할수 있다.
* 전체 조직 관점에서의 테이블
* 다양한 관점에서의 세 가지 뷰
- 일반 테이블과 뷰의 차이점
: 일반 테이블이 실제로 물리적인 데이터를 갖고 있는 반면에 뷰는 물리적인 데이터를 갖고 있지 않다.
: 뷰는 정의된 일반 테이블로부터 데이터를 가져다 보여주는것이다. 따라서 뷰는 일반 테이블이 있어야 정의 가능하다.
- 뷰를 정의 하는 SQL 명령문
CREATE VIEW view_emp1 AS SELECT empid, ename, hire_date, salary FROM emp;
CREATE VIEW high_salary AS SELECT empid, ename, dept, salary FROM emp WHERE salary >= 350;
- 뷰 high_salary에 대한 질의
SELECT empid, ename, salary FROM high_salary WHERE dept = '영업부';
- DBMS의 일반테이블에 대한 질의
SELECT empid, ename, salary FROM emp WHERE salary >= 350 AND dept = '영업부';
- 뷰의 목적
: 하나의 테이블에 대한 여러 관점으로 보는 것이 필요 할 때
: 일반 사용자에게 감추어야 할 컬럼이 있을 때, 그것을 제외한 뷰를 만든다.
- 뷰에 대한 튜플의 삽입
: 튜플의 삽입 가능 여부는 null 값이 저장될 컬럼들이 null값을 허용하는 가에 달려있다.
5. SQL 언어
- 비절차적 언어(non-procedural language), 사용자는 자신이 원하는 것만을 명시
5.1. SELECT
: 테이블에 저장된 정보를 조회하는 데 사용한다.
- 사원에 대한 모든 정보를 보이시오.
- 곽희준 사원의 담당업무는 무엇인가?
- 급여가 300을 넘고 담당업무가 영업관리인 사원의 모든 정보를 보이시오.
- 모든 사원의 이름과 급여를 보이되 사원 이름을 가나다순으로 보이시오.
- 부서번호와 그 부서에 속한 사원들의 급여액 합계를 보이시오.
- 가장 많은 급여를 받는 사원의 급여액과 가장 적은 급여를 받는 사원의 급여액을 보이시오.
- 가장 많은 급여를 받는 사원의 이름을 보이시오.
- 사원들의 현재 급여와 급여를 10% 인상했을 때의 예상 급여를 보이시오.
- 모든 사원들의 이름과 부서 이름을 보이시오.
- 곽희준 사원이 속한 부서의 예산은 얼마인가?
- 사원의 이름과 그 사원의 상사(manager) 이름을 보이시오.
5.2. INSERT
: 테이블에 레코드를 삽입할 때 사용한다.
: 기본적으로 INSERT문은 한번에 하나의 레코드를 삽입할 수 있다.
5.3. UPDATE
: 테이블에 저장되어 있는 튜플의 값을 변경할 때 사용한다.
- 홍성길 사원의 부서번호를 400으로, 급여를 500으로 변경하시오.
- 영업부에 속한 사업의 급여를 20%인상하시오.
5.4. DELETE
: 테이블에 있는 레코드를 삭제할 때 사용한다.
- 홍성길 사원의 정보를 사원 정보에서 삭제하시오.
- 모든 사원의 정보를 사원 정보에서 삭제하시오.
5.5. CREATE
: 테이블, 뷰, 사용자 등 데이터베이스 내의 객체들을 생성하는 데 사용된다.
- dept, emp 테이블을 생성하는 문장
- dept, emp 테이블을 연결하여 뷰를 만드는 문장
5.6. DROP
: 데이터베이스 내의 객체를 제거하는 역할
- dept 테이블과 뷰 new_emp를 제거하는 문장
'학업' 카테고리의 다른 글
[C Study] 함수 (0) | 2016.10.01 |
---|---|
스터디 OT (0) | 2016.09.21 |
[세계문명과 성경2] 2학기 (0) | 2016.09.07 |
[C언어로 쉽게 풀어쓴 자료구조] 01. 자료구조와 알고리즘 (0) | 2016.09.06 |
[컴퓨터네트워크설계] 5. OSPF 라우팅 프로토콜 (0) | 2016.09.06 |