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를 제거하는 문장


+ Recent posts