본문 바로가기

SQL

#1. 데이터베이스와 데이터베이스 관리 시스템

1. 데이터베이스의 등장 배경

 

       1) 파일시스템

                 : 데이터를 파일로 관리하기 위해 파일을 생성·삭제·수정·검색하는 기능을 제공하는

                    OS 속 소프트웨어이다. 응용 프로그램마다 필요한 데이터를 별도의 파일로 관리한다.

 

 

              - 파일 시스템의 문제점

 

                 1. 응용 프로그램과 데이터의 종속성이다. 

                     사용하는 파일의 구조를 변경하면 관련된 모든 응용프로그램에서 파일에 접근하는 방법을 변경해야했다.

 

                 2. 다수 사용자들의 정보 공유에 대한 문제

                     응용 프로그램마다 데이터를 별도의 파일로 관리하기 때문에 사용자들 간 정보 공유가 되지 않는 문제와

                     이로인한 데이터 중복성 문제도 있었다.

 

 

       2) 데이터베이스 관리 시스템

               : 컴퓨터에 저장된 대량의 데이터를 체계적으로 관리하고
                 사용자가 원하는 정보를 효과적으로 검색하기 위한 소프트웨어
   
 
                   - 1970년대에 데이터베이스 관리 시스템이 등장했다.

 

                 ※   용어 정리

               

                         - 데이터베이스 : 데이터베이스 관리시스템에 의해 관리되는 데이터의 집합 
                       
                         - 데이터베이스 언어: 데이터베이스에 저장된 데이터를 검색하고 조작하기 위한 언어

                            

                          - SQL 언어: 현재 가장 널리 사용되는 데이터베이스 언어로

                                              미국표준연구소(ANSI)와 국제표준기구(ISO)에서 관계형 데이터베이스 표준 언어로 채택됨

 

 

2. 데이터베이스 시스템 발전 과정

 

1960년대 초반 최초의 데이터베이스 IDS(Integrated Data Store)
1960년대 후반 IBM사에서 IMS(Information Management System)개발
1970년 6월 IBM연구소의 Codd박사 관계형 데이터 모델 제시
1970년대 초반 System/R, 최초의 관계형 데이터베이스 시스템 모델 개발
1979년 오라클 V1, 최초의 상용 관계형 데이터베이스 시스템 출시
1982년 SQL/DS, IBM의 상용 관계형 데이터베이스 제품 출시
현재 오라클, DB2, Sybase, SQL Server 사용 중

 

3. SQL의 역사

 

1973  SQUARE(Structured Queries As Relational Express)
1974  System/RSEQUEL(Structured English QUEry Language)
1976  SEQUEL-2
1980  SQL(Structured Query Language)로 개명
1986  SQL-86, 최초의 SQL 표준안
1988  ANSI, ISO 국제표준 인정
1989  SQL-1(SQL/89) 표준안 제정
1992  SQL-2(SQL/92) 표준안 제정
1999  SQL-3(SQL/99) 표준안 제정

 

4. 객체지향 데이터베이스 & 객체관계형 데이터베이스

       

        1) 객체지향 데이터베이스 시스템

 

                  - 객체, 클래스, 메소드, 상속등과 같은 객체 개념을 지원한다.
                  - 모델링 능력이 우수하지만 복잡한 개념, 처리 성능의 저하로 인해 일부 특수 분야에서만 사용한다.

                  -  O2, Versant, Ontos, ObjectStore, Objectivity

         

        2)객체관계형 데이터베이스 시스템

 

                  - 기존 관계형 데이터 모델과 객체지향 기술을 접목한 것이다.
                  - IBM : DB2 UDB 5.0
                  - INFORMIX :1990년대 중반부터 지원했다.
                  - ORACLE : ORACLE 8(1997년 발표) 부터 제한적으로 지원했다.
                                      ORACLE 9i부터 SQL-3에서 요구하는 대부분의 표준 기능 지원했다.
 
 

5. 데이터베이스 정의와 특징

       

       1) 데이터베이스 정의

                    

             - 통합 데이터(integrated data)

                 여러 군데 분산된 데이타를 통합하여 데이터의 중복을 최소화하기 위한 개념이다.

 

             - 공유 데이터(shared data)

                 분산된 파일의 통합 관리를 통해 조직 내의 다수의 사용자나 여러 응용 시스템에서
                 동일한 데이터를 공유한다는 개념이다.
 

             - 저장 데이터(stored data)

                 컴퓨터가 접근 가능한 매체에 저장된 디지털 데이터를 의미한다.
 

             - 운영 데이터(operational data)

                 특정 조직의 고유 업무를 수행하기 위하여 항상 유지해야 하는 데이터를 의미한다.
 

             - 의사결정 데이터(decision-making data)

                 조직에서 장기간 축적된 데이타를 분석하여 새로운 의사 결정을 하는데 활용하기 위한 데이터
 
 

       2) 데이터베이스 특징

 

             - 실시간 접근(realtime access)

                 데이터베이스를 조회하는 사용자 질의에 대한 처리 시간이 몇 초를 넘지 않아야 한다는 것을 의미한다.
 

             - 지속적인 변화(continuous changes)

                 데이터베이스에도 추가, 삭제, 수정과 같은 작업을 통해 현실 세계의 변화를 지속적으로 반영할 수 있다.
 

             - 동시 공유(concurrent sharing)

                 서로 다른 응용 업무에서 다수의 사용자가 동일한 데이터를 공유할 수 있는 환경을 제공한다.

 

             - 내용에 의한 참조(reference by content)

                 데이터베이스에서 데이타를 검색하는 방식은 데이타의 일부 내용에 의해 참조되는 방식
                  예)  모든 컴퓨터공학과 학생을 검색하라
 
 
 

6. 관계형 데이터 모델

 

   관계형 데이터 모델은 데이터구조(릴레이션), 관계연산(집합 연산, 관계 연산)과 제약조건(무결성 규칙)으로

   이루어져있다고 볼 수 있다.

 

 

7. 릴레이션

 

         1) 릴레이션(relation)이란

                 튜플(tuple)과 속성(attribute)의 집합으로 구성된 2차원 테이블 구조이다.

출처 : liveyourit.tistory.com/213

 

        2) 릴레이션의 성질

 

             - 릴레이션에 저장된 튜플들은 유일하다.

                 릴레이션은 튜플들의 집합이기 때문에 하나의 릴레이션에는 동일한 튜플이 저장될 수 없다.
 

             - 릴레이션에 저장된 튜플 간에는 순서 관계가 없다.

                 하나의 집합내에서 원소간의 순서는 무의미하기 때문에 릴레이션에 저장된 튜플끼리는 순서 관계가 없다.
 

             - 릴레이션을 구성하는 속성간에는 순서가 없다.

                 학생1(학번, 이름, 주민번호, 사용자ID)과 학생2(학번, 주민번호, 이름, 사용자ID)는 동일한 릴레이션이다.
 

             - 모든 속성 값은 원자 값(atomic value)이다.

                 속성 값은 더 이상 나뉘어질 수 없는 논리적인 최소 단위를 의미한다.
                 예) 이름

 

 

8. 관계 연산과 SQL

   

UNION : 합집합 예 : SELECT a FROM R UNION SELECT b FROM S;
INTERSECT : 교집합 예 : SELECT a FROM R INTERSECT SELECT b FROM S;
DIFFERENCE : 차집합 예 : SELECT a FROM R MINUS SELECT b FROM S;
PRODUCT : 카티션 곱 예 : SELECT a, b FROM R, S;
RESTRICTION : 수평적인 부분 집합 예 : SELECT * FROM R WHERE r.A=10;
PROJECTION : 수직적인 부분 집합 예 : SELECT r.A1, r.A2 FROM R; 
JOIN 예 : SELECT r.A, r.B FROM R, S WHERE r.A = s.B;
 
 

9. 제약 조건

 

        1) 엔터티 무결성 규칙

               :릴레이션에 저장되는 튜플의 유일성을 보장하기 위한 제약조건이다.

 

              - 기본 키(primary key)

                  릴레이션에 저장되는 튜플의 유일성을 보장하기 위하여 하나 이상의 속성으로 구성되는 식별자이다.
                  유일성(uniqueness)최소성(minimality)을 만족한다.

 

                   * 유일성
                      : 기본 키를 구성하는 속성 집합의 값은 릴레이션내에서 유일해야 한다.
                        예) 학번
                        
                   * 최소성
                     : 유일성을 해치지 않는 최소의 속성으로 구성해야한다.
                        예) 기본키(학번, 이름) => 학번과 이름을 결합하여 유일성을 보장할 수 있지만,
                                                                  학번만으로도 유일성을 보장할 수 있으므로 최소성에 위배된다.

            

        2) 참조 무결성 규칙

                : 릴레이션간의 데이터의 일관성을 보장하기 위한 제약조건이다.

                  하나의 릴레이션에 있는 속성 값이 다른 릴레이션에 있는 속성 값을 참조하기 위해서는

                  참조되는 속성 값이 반드시 해당 릴레이션에 존재해야 한다.

 

                   * 외래 키(foreign key) : 다른 릴레이션의 칼럼 값을 참조하는 칼럼

                   * 참조 키(reference key) : 다른 릴레이션에서 참조되는 칼럼

       

        3) 도메인 무결성 규칙

                : 속성에서 허용 가능한 값의 범위를 지정하기 위한 제약 조건이다.
                  속성의 데이터 타입, 길이, 기본 키, 유일성, NULL 허용, 허용 값의 범위와 같은 제약 조건 지정이 가능하다.

 

 

10. 데이터베이스 관리시스템

 

      1) 데이터베이스 관리시스템이란

             : Database Management System,

                사용자 또는 응용 시스템과  데이터베이스간의 인터페이스 역할을 담당하는 시스템 소프트웨어이다.
 

       2) 주요 기능

       

데이터 정의 기능
- 데이터베이스에 스키마를 정의한다.

- 테이블, 인덱스, 동의어, 시퀀스 등과 같은 스키마 객체(schema object)를 생성, 변경, 삭제할 수 있다.

- CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX
데이터 조작 기능
- 테이블이나 뷰와 같은 스키마 객체에 저장된 데이터를 조작하는 기능이다.

- 새로운 데이타를 입력, 수정 또는 삭제할 수 있다.

- INSERT, UPDATE, DELETE
데이터 제어 기능
- 데이터의 정확성과 안전성을 유지하기 위한 기능이다.

- 데이터의 정확성 유지를 위한 트랜잭션 관리나 접근 권한을 관리할 수 있다.

- COMMIT, ROLLBACK, GRANT, REVOKE

 

 

        3) 장점

           

데이터 중복의 최소화 - 데이터의 통합 관리를 통하여 데이터의 중복을 최소한으로 줄일 수 있음
데이터의 공유 - 데이터의 통합 관리를 통하여 여러 사용자가 동일한 데이터를 공유 가능
데이터의 일관성 유지 - 통합된 데이터의 체계적인 관리를 통하여 데이터의 일관성을 유지
데이터의 무결성 유지 - 무결성 규칙에 의해 데이터에 대한 정확성과 일관성을 유지
데이터의 보안 보장 - 데이터에 대한 중앙집중 관리를 통하여 사용자의 접근을 효율적으로 통제
전체 데이터에 대한 요구 조정 - 데이터에 대한 액세스 빈도, 변경 주기, 저장 공간 관리와
   사용자 요구 사항을 파악하여 전체 데이터에 대한 요구 조건을 조정

 

 

        4) 단점     

     

운영비 증대 - 데이터베이스 관리시스템 운영을 위한 하드웨어, 소프트웨어 및 인력 운영 비용이 증가함
자료 처리의 복잡화 - 일관성과 보안을 유지하며 데이터를 통합 관리하기 위해 시스템 내부적인 자료 처리가 복잡함
복잡한 예비작업과 회복
- 데이터베이스는 통합된 데이타를 여러 사용자가 동시에 사용하는 관계로
  장애 발생시에 복구 과정이 복잡함

- 안정적인 복구를 위해 적절한 백업 작업이 필요함
시스템의 취약성 - 데이터에 대한 의존도가 높은 조직이나 업무는
  장애 발생시 시스템에 대한 신뢰성과 가용성을 저하될 수 있음
 
 

'SQL' 카테고리의 다른 글

#5. 집합 연산자와 행의 정렬  (0) 2022.04.12
#4. 조건 검색  (0) 2022.04.12
#3. 데이터 타입(ORACLE)  (0) 2022.04.11
#2. SQL 언어  (0) 2022.04.10