SJ_Koding

SQLD 대비 (5) - 관계형 데이터베이스 (RDBMS) 본문

SQL/SQLD

SQLD 대비 (5) - 관계형 데이터베이스 (RDBMS)

성지코딩 2023. 11. 13. 14:32

과목 II 시작 !  노랭이 책으로 과목 I을 모두 풀고 오답정리까지 마무리했다.

 

SQLD 대비 (4) - 성능 데이터 모델링 및 정규화/반정규화, 데이터베이스

2023.11.11 - [SQL/SQLD] - SQLD 대비 (3) - 식별자(Identifier) SQLD 대비 (3) - 식별자(Identifier) 2023.11.11 - [SQL/SQLD] - SQLD 대비 (2) - 엔터티(Entity)와 속성(Attribute), 관계(Relationship) SQLD 대비 (2) - 엔터티(Entity)와 속성

sjkoding.tistory.com

이전 글과 이어지는 글입니다. 해당 정리글은 아래의 유튜브 영상을 참고하여 만들었습니다. 문제 시 삭제하겠습니다.
빨간색 형광펜은 강의에서 강조한 부분, 노란색 형광펜은 추가 서치로 내용을 '직접' 보강한 부분입니다.

https://youtu.be/mKCQLJCwZ_8

관계형 데이터베이스(RDBMS) 개요

1. 관계형 데이터베이스

  • 1970년대 E. F. Codd 박사의 논문에서 처음 소개한 데이터베이스
  • 관계(Relation)과 조인 연산을 통해서 합집합, 교집합, 차집합 등을 만들 수 있다.
  • Oracle, MS-SQL, Mysql, Sybase 등이 있다.

2. 데이터베이스와 데이터베이스 관리 시스템의 차이

  • 데이터베이스는 데이터를 어떤 형태의 자료구조로 사용 하느냐에 따라 나누어진다.
  • 데이터베이스에는 계층형, 네트워크형, 관계형 데이터베이스 등이 있다.
  • 계층형은 트리 자료구조에 데이터를 저장하고 관리하며, 네트워크는 오너와 멤버 형태로 데이터를 저장한다.
  • 계층형은 1:N관계를 표현하며, 네트워크 데이터베이스는 1:N, N:M표현도 가능하다.
  • 관계형은 릴레이션에 데이터를 저장하고 관리하며 집합 연산 및 관계 연산을 할 수 있다.
  • 데이터베이스 관리 시스템은 계층형 네트워크, 관계형 데이터베이스 등을 관리하기 위한 소프트웨어를 의미하며 DBMS라고 한다.

3. 집합 연산

  • 두 개의 릴레이션의 합을 의미하는 합집합
  • 특정 릴레이션에만 존재하며 다른 릴레이션에는 존재 하지 않는 것을 의미하는 차집합
  • 두 릴레이션에 함께 존재하는 것을 의미하는 교집합
  • 각 릴레이션에 존재하는 모든 데이터를 조합하는 곱집합

4. 관계연산

  • 릴레이션에서 특정 조건에 해당하는 행(튜플)만 조회하는 선택연산
  • 릴레이션에서 특정 조건에 맞는 속성만 조회하는 투영연산
  • 여러 릴레이션에서 공통된 속성을 통해 새로운 릴레이션을 만드는 결합연산
  • 기준 릴레이션에서 나누는 릴레이션이 가지는 속성과 동일한 값을 가지는 행(튜플)만 추출하여 나누는 릴레이션의 속성을 삭제한 후 중복된 행을 제거하는 나누기 연산

5. 테이블과 컬럼

  • 관계형 데이터베이스에서 릴레이션은 곧 테이블이다.
  • 테이블은 행과 컬럼으로 구성되며, 하나의 기본키를 가지고 있다.
  • 컬럼은 어떤 데이터를 저장하기위한 필드로써 속성이라고도 한다.
  • 외래키는 다른 테이블의 기본키를 참조하는 컬럼이다.

6. SQL(Structured Query Language)

  • 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어이다.
  • SQL은 단순한 스크립트가 아니라 일반적인 개발 언어와 같이 독립된 하나의 개발 언어이다.
  • 관계형 데이터베이스에 대한 전담 접속 용도로 사용되며 독립되어 있다.

7. SQL 문장의 종류 ★★

데이터 정의어 (DDL) CREATE, DROP, RENAME, ALTER, TRUNCATE - 테이블이나 컬럼과 같이 데이터 구조를 정의하는데 사용되는 명령어
- 구조를 생성, 변경, 삭제 하는 데이터 구조와 관련된 명령어
데이터 조작어 (DML) SELECT, INSERT, DELETE, UPDATE - 데이터베이스내 데이터를 조회 및 검색하기 위한 명령
- 데이터의 추가, 삭제, 수정 하기 위한 명령어
데이터 제어어 (DCL) GRANT, REVOKE - 데이터베이스에 접근하고 객체들을 사용하도록 권한을 부여하거나 회수하는 명령어
트랜잭션 제어어 (TCL) COMMIT, ROLLBACK, SAVEPOINT - 트랜잭션 별로 제어하는 명령어

8. 트랜잭션(Transaction)

  • 트랜잭션은 데이터베이스의 작업을 처리하는 단위이다.
원자성(Atomicity) - 트랜잭션은 데이터베이스내서 실행되는 연산의 전부가 실행되거나 실행되지 않아야 한다.
- 트랜잭션이 완전히 끝나지 않았을 경우에는 실행되기 전의 상태와 같아야한다.
일관성(Consistency) - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 한다.
- 트랜잭션 실행 후에도 일관성이 유지되어야 한다.
고립성(Isolation) - 트랜잭셩 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없다.
- 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다.
영속성(Durability) - 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 한다.

9. SQL 실행 순서

  • SQL문은 3단계를 거쳐 실행 된다
파싱 (Parsing) - SQL문법을 확인하고 구문 분석을 한다.
- 구문 분석한 SQL을 Library Cache에 저장한다.
실행 (Execution) - 옵티마이저가 생성한 실행 계획에 따라 SQL을 실행 한다.
인출 (Fetch) - 데이터를 읽어 전송한다.