[CS 개념 정리 - DB] 정규화
·
면접 준비/DB
정규화(Normal Form, NF)정규화란 잠재적인 문제가 발생하지 않도록 테이블의 필드를 구성하고, 필요한 경우 테이블을 나누는 작업을 수행한다.정규형의 종류로는 제1 정규형~3정규형, 보이스/코드 정규형, 제4 정규형, 제5 정규형이 있다.대부분의 경우 제3정규형 또는 보이스/코드 정규형까지만 수행된다.제1 정규형모든 속성이 원자 값을 가진다.더 이상 쪼개질 수 없는 값을 필드 데이터로 가져야 한다.하나의 컬럼에 값이 두 개 이상 들어있는 경우 중복되는 레코드를 감수하고 하나의 테이블에서 쪼개는 방법과 여러 개의 테이블로 쪼개는 방법이 있다.제2 정규형제1 정규형을 만족함과 동시에, 기본 키가 아닌 모든 필드들이 모든 기본 키에 완전히 종속되는 조건을 갖춘 상태를 말한다.보통 기본 키가 2개 이상인..
[CS 개념 정리 - DB] 인덱스
·
면접 준비/DB
RDBMS에서 성능을 향상시킬 수 있는 대표적인 방법중에 하나이다.검색 속도 향상을 목적으로 만드는 하나 이상의 테이블 필드에 대한 자료구조이다.MySQL에서는 인덱스를 크게 클러스터형 인덱스와 세컨더리 인덱스(논클러스터형 인덱스)로 나뉜다.클러스터형 인덱스테이블당 하나씩 만들 수 있는 인덱스로, 우리가 사용하는 기본 키를 통해 클러스터형 인덱스가 생성된다.만약 기본 키가 지정된 필드가 없는 경우에는 NOT NULL 제약조건과 UNIQUE 제약 조건이 있는 필드를 클러스터형 인덱스로 간주한다.세컨더리 인덱스(논클러스터형 인덱스)세컨더리 인덱스는 테이블당 여러개가 존재할 수 있으나 클러스터형 인덱스보다 일반적으로 느리다.문법# 테이블 이름의 필드에 세컨더리 인덱스인 인덱스 이름 설정CREATE INDEX ..
[CS 개념 정리 - DB] 서브쿼리와 조인 간략정리
·
면접 준비/DB
SubQuery다른 SQL문이 포함된 SQL문을 뜻하는 서브쿼리는 소괄호로 감싸 외부 쿼리와 내부쿼리를 구분할 수 있다.SELECT문은 소괄호로 감싸진 서브 쿼리의 형태로, 다른 SELECT, INSERT, UPDATE, DELETE 문 안에 포함될 수 있다.대표적으로 2가지 유형으로 사용한다.SELECT문 안에 SELECT문이 포함된 서브 쿼리SELECT USERS.USERNAME, (SELECT COUNT(*) FROM POSTS WHERE POSTS.USER_ID = USERS.USER_ID) AS POSTS_COUNT FROM USERS;DELETE문 안에 SELECT문이 포함된 서브 쿼리DELETE FROM POSTSWHERE USER_ID=( SELECT USER_ID..
[CS 개념 정리 - DB] SQL 언어
·
면접 준비/DB
DDLData Definition Language라고하며 네 가지 대표적인 명령어가 있다.CREATE데이터베이스, 테이블, 뷰, 인덱스, 사용자등 데이터베이스에서 관리될 수 있는 다양한 대상을 정의할 수 있다.MYSQL에서는 다음과 같이 특정필드에 제약 조건을 함께 명시도 할 수 있다.create database TIL_DATABASE;use TIL_DATABASE;create table practice1( user_id int primary key auto_increment, name varchar(50) unique default 'human' not null , age int not null , registration_dtae timestamp default current_ti..
[CS 개념 정리 - DB] RDBMS 기본 개념
·
면접 준비/DB
테이블 구성RDBMS 내의 레코드들은 테이블의 형태를 이룬다.각 필드로 사용가능한 데이터 유형들이 정해져 있으며 이를 필드타입 이라고 한다.테이블 내의 특정 레코드를 식별할 수 있는 필드의 집합은 키라고 한다.키는 레코드의 식별뿐만 아니라 테이블 간 참조할때에도 사용된다.키테이블에서 특정 레코드를 식별할 수 있는 하나 이상의 필드를 키라고 한다.키는 다양한 종류가 있으며 이를 모두 암기하지 않아도 되지만 후보 키, 기본 키, 외래 키정도는 알고 있어야 한다. 후보키후보키는 테이블의 한 레코드를 식별하기 위한 필드의 최소한의 집합이다.특정 레코드를 유일하기 식별한다는 점으로 유일성을 갖추고 있다고 한다.하나 이상의 필드로 구성될 수 있으며, 후보 키에 포함된 필드 중 하나라도 생략하면 레코드를 고유하게 식..
[Logging] 로그 출력을 효율적으로 생성 및 추적하기 3편
·
Spring/Logging
2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 1편2024.12.25 - [Spring] - [Logging] 로그 출력을 효율적으로 생성 및 추적하기 2편 Logging Trace V3V2에서는 TraceId의 동기화 문제는 해결했지만 모든 파라미터에 대한 수정의 필요성이 생겨 유지 보수에 어려움이 발생한다는 문제와 beginSync메서드를 반드시 수행해야 한다는 문제가 있다.이러한 문제를 해결하기 위한 V3를 구현해보려 한다. 첫 번째 방법은 LogTrace라는 추상체로 중복되는 작업에 대한 메서드를 공통 모듈로 만들고 구현체를 사용하는 방법이다.목차TraceId 변경점LogTraceFieldLogTrace결과문제점TraceId 변경점create..