취업/면접

데이터베이스(Database) 핵심 면접 질문 리스트

jaewon_sss 2022. 8. 5. 22:17
반응형

Database를 설명하세요

  • 데이터베이스(DB)는 통합하여 관리되는 데이터의 집합체를 의미합니다.
  • 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리됩니다.
  • DBMS(Database Management System) 이라는 미들웨어에 의해 관리됩니다.

 

Database 언어(DDL, DML, DCL)를 설명하세요 

  • DDL (정의어 : Data Definition Language) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어
    (alter, create, drop)
  • DML (조작어 : Data Manipulation Language) : 데이터베이스내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어
    (select, insert, update, delete)
  • DCL (제어어 : Data Control Language) : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어 (commit, rollback, grant, revoke)

 

트리거(Trigger)를 설명하세요

  • 특정 테이블에 대한 이벤트에 반응해 DML(INSERT, DELETE, UPDATE) 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램입니다.
  • 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출한다는 것이 가장 큰 특징입니다.

 

키(Key)의 종류에는 어떤게 있나요?

  • 기본키, 대체키, 슈퍼키, 후보키
    • 기본키 : 후보키 중 선정된 키
    • 대체키 : 기본키가 아닌 후보키
    • 후보키 : 튜플을 식별할 수 있는 속성의 최소 집합
    • 슈퍼키 : 튜플을 식별할 수 있는 속성의 집합

 

무결성 제약조건를 설명하세요

  • 무결성 제약조건이란 데이터가 정확성과 일관성을 유지하기 위해 가져야 할 조건들을 의미합니다.
    • 개체 무결성 : 기본키는 null값을 가질 수 없다.
    • 참조 무결성 : 외래키는 null값 또는 참조하는 릴레이션의 기본키 값이어야 한다.
    • 도메인 무결성 : 속성값이 도메인에 속한 값이어야 함을 의미합니다.
    • 키 무결성 : 한 릴레이션에 최소한 하나의 키가 존재해야 합니다.

 

서브쿼리를 설명하세요

  • sql문 안에 있는 sql문 입니다.
  • MySQL 5.5버전 이하에서는 full scan하게 되어 성능이 좋지 않습니다.
  • 5.5 이상 버전에서도 간단한 서브쿼리가 아니면 최적화가 되어 있지 않아 join문으로 변경하는 것이 성능적으로 우수합니다.

 

View를 설명하세요

  • View는 직접 테이블에 접근하는 것이 아니라 테이블에서 사용자가 필요로 하는 부분만 선택하여 만들어 놓은 데이터 집합입니다.
  • 가장 큰 이유는 사용자의 편의와 데이터베이스의 보안 때문입니다.
  • 원본 테이블에 직접 접근하지 않아도 사용자가 임의의 뷰를 구성하여 별도의 이름을 붙이거나 접근 가능한 사람을 지정할 수 있기 때문입니다.

 

관계형DB(RDBMS)와 NoSQL의 차이점을 설명하세요

  • RDBMS 는 정해진 스키마가 있어서 명확한 데이터 구조를 보장하고 성능 향상을 위한 Scale-up만 가능합니다.
  • NoSQL은 자유로운 데이터 구조로 데이터 분산처리에 용이하며 성능 향상을 위한 Scale-up, Scale-out이 가능합니다.
  • NoSQL은 foreign key가 없어서 Join이 불가능합니다. 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 시에는 모든 컬렉션에서 수정을 해야 합니다.
  • RDBMS 는 중복된 데이터가 없어(데이터 무결성) 변경이 용이하기 때문에 관계를 맺고 있는 데이터 Update가 자주 이루어지는 시스템에 적합합니다.
  • NoSQL은 Update가 많이 이루어지지 않는 시스템이 좋으며 또한 Database를 Scale-Out 해야 되는 시스템에 적합합니다.

 

PK와 FK를 설명하세요

  • Primary Key은 테이블에서 각 Row(행)을 유일하게 구분하는 Column-Key입니다.
  • Foreign Key는 하나의 테이블에 있는 Column(열)으로는 그 의미를 표현할 수 없는 경우, 다른 테이블의 Primary-Key Column의 값을 반드시 참조해야 하는 Key입니다.

 

정규화를 설명하세요

  • 관계형 데이터베이스에서 데이터 중복을 최소화 하기 위해 데이터를 구조화하는 작업입니다.
  • 데이터의 일관성 및 데이터 중복을 최소화하기 위해 진행합니다. 
  • 제 1정규형은 도메인 제약조건을 만족합니다.
  • 제 2정규형은 부분적 함수종속을 제거합니다.
  • 제 3정규형은 이행적 함수종속을 제거합니다.

 

역정규화를 하는 이유는?

  • 테이블이 정규화로 인해 쪼개진다면 연산 할때마다 join문을 실행해야하므로 성능의 저하가 생길 수 있습니다. 

 

이상현상를 설명하세요

  • 이상현상은 원하지 않는 값이 연쇄적으로 삭제되거나 수정 또는 삽입되는 현상입니다.
  • 이상현상에는 삽입이상, 삭제이상, 갱신이상이 있습니다.

 

트랜잭션의 4가지 특징을 설명하세요

  • 원자성(Automicity) : 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다.
  • 일관성(Consistency) : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
  • 고립성(Isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
  • 지속성(Durability) : 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

 

잠금기법(Locking)을 설명하세요

  • locking은 트랜잭션이 DB를 다루는 동안 다른 트랜잭션이 관여하지 못하게 막는 것입니다.
  • 교착상태가 발생할 수 있습니다.

 

교착상태(Deadlock)을 설명하세요

  • 트랜잭션들이 잠금이 걸린 자원을 무기한 대기하는 현상
  • 이를 해결하기 위해 예방과 회피기법 2가지 방법이 있습니다.
    • 예방은 트랜잭션 전에 필요한 데이터에 Lock을 미리 걸어주는 방법입니다. 하지만 데이터 양이 많으면 데드락이 발생할 수 있습니다.
    • 회피기법은 타임스탬프 기법을 적용하여 데이터를 시간 순서대로 제어하는 방법입니다.

 

 Index을 설명하세요

  • 책의 목차처럼 지정한 칼럼을 정렬하여 쉽게 찾을 수 있도록 만든 테이블입니다.
  • 검색과 정렬 작업의 속도를 높이기 위해 사용됩니다.
  • Index 자료구조로 해쉬테이블과 B+Tree 구조가 있습니다. 하지만 데이터베이스에서 범위 연산에서 우수한 B+ Tree를 사용합니다.
  • 인덱스를 설정하지 않아도 기본적으로 PK값이 인덱스로 설정되어 있습니다.
  • 인덱스를 사용하면 데이터 조회 성능은 향상시킬 수 있습니다. 하지만 데이터 삽입, 삭제, 갱신은 매번 인덱스가 변경되기 떄문에 성능이 떨어질 수 있습니다.

 

모든 칼럼에 Index를 사용하면 좋나요?

  • 양이 많은 테이블에서 일부 데이터만 불러 올 때, 풀 스캔 시 처리 성능 떨어지게됩니다.
  • 모든 컬럼에 인덱스를 추가해 준다면 자칫 본체보다 인덱스가 더 큰 용량을 필요로 하게 됩니다.

 

DB 이중화란 무엇인가?

  • 물리적으로 떨어져 있는 여러 개의 데이터베이스에 대하여 로컬 데이터베이스의 변경된 내용을 원격데이터베이스에 복제하고 관리하는 것
  • 목적
    • 사용자는 하나의 데이터베이스에 대해서만 작업을 수행
    • 데이터베이스 이중화시스템에 연결되어 있는 다른 데이터베이스에도 작업내용이 동일하게 적용
    • 여러개의 데이터베이스를 동시에 관리

 

 

 

 

 

 

 

 

 

https://link.coupang.com/a/bgjsQr

 

국가공인 SQLD 자격검정 핵심노트

COUPANG

www.coupang.com

 

 

 

 

 

 

 

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

반응형