✦ 관계형 데이터베이스
- 관계형 데이터베이스는 1970년대 E.F. Codd 박사의 논문에서 처음 소개된 데이터베이스
- 관계형 데이터베이스는 릴레이션과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합 등을 만들 수 있다.
- 현재 기업에서 가장 많이 사용하는 데이터베이스로 oracle, ms-sql, mysql 등 다양한 데이터베이스 관리 시스템이 있다.
데이터베이스는 데이터를 어떤 형태의 자료구조로 사용하느냐에 따라 나누어진다.
데이터베이스의 종류는 계층형 데이터베이스, 네트워크형 데이터베이스, 관계형 데이터베이스 등이 있다.
계층형 데이터베이스(1:n 관계)는 트리 형태의 자료구조에 데이터를 저장하며, 네트워크(1:n, m:n)는 오너와 멤버 형태로 데이터를 저장.
관계형 데이터베이스는 릴레이션에 데이터를 저장하고 관리. 릴레이션을 사용하여 집합연산과 관계연산을 할 수 있다.
데이터베이스와 데이터베이스 관리 시스템의 차이점
- 데이터베이스 관리 시스템은 계층형 데이터베이스, 네트워크 데이터베잇, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어로 일명 DBMS라고 한다.
관계형 데이터베이스 집합 연산과 관계 연산
> 집합 연산
합집합(union) - 두 개의 릴레이션을 하나로 합하는 것, 중복된 행(튜플)은 한 번만 조회한다.
차집합(difference) - 본래 릴레이션에는 존재하고 다른 릴레이션에는 존재하지 않는 것을 조회
교집합(intersection) - 두 개의 릴레이션 간에 공통된 것 조회
곱집합(cartesian product) - 각 릴레이션에 존재하는 모든 데이터를 조합하여 연산
> 관계 연산
선택 연산(selection) -릴레이션에서 조건에 맞는 행(튜플)만 조회
투영 연산(projection) - 릴레이션에서 조건에 맞는 속성만을 조회
결합 연산(join) - 여러 릴레이션의 공통된 속성을 사용하여 새로운 릴레이션 만들어냄
나누기 연산(division) - 기준 릴레이션에서 나누는 릴레이션이 가지고 있는 속성과 동일한 값을 가지는 행을 추출하고 나누는 릴레이션의 속성을 삭제한 후 중복도니 행을 제거하는 연산
릴레이션은 최종적으로 데이터베이스 관리 시스템에서 테이블로 만들어진다.
기본키는 하나의 테이블에서 유일성과 최소성, not null을 만족하면서 해당 테이블을 대표하는 것.
테이블은 행과 컬럼으로 구성된다.
외래키는 관계 연산 중에서 결합연산을 하기 위해 사용한다.
SQL의 종류
- SQL은 관계형 데이터베이스에 대해서 데이터의 구조를 정의, 데이터 조작, 데이터 제어 등을 할 수 있는 절차적 언어이다.
- 관계형 데이터베이스는 데이터베이스를 연결하고 SQL문을 사용하여 데이터베이스를 누구나 쉽게 사용할 수 있도록 한다.
- SQL는 ANSI/IO 표준을 준수하기 떄문에 데이터베이스 관리 시스템이 변경되어도 그대로 사용할 수 있다.
DDL(Data Definition Language) - 관계형 데이터베이스의 구조를 정의하는 언어
[CREATE, ALTER, DROP, RENAME]
DML(Data Manipulation Language) - 테이블에서 데이터를 입력, 수정, 삭제, 조회한다.
[INSERT, DELETE, SELECT, UPDATE]
DCL(Data Control Language) - 데이터베이스 사용자에게 권한을 부여하거나 회수한다.
[GRANT, REVOKE, TRUMCATE]
TCL(Transaction Control Language) - 트랜잭션을 제어하는 명령어
[COMMIT, ROLLBACK, SAVEPOINT]
트랜잭션 데이터베이스의 작업을 처리하는 단위
> 트랜잭션의 특징 <
원자성(atomicity) - 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다. (all or nothing)
일관성(consistency) - 실행결과로 데이터베이스의 상태가 모순되지 않아야한다. 실행 후에도 일관성이 유지되어야 한다.
고립성(isolation) - 트랜잭션 실행 중 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없다.
영속성(durability) - 트랜잭션이 그 실행을 완료하면 그 결과는 영구적으로 보장 되어야 한다.
SQL 실행순서
파싱 (sql문법확인, 구문분석->library cache에 저장) -> 실행 (옵티마이저가 수립한 계획에 따라 실행) -> 인출(데이터를 읽어 전송)
'sql' 카테고리의 다른 글
[sqld] sqld 정리 2과목 (0) | 2023.03.04 |
---|---|
[sqld] sqld 정리 1과목 (1) | 2023.03.04 |
[oracle] sqldeveloper 단축키 (1) | 2023.03.03 |
[sqld] 데이터 모델과 성능 (1) | 2023.02.01 |
[sqld] 데이터 모델링의 이해 (1) | 2023.02.01 |