DB 면접 질문 모음

해당 포스팅은 DB 기술 면접 질문들을 정리합니다. 아래 링크들을 토대로 내용을 보충했습니다.


참고 링크

[실무 면접 준비 - 3] 데이터베이스 & 네트워크 (Database & Network)

내가 받은 ‘백엔드 기술 면접 질문’ 모음

[데이터베이스] 무결성 제약조건

DB RDBMS의 한계와 NoSQL을 사용하는 이유 (1) CAP, PACELC 이론

tech-interview-for-developer

CAP 이론과 PACELC 이론을 알아보자




📌 DB 기본

❓ 데이터베이스란?

❓ 데이터베이스의 특징?

❓ 데이터 무결성이란?

❓ 무결성 제한의 유형은?


❓ Key란?


❓ 외래키는 NULL이 허용되는가?

1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야 합니다. (참조 무결성 제약조건)

2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있습니다.

3) 부모 테이블의 기본키, 고유키가 여러 개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있습니다.

4) 외래키로 지정할 두 테이블의 필드는 같은 데이터 타입이어야 합니다.




📌 RDBMS & NoSQL

❓ RDBMS vs NoSQL?

RDBMS

NoSQL


❓ RDBMS의 한계와 NoSQL을 사용하는 이유 - CAP, PACELC 이론

cap


PACELC




📌 Example - DB

MySQL

❓ MySQL 버젼 5.7 vs 8.0 차이점?


❓ Redis란?

❓ Redis와 Memcached의 차이는?



Join

조인이란 2개 이상의 테이블에서 조건에 맞는 데이터를 추출하기 위하여 사용하는 쿼리문을 의미

image


UNION vs UNION ALL



Index

❓ 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요.

사용하면 좋은 경우

(1) Where 절에서 자주 사용되는 Column

(2) 외래키가 사용되는 Column

(3) Join에 자주 사용되는 Column

Index 사용을 피해야 하는 경우

(1) Data 중복도가 높은 Column

(2) DML이 자주 일어나는 Column

DML이 일어났을 때의 상황


❓ 인덱스를 구현하기 위한 자료구조는 어떤 것들이 존재하나요?

Hash Table

B+ Tree

[PostgreSQL] GIN(Generalized Inverted Index)


❓ 인덱스를 고려할 때 어떠한 점에 주의해야 하나요?




Transaction

❓ 트랜잭션에 대해서 설명해주세요.


❓ 트랜잭션의 특징은 무엇인가요? - ACID


❓ 트랜잭션은 어떻게 동작하나요?

image (1) 트랜잭션 시작

(2) 작업 수행

(3-1) 모든 작업을 이상 없이 완료 -> 해당 트랜잭션을 Commit

(3-2). 작업 진행 중 실패 시 -> 해당 트랜잭션을 Rollback or Abort


❓ 트랜잭션 격리 수준(Transaction Isolation Levels)에 대해서 설명해주세요.

image

output

트랜잭션 격리수준은 고립도와 성능의 트레이드 오프를 조절합니다.

image

image

image

image

image

image

image




❓ SQL Injection이란?

공격 방법

방어 방법


정규화(Normalization)

❓ 정규화는 무엇이며 왜 필요한가요?

❓ 갱신 이상

❓ 정규형이란 무엇이고 이들의 종류에 대해서 설명해주실 수 있나요?

정규형이란 특정 조건을 만족하는 테이블의 스키마 형태를 말하며 제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF 정규형 등이 존재

❓ 함수적 종속성(Functional Dependency)