1. 관계형 데이터베이스(Relation Database)

(1)   관계형 데이터베이스의 등장

  • 1970년대 E.F. Codd박사 논문에서 처음 소개

  • 릴레이션과 릴레이션의 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있음

  • 현재 기업에서 가장 많이 사용함

  • Oracle, MS-SQL, MySQL, Sybase 등의 관리 시스템 있음

(2)   데이터베이스와 데이터베이스 관리 시스템의 차이점

  • 데이터베이스는 데이터를 어떤 형태의 자료구조로 사용하느냐에 따라서 나누어짐

  • 계층형 데이터베이스는 트리(Tree)형태의 자료구조에 데이터를 저장하고 관리

  • 네트워크는 오너와 멤버 형태로 데이터를 저장함

  • 계층형 데이터베이스는 1N관계를 표현함

  • 네트워크 데이터베이스는 1NNN으로 표현 가능함

  • 관계형 데이터베이스는 릴레이션에 데이터를 저장하고 관리함

  • 관계형 데이터베이스는 릴레이션을 집합 연산과 관계 연산을 할 수 있음

  • 데이터베이스 관리 시스템은 계층형 데이터베이스, 네트워크 데이터베이스, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어 의미 하며, DBMS라고도 함

  • DBMS의 종류에는 Oracle, MS-SQL, MySQL, Sybase 등이 있음

(3)   관계형 데이터베이스 집합 연산과 관계 연산

  • 관계형 데이터베이스의 특징은 릴레이션을 사용해 집합 연산과 관계 연산을 할 수 있음

*집합 연산

  • 합집합(Union): 두 개의 릴레이션을 하나로 합함, 중복된 행(튜플)은 한 번만 조회 됨

  • 차집합(Difference): 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회 함

  • 교집합(Intersection): 두 개의 릴레이션 간에 공통된 것을 조회함

  • 곱집합(Cartesian product): 각 릴레이션에 존재하는 모든 데이터를 조합해 연산함

*관계 연산

  • 선택 연산(Selection): 릴레이션에서 조건에 맞는 행(튜플)만을 조회함

  • 투영 연산(Projection): 릴레이션에서 조건에 맞는 속성만을 조회함

  • 결합 연산(Join): 여러 릴레이션의 공통된 속성을 사용해 새로운 릴레이션을 만들어냄

  • 나누기 연산(Division): 기준 릴레이션에서 나누는 리레이션이 가지고 있는 속성과 동일한 값을 가지는 행(튜플)을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 연산

2. 테이블의 구조

  • 관계형 데이터베이스는 릴레이션에 데이터를 저장하고 릴레이션을 사용해 집합 연산 및 관계 연산을 지원하여 다양한 형태로 데이터를 조회할 수 있음

  • 릴레이션은 데이터베이스 관리 시스템에서 테이블로 만들어짐

  • 기본키는 하나의 테이블에서 유일성과 최소성, Not Null을 만족하면서 해당 테이블을 대표하는 것

  • 테이블은 행과 칼럼으로 구성됨

  • 행은 하나의 테이블에 저장되는 값으로 튜플(Tuple) 이라고도 함

  • 칼럼은 어떤 데이터를 저장하기 위한 필드로 속성(Attribute)이라고도 함

  • 외래키는 다른 테이블의 기본키를 참조(조인)하는 칼럼

  • 외래키는 관계 연산 중에서 결합 연산(조인)을 하기 위해서 사용

 

1. SQL(Structured Query Language)

-SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 조작, 제어 등을 할 수 있는 절차형 언어

-관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용해 데이터베이스를 누구나 쉽게 사용할 수 있도록 함

-SQLANSI/ISO 표준을 준수하기 때문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있음

*SQL 표준

-ANSI/ISO SQL 표준: INNER JOIN, NATURAL JOIN, USING 조건, ON 조건절을 사용함

-ANSI/ISO SQL3 표준: DBMS 벤더별로 차이가 있었던, SQL을 표준화 해 제정함

 

2. SQL 종류

(1) SQL의 종류

* DDL(Data Definition Language)

  • 관계형 데이터베이스의 구조를 정의하는 언어

  • 테이블을 생성하거나 변경, 삭제함

  • CREATE, ALTER, DROP, RENAME

* DML(Data Manipulation Language)

  • 테이블에서 데이터를 입력, 수정, 삭제, 조회함

  • INSERT, UPDATE, DELETE, SELECT

*DCL(Data Control Language)

  • 데이터베이스 사용자에게 권한을 부여하거나 회수함

  • GRANT, REVOKE, TRUMCATE

*TCL(Transaction Control Language)

  • 트랜잭션을 제어하는 명령어

  • COMMIT, ROLLBACK, SAVEPOINT

(2) 트랜잭션의 특성(트랜잭션: 데이터베이스의 작업을 처리하는 단위)

 

*원자성(Atomicity)

  • 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 함(ALL OR NOTHING)

  • 트랜잭션의 처리가 완전히 끝나지 않았을 경우, 실행되지않은 상태와 같아야 함

*일관성(Consistency)

  • 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함

  • 트랜잭션 실행 후에도 일관성이 유지 돼야 함

*고립성(Isolation)

  • 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없음

  • , 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없음

*영속성(Durability)

  • 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 함

 

3. SQL문의 실행 순서

  • 개발자가 작성한 SQL문은 3단계를 걸쳐서 실행 됨

  • SQL문의 문법을 검사하고 구문분석을 함

  • 구문분석 이후에 SQL을 실행함

  • SQL이 실행되면 데이터를 인출함

*파싱(Parsing)

  • SQL문의 문법을 확인하고 구문분석함

  • 구문분석한 SQL문은 Library Cache에 저장함

*실행(Execution)

  • 옵티마이저(Optimizer)가 수립한 실행 계획에 따라 SQL을 실행함

*인출(Fetch)

  • 데이터를 읽어서 전송함

+ Recent posts