새소식

Study/Classes

[SQLD] 3-1. SQL 기본 / Relational database 관계형 데이터베이스

  • -
728x90

패스트캠퍼스 강의와 이기적 기본서를 기반으로 공부합니다.

1. 개념

데이터베이스

  • 넓은 의미: 일상적인 정보들을 모아놓은 것 자체
  • 특정 기업이나 조직 혹은 개인이 필요에 의해 발생한 데이터를 일정한 형태로 저장해 놓은 것
  • DBMS : 효율적인 데이터 관리뿐만 아니라 사고로 인한 데이터의 손상을 피하고, 필요시 데이터를 복구하기 위한 소프트웨어
  • 데이터베이스의 종류 
    계층형/네트워크형/관계형

관계형 데이터베이스 Relational database

  • 1970년대 E.F. Codd 박사의 논문에서 처음 소개
  • Relation(릴레이션)과 릴레이션의 조인 연산을 통해 합집합, 교집합, 차집합을 만들 수 있음
  • 정규화를 통한 합리적인 테이블 모델링
    → 이상 현상 제거, 데이터 중복 피하기, 병행 제어를 통해 사용자들이 동시에 데이터 공유 및 조작 가능
  • 메타 데이터 총괄 관리 가능
    → 데이터의 성격, 속성, 표현 방법 체계화하고 데이터 표준화를 통해 데이터 품질 확보
  • 보안 기능 제공
  • 데이터 무결성 (integrity) 보장 - 테이블 생성 시 제약 조건을 통해 실수로 조건에 위배되는 데이터 입력 혹은 중요 데이터 삭제를 방지
  • DBMS는 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 반영될 수 있도록 보장하는 기능 제공
  • 또한 시스템 다운, 재해 상황에서도 데이터 회복/복구할 수 있는 기능 제공

관계형 데이터 베이스의 연산

  • 집합 연산
합집합 (Union) 두 개의 테이블을 하나로 합함
중복된 행은 한 번만 조회
차집합 (Difference) 원래 테이블에는 존재하고 다른 테이블에 존재하지 않는 것을 조회
교집합 (Intersection) 두 개의 테이블 간 공통된 것을 조회
곱집합 (Catesian product) 각 테이블에 존재하는 모든 데이터를 조합하여 연산

 

  • 관계 연산
선택 연산 (Selection) 조건에 맞는 행만 조회
투영 연산 (Projection) 조건에 맞는 속성만 조회
결합 연산 (Join) 여러 테이블의 공통된 속성을 이용해 새로운 테이블을 만듬
나누기 연산 (Division) 기존 테이블에서 나누는 테이블이 가진 속성과 동일한 값을 가지는 행을 추출,
나누는 테이블의 속성을 삭제 후 중복된 행을 제거하려는 연산

테이블 TABLE

  • 관계형 데이터 베이스의 기본 단위
  • 모든 자료는 테이블 형태로 저장됨
  • 칼럼과 행의 2차원 구조로 나타냄
  • 용어
칼럼 column 세로 방향으로 이루어진 속성 (더이상 나눌 수 없음)
행 row 가로 방향으로 이루어진 데이터
정규화 normalization 테이블을 분할하여 데이터의 정합성을 확보하고 불필요한 중복을 줄이는 프로세스
기본 키 primary key 하나의 테이블에서 유일성, 최소성, not null을 만족하면서 해당 테이블을 대표하는 한 개 이상의 컬럼
외래 키 foreign key 다른 테이블의 기본키를 참조하여 관계를 연결하는 칼럼

ERD Entity Relationship Diagram

  • 테이블 간 서로의 상관관계를 그림으로 도식화한 것
  • 구성 요소: 엔터티, 관계, 속성
  • 현실 세계 데이터는 이 3가지 구성 요소로 모두 표현 가능

2. SQL의 종류

SQL

  • 관계형 데이터베이스에서 데이터 정의, 조작, 제어하기 위해 사용하는 절차형 언어
  • 특정 데이터 집합에서 필요로 하는 데이터 조회, 새로운 데이터 입력/수정/삭제 등 DB와 대화하게 됨
  • 데이터 조작어(DML) / 데이터 정의어(DDL) / 데이터 제어어(DCL) / 트랜잭션 제어어(TCL)
Data Manipuliation Language SELECT, INSERT, UPDATE, DELETE
데이터를 입력, 수정, 삭제, 조회
Data Definition Language CREATE, ALTER, DROP, RENAME, TRUNCATE
관계형 데이터베이스의 구조 정의
Data Control Language GRANT, REVOKE
데이터베이스 사용자에게 객체를 사용할 수 있도록 권한 부여, 회수
Transaction Control Language COMMIT, ROLLBACK, SAVEPOINT
논리적인 작업 단위를 묶어 적용 혹은 취소 (트랜잭션 제어)

트랜잭션

데이터베이스의 작업을 처리하는 논리적 연산 단위
하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함됨

  • 트랜잭션의 특성
원자성 (Atomicity) 트랜잭션은 분할할 수 없는 최소의 단위이므로, 전부 적용 혹은 전부 취소됨
ALL or NOTHING
일관성 (Consistency) 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 함
트랜잭션 실행 후에도 일관성이 유지되어야 함
고립성 (Isolation) 트랜잭션 실행 중에 생성하는 연산의 중간 결과는 다른 트랜잭션이 접근할 수 없음
부분적 실행 결과를 다른 트랜잭션이 볼 수 없음
영속성 (Dutability) 트랜잭션이 성공적으로 수행되면 결과가 영구적으로 보장됨

SQL 문의 실행 순서

파싱 Parsing → 실행 Execution → 인출 Fetch

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.