[면접대비] 데이터베이스
데이터 베이스 기초
데이터베이스란 무엇인가요
사용자가 공유할 수 있도록 관련된 데이터를 체계적으로 저장하고 관리하는 데이터의 집합입니다
DBMS란 무엇인가요
데이터 베이스를 생성하고 조회, 수정, 삭제할 수 있도록 관리하는 소프트웨어입니다
RDMS란 무엇이며 어떤 특징이 있나요
데이터를 행과 열로 구성된 테이블 형태로 저장하고 테이블 간의 관계를 통해 데이터를 관리하는 DBMS입니다
스키마란 무엇인가요
데이터 베이스의 구조와 제약 조건을 정의한 설계도입니다
SQL이란 무엇인가요
SQL은 관계형 데이터베이스에서 데이터를 정의하고 조회, 삽입, 수정, 삭제하기 위해 사용하는 언어입니다
DDL, DML, DCL이란 무엇이며 각각 어떤 명령어가 있나요
DDL은 데이터베이스 구조를 정의하는 명령어로 create, alter, drop 등이 있습니다
DML은 데이터를 조회하거나 변경하는 명령어로 select, insert, update, delete가 있습니다
DCL은 권한을 관리하는 명령어로 grand, revoke 등이 있습니다
관계형 데이터베이스
Primary Key와 Foreign Key란 무엇인가요
Primary Key는 테이블에서 각 행을 유일하게 식별하기 위한 키이며 중복되거나 NULL일 수 없습니다
Foreign Key는 다른 테이블의 키를 참조하여 테이블 간의 관계와 참조 무결성을 유지하는 키입니다
JOIN이란 무엇이며 왜 사용하나요
JOIN은 두 개 이상의 테이블을 관련된 컬럼을 기준으로 결합하여 조회하는 방법입니다
정규화로 분리된 여러 테이블의 데이터를 함께 조회할 때 주로 사용합니다
INNER JOIN과 OUTER JOIN의 차이는 무엇인가요
INNER JOIN은 두 테이블에서 조건이 일치하는 데이터만 반환합니다
OUTER JOIN은 일치하는 데이터뿐만 아니라 한쪽 또는 양쪽의 일치하지 않는 데이터도 함께 반환됩니다
정규화
정규화란 무엇이며 왜 하나요
데이터의 중복을 최소화하고 데이터의 무결성을 높이기 위해 테이블을 적절하게 분리하는 과정입니다. 이를 통해 이상 현상을 줄일 수 있습니다
이상 현상이란 무엇인가요
데이터가 불필요하게 중복되어 있을 때 데이터 삽입, 삭제, 수정 과정에서 데이터의 불일치나 손실이 발생하는 문제입니다
반 정규화란 무엇이며 왜 하나요
성능 향상을 위해 의도적으로 테이블을 합치거나 중복 데이터를 허용하는 방법입니다. JOIN 횟수를 줄여 조회 성능을 높일 수 있지만 데이터 중복과 무결성 관리 비용이 증가할 수 있습니다
트랜잭션
트랜잭션이란 무엇인가요
데이터베이스에서 하나의 논리적인 작업 단위로 처리되는 연산들의 집합입니다
모든 작업이 성공하면 반영하고 하나라도 실패하면 이전 상태로 되돌릴 수 있습니다
트랜잭션의 ACID 특성을 설명해주세요
Atomicity(원자성)는 모두 수행되거나 모두 취소되어야 한다는 것이고
Consistency(일관성)는 트랜잭션 전후에 데이터베이스의 규칙과 제약 조건이 유지되야 한다는 것이고
Isolation(격리성)은 동시에 실행되는 트랜잭션들이 서로 간섭하지 않도록 하는 것이며
Durability(지속성)는 완료된 트랜잭션의 결과가 영구적으로 보존되어야 한다는 것입니다
동시성 제어
데이터 베이스에서 Lock이란 무엇이며 왜 사용하나요
Lock은 여러 트랜잭션이 동시에 같은 데이터에 접근할 때 데이터의 일관성이 깨지는 것을 방지하기 위해 접근을 제어하는 방법입니다
Index
Index란 무엇이며 왜 사용하나요
Index는 데이터베이스에서 원하는 데이터를 빠르게 찾을 수 있도록 만들어 놓은 별도의 자료구조입니다.
전체 테이블을 탐색하지 않고 필요한 데이터를 빠르게 찾을 수 있어 조회 성능을 높일 수 있습니다
Index의 장점과 단점은 무엇인가요
검색과 정렬 등의 조회 성능을 향상 시킬 수 있지만 별도의 저장 공간이 필요하고 데이터 변경 시 Index도 함께 갱신해야 하기 때문에 INSERT, UPDATE, DELETE 성능이 저하될 수 있습니다
B-Tree / B+Tree가 Index에 많이 사용되는 이유가 무엇인가요
B-Tree 계열은 트리의 높이를 낮게 유지하면서 균형을 유지하기 때문에 검색, 삽입, 삭제를 O(log N)에 수행할 수 있습니다. 특히 B+Tree는 실제 데이터에 대한 키를 리프 노드에 정렬해 저장하고 리프 노드가 연결되어 있어 범위 검색에도 효율적입니다
기타
RDB와 NoSQL의 차이는 무엇인가요
RDB는 데이터를 정해진 스키마와 테이블 간 관계를 기반으로 관리하며 데이터의 일관성과 관계 표현에 강점이 있습니다. NoSQL은 비교적 유연한 데이터 구조를 사용하며 대규모 분산 처리와 확장성이 중요한 환경에서 많이 사용됩니다.

