관계형 데이터베이스(Relational Database, RDB)
RDB 구성요소
- 계정: 데이터의 접근 제한을 위해 업무별/시스템별로 존재
- 테이블: DBMS의 데이터베이스 안에 데이터가 저장되는 형식
- 스키마: 테이블이 어떠한 구성으로 이루어져 있는지를 말함. 즉, 테이블의 기본적인 구조 정의
RDB 특징
- 데이터의 분류, 정렬, 탐색 속도가 빠르다
- 신뢰성이 높고 데이터의 무결성이 보장된다
- 기존의 작성된 스키마를 수정하기 '어렵다'
- DB의 부하를 분석하는 것이 '어렵다'
테이블(Table)
- 테이블
- 행/열의 2차원 구조랄 가진 데이터 저장 객체
- RDB의 기본 단위
- 릴레이션이 곧 테이블이다
- 컬럼/열(Column)
- 필드(Field)라고도 한다
- 테이블에서 세로 방향으로 이루어진 개별 속성
- 더 이상 나눌 수 없다
- 로우/행(Row)
- 레코드(Record)나 튜플(Tuple)이라고도 한다
- 테이블에서 가로 방향으로 이루어진 연결된 데이터
테이블의 특징
- 하나의 테이블은 반드시 하나의 계정이 소유해야한다
- 테이블의 관계는 1:1, 1:N, N:M
- 테이블 명은 중복될 수 없으나, 계정이 다르다면 같은 이름으로 생성할 수 있다
- 테이블은 '행(row)' 단위로 데잉터가 입력, 삭제되며, 수정은 '값'의 단위로 가능하다
SQL(Structured Query Language)
SQL (Structured Query Language)
- RDB에서 데이터 정의, 조작, 제어를 위해 사용하는 언어
- 대/소문자 구분이 없다
- 종류로는 DDL, DML, DCL, TCL이 있다
SQL의 종류
- DDL(Data Definition Lang, 데이터 정의어)
- DB 구조 정의에 사용하는 언어로, '테이블이나 컬럼등'을 생성, 수정, 삭제 하는 역할
- DB의 '전체 골격을 구성하는 역할'을 한다고 생각하면 된다
- 'AUTO COMMIT' 되므로 ROLLBACK이 불가능하다
- DDL 종류와 역할
- CREATE : 새로운 테이블을 생성
- ALTER : 기존 테이블 구조 변경
- DROP : 기존 테이블 삭제
- TRUNCATE : 기존 테이블 초기화
- RENAME : 기존 테이블 이름 변경
- DML(Data Manipulation Lang, 데이터 조작어)
- 데이터 조작에 사용하는 언어로, 테이블의 '데이터'를 조회, 저장, 수정, 삭제한다
- DB에 저장된 '실제 데이터를 다루는 역할'을 한다고 생각하면 된다
- 사용자가 '수동으로 COMMIT' 해야하므로 ROLLBACK이 가능하다
- DML 종류와 역할
- SELECT : 기존에 저장된 데이터를 조회 (SELECT는 DQL,Data Query Language로 분류하는 경우도 있음)
- INSERT : 새로운 데이터를 저장
- UPDATE : 기존에 저장된 데이터를 수정
- DELETE : 기존에 저장된 데이터를 삭제
- DCL(Data Control Lang, 데이터 제어어)
- DB에 대한 '접근 권한 제어'에 사용하는 언어로, '각종 권한'을 부여, 회수한다
- DCL 종류와 역할
- GRANT : 유저에게 권한을 부여
- REVOKE : 유저로부터 권한을 회수
- TCL(Transaction Control Lang, 트랜잭션 제어어)
- DCL에서 '트랜잭션을 컨트롤'하는 명령어를 TCL로 분류한다
- TCL 종류와 역할
- COMMIT : 트랜잭션 내에서 변경된 데이터를 DB에 영구적으로 반영
- ROLLBACK: 커밋되지 않은, 트랜잭션 내에서 변경된 작업을 취소
- SAVEPOINT: 롤백시킬 저장점을 지정
SQL 실행 단계
- 파싱 (Parsing)
- 문법 확인 및 구문 분석을 통해 올바른 SQL 문인지를 확인한다
- 파싱이 끝나면, 분석된 SQL이 라이브러리 캐시(Library Cache)에 저장된다
(*Library Cache: 이전에 실행된 SQL문에 대한 정보를 저장하는 공간)
- 실행 (Execution)
- 옵티마이저(Optimizer)가 생성한 최적의 실행 계획에 따라 SQL문을 실행한다
- 인출 (Fetch)
- 실행 결과를 DB에서 사용자에게 전송한다
데이터 무결성 (Integrity)
데이터 무결성 (Integrity)
- 데이터의 '정확성', '일관성'을 유지하고, 데이터에 '결손', '부정함'이 없음을 보증하는 것
- '데이터베이스에 저장된 값'과 그것이 표현하는 '현실의 비즈니스 모델의 값'이 일치하는 정확성을 의미
- 다양한 제약조건을 통해 데이터의 무결성이 유지된다
데이터 무결성 종류
- 개체 무결성
- 모든 테이블은 기본키로 선택된 속성을 필수로 가져야한다
- 기본키로 선택된 속성은 'NULL'과 '중복'이 불가능하다
- 참조 무결성
- 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 가져야한다
- 이를 지키기 위해 외래키를 사용한다
- 외래키는 'NULL'이거나 '참조하는 테이블의 기본키 값'과 동일해야한다
- 도메인 무결성
- 테이블에 존재하는 속성의 무결성을 보장하기 위한 것으로 다음 사항들을 정의하고 확인한다
- 속성의 타입
- NULL 값의 허용
- 길이 제한
- Unique 여부 등 - 주어진 속성 값은 정의된 도메인에 속한 값이어야 한다
- 테이블에 존재하는 속성의 무결성을 보장하기 위한 것으로 다음 사항들을 정의하고 확인한다
제약 조건 (Constraints)
관계 모델 제약조건 (Relational Model Constraints)
- 도메인 제약 (Domain Constraints)
- 속성(Attribute)에 대한 제약이다
- 속성 값은 원자성(Atomicity)을 가지며, 도메인에서 정의된 값이어야 한다
- 더 작은 단위로 쪼갤 수 있는 '복합 속성(Composite Attribute)'은 허용되지 않는다
- 여러 값을 가질 수 있는 '다중 값 속성(Multivalued Attribute)'은 허용되지 않는다
- 'NOT NULL' 제약이 걸리지 않은 속성은, NULL이 허용된다
- 키 제약 (Key Constraints)
- 릴레이션(==테이블)에 대한 제약이다
- 릴레이션의 모든 튜플(==행)은 서로 식별 가능해야 한다
- 따라서 릴레이션은, 각 인스턴스를 유일하게 구별할 수 있는 PK를 가져야 한다
- 개체 무결성 제약 (Entity Integrity Constraints)
- 기본키(Primary Key)에 대한 제약이다
- PK는 'NOT NULL' & 'UNIQUE' 해야한다
- 참조 무결성 제약 (Referential Integrity Constraints)
- 외래키 (Foreign Key)에 대한 제약이다
- FK는 자신이 속한 릴레이션을 참조할 수 있다
- FK는 'NULL'이거나, 참조 테이블에 '실제로 존재하는 값'으로 구성되어야 한다
Reference
- SQLD 2024 개정판 개념정리 pdf: https://bruders.tistory.com/173#google_vignette
[SQLD] 2024년 개정 SQLD 합격 후기, SQLD 개정판 개념정리 pdf 공유
[ 목차 ]1. SQLD 시험• 정보• 유의사항• 시험 후기2. 공부 방법• 교재 및 강의• 추천 강의 및 자료#. 개념정리 PDF 공유 SQLD 합격을 하게 되어, 준비하는 분들에게 조금이나마 도움이 될까해서
bruders.tistory.com