DataBase

[SQLD] 관계형 데이터베이스 개요, SQL, 데이터 무결성, 제약 조건

DH_0518 2025. 2. 24. 01:23

 

 

관계형 데이터베이스(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 실행 단계

  1. 파싱 (Parsing)
    • 문법 확인 및 구문 분석을 통해 올바른 SQL 문인지를 확인한다
    • 파싱이 끝나면, 분석된 SQL이 라이브러리 캐시(Library Cache)에 저장된다
      (*Library Cache: 이전에 실행된 SQL문에 대한 정보를 저장하는 공간)
  2. 실행 (Execution)
    • 옵티마이저(Optimizer)가 생성한 최적의 실행 계획에 따라 SQL문을 실행한다
  3. 인출 (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년 개정 SQLD 합격 후기, SQLD 개정판 개념정리 pdf 공유

[ 목차 ]1. SQLD 시험• 정보• 유의사항• 시험 후기2. 공부 방법• 교재 및 강의• 추천 강의 및 자료#. 개념정리 PDF 공유 SQLD 합격을 하게 되어, 준비하는 분들에게 조금이나마 도움이 될까해서

bruders.tistory.com