[DB] 뷰(View)
·
Computer Science/데이터베이스
데이터베이스에서의 뷰에 대해서 알아보는 시간이다. 😊 뷰(View)란?뷰의 정의 뷰란 데이터베이스에서 데이터를 직접 가지지 않는 가상의 테이블을 의미한다. 사용자가 자주 조회하는 데이터를 정의한 SELECT 문을 뷰로 저장하면,뷰에 접근할 때마다 내부에 정의된 SELECT 문이 실행되어 결과를 반환한다!즉, 뷰를 쿼리에서 사용하면 해당 뷰의 SELECT 문이 먼저 수행된다. 뷰의 특징1. 실제 데이터를 저장하지 않는다.뷰의 개념을 잘 보여주는 대표적인 특징이다.앞서 말했던 것처럼, 뷰는 실제 데이터 대신 쿼리문을 저장한다.때문에, 복잡하거나 자주쓰는 쿼리를 뷰로 만들면 재사용할 수 있다는 장점이 존재한다. 2. 보안에 용이하다.쿼리문을 뷰로 저장할 때, 원하는 데이터만 선택적으로 보여줄 수 있어 보안에..
[DB] 트랜잭션 락(Transaction Lock)(+ 동시성 제어)
·
Computer Science/데이터베이스
트랜잭션이란 한꺼번에 수행되어야 하는 업무 단위를 의미한다.트랜잭션에 대한 내용은 해당 포스팅에서 확인 > 2025.08.22 - [CS/데이터베이스] - [DB] 트랜잭션(Transaction) 동시성 제어트랜잭션 속성 중 하나인 일관성은 트랜잭션 전후로 무결성을 만족해야 한다.하지만 무결성을 엄격히 지킬수록 여러 트랜잭션이 동시에 DB 접근하는 것은 오히려 어려워진다. 따라서 여러 트랜잭션이 동시에 실행되더라도 데이터의 일관성을 유지할 수 있도록 트랜잭션의 실행을 제어하는 것을 동시성 제어라고 한다.동시성 문제로 인한 이상 현상은 해당 포스팅에서 확인 >2025.09.19 - [Computer Science/데이터베이스] - [DB] 트랜잭션 고립 수준(Transaction Isolation Leve..
[DB] 인덱스(Index)
·
Computer Science/데이터베이스
인덱스(Index)란?데이터베이스에서 인덱스란 데이터 레코드의 조회 속도를 향상시키기 위한 기능이다.보통 데이터를 조회할 때 가져오는 디스크 장치는 HDD나 SSD인데, 이들은 메모리에 비해 접근 속도가 월등히 느리다.때문에, 데이터를 찾는 과정에서 디스크를 여러 번 읽는 비효율을 줄이기 위해 인덱스라는 색인 구조를 사용한다! 인덱스를 사용함에 있어서 장점과 단점은 다음과 같다.장점검색 속도 향상: 디스크 접근 횟수를 최소화하여 조회 속도를 높일 수 있다.WHERE, ORDER BY, JOIN 등으로 검색 대상을 좁히고, 정렬 및 조인 성능을 향상시킬 수 있다.단점쓰기 작업 성능 저하: INSERT, DELETE, UPDATE를 할 경우, 기존 테이블 이외에 인덱스도 함께 업데이트하므로 성능이 저하될 수..
[DB] 정규화(Normalization) / 1NF, 2NF, 3NF, BCNF
·
Computer Science/데이터베이스
정규화(Normalization)란?정규화란 중복 데이터를 허용하지 않게끔 테이블을 설계하는 방식을 의미한다.만약 정규화가 제대로 이루어지지 않는다면, 이상현상(Abnormality)이 생길 수 있다. 또한 정규화는 5단계의 정규화까지 존재하지만, 주로 3단계의 정규화까지만 수행한다.가장 많이 쓰이는 1NF, 2NF, 3NF, BCNF에 대해서 알아보도록 하자! 제 1 정규화(1NF)제 1 정규화란 테이블 컬럼 당 하나의 값을 갖도록 테이블을 분해하는 것이다.즉, 하나의 행에 컬럼의 값이 반드시 하나만 입력되도록 행을 분리하는 것을 의미한다. [제 1 정규화 전]주문 번호 100번인 행은 상품명과 수량 컬럼의 값을 2개씩 가지고 있기 때문에, 제 1 정규화를 진행할 수 있다.↓[제 1 정규화 후]주..
[DB] 트랜잭션 고립 수준(Transaction Isolation Level)
·
Computer Science/데이터베이스
트랜잭션에 대한 내용은 해당 포스팅에서 확인 > 2025.08.22 - [CS/데이터베이스] - [DB] 트랜잭션(Transaction) 데이터베이스에서 트랜잭션은 고립성(Isolation)을 보장해야 한다.다시 말해, 여러 트랜잭션이 동시에 실행되더라도 각 트랜잭션의 결과는 독립적으로 유지되어야 한다.만약 이를 지키지 않고 여러 트랜잭션이 동시에 같은 데이터에 접근하게 되면, 다음과 같은 문제가 발생할 수 있다. 동시성 문제(이상 현상)Dirty Read다른 트랜잭션이 커밋하지 않은 트랜잭션의 중간 값을 읽어 오는 문제이다. 예를 들어, 트랜잭션 A와 트랜잭션 B를 동시에 실행했다고 가정하자.트랜잭션 A는 몇몇의 데이터를 update를 수행하였다.트랜잭션 B는 update한 데이터를 조회하였다.트랜잭..
[DB] 공통 테이블 식(CTE)
·
Computer Science/데이터베이스
SQL 문제를 풀다보면 공통 테이블 식(CTE)을 활용하는 경우가 자주 등장한다.그렇다면 CTE는 언제, 어떻게 사용해야 할까? CTE(Common Table Expression)공통 테이블 식은 쿼리의 결과를 임시적으로 저장해 일종의 테이블처럼 활용할 수 있는 기능이다.문법은 다음과 같다.WITH (공통 테이블 이름) AS ( CTE 쿼리)SELECT (열 목록)FROM (테이블 이름); WITH 키워드를 통해 공통 테이블 식을 정의하며, AS (...) 안에 CTE 쿼리를 작성해야 한다.이후에는 SELECT문을 통해 정의한 공통 테이블을 활용할 수 있다.이때 주의해야 할 점은 다음과 같다. ❗️ 하나의 SELECT문에는 하나의 WITH만 사용할 수 있다. 다시 말해, 한 SELECT 문에 두..
[DB] Union vs Union All
·
Computer Science/데이터베이스
UnionUnion은 2개 이상의 쿼리 결과 값을 한 번에 조회하기 위해 사용한다.이때, 중복된 결과는 한 번만 나온다.(※ Union Distinct은 Union과 동일하다.) 사용 방법은 간단하다.쿼리 사이를 Union을 써서 연결해주기만 하면된다. (SQL은 대소문자 구분X)select dept_id from employeesunionselect dept_id from departments; Union을 쓸 때는 다음 규칙을 따라야 한다.→ 쿼리의 컬럼 개수가 같아야 한다! 그 외의 권장 사항 및 규칙은 다음과 같다.컬럼의 각 순서마다 데이터 타입이 동일하도록 하는 것이 좋다.⇒ 타입이 달라도 결과는 함께 나오지만, 의도한 결과를 명확히 나타내기 위해서는 일치시키는 것이 좋다.쿼리에서 동일한 순서의..
[DB] 트랜잭션(Transaction)
·
Computer Science/데이터베이스
트랜잭션(Transaction)의 정의트랜잭션(Transaction)이란 "하나의 연속적인 업무 단위"를 의미한다. 예를 들어 A 고객이 B 고객에게 100만원을 이체하려고 한다고 가정하자.해당 상황을 단계별로 나누어본다면,1) A 고객의 잔액이 100만원 이상인지 확인해야 한다.2) 100만원 이상이면, A 고객의 잔액을 100만원 차감한다.3) B 고객의 잔액에 100만원을 더해준다. 이 모든 과정을 통틀어 트랜잭션이라고 한다.트랜잭션은 한꺼번에 수행되어야 하며, 중간에 일련의 과정이 삭제되거나 삽입될 수 없다. 트랜잭션 수행 방식은 다음과 같다.START TRANSACTION; -- 1. a 계좌의 잔액이 100만원 이상이면 -- 2. a 계좌의 잔액을 100만원 차감하여 update -..
[DB] RDBMS vs NoSQL
·
Computer Science/데이터베이스
먼저, 각각의 개념을 살펴보자.RDBMS(Relational DataBase Management System)관계형 데이터베이스 관리 시스템데이터를 2차원 테이블 형태로 저장하고, 테이블 간의 관계로 데이터를 관리하는 시스템.SQL 언어를 사용해서 CRUD를 수행한다. RDBMS의 특징테이블 간 JOIN: RDBMS는 외래키(Foreign Key)를 통해 테이블 간의 관계를 설정하여 데이터를 연결할 수 있다. RDBMS의 장/단점■ 장점 - ACID(원자성, 일관성, 격리성, 지속성)의 트랜잭션 특성을 통해 데이터의 일관성을 보장한다. - Scale-Up: 하드웨어 성능을 높여 대용량 데이터 처리가 가능하다.■ 단점 - 스키마 유연성 부족: 스키마는 고정되어 있어서, 변경이 필요한 경우..