Computer Science/Database

[Database] 면접 예상 질문 및 답변

킹우현 2023. 11. 25. 21:56

Q # 1) DBMS를 정의하십시오.

답변 : DBMS는 데이터베이스 제어하고 관리하는 통합 시스템을 나타냅니다. DBMS에 정의된 쿼리 언어를 통해 데이터베이스의 데이터를 조작할 수 있습니다.

널리 사용되는 DBMS 중 일부는 MySql, Oracle 등입니다.

 

Q # 1-1) RDBMS를 정의하십시오.

답변 : 관계형 데이터베이스 관리 시스템 (RDBMS)은 행(Column)과 열(Row)을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스입니다. SQL (Structured Query Language)을 사용하여 관계형 데이터베이스에서 데이터에 쉽게 접근할 수 있습니다.

 

Q # 1-2) DBMS의 장점에 대해 설명하세요.

답변 : DBMS의 장점은 다음과 같습니다.

  • 범용성이 넓고 데이터의 무결성을 보장합니다.
  • 또한 높은 성능을 가지고 있습니다.
  • 하지만 수평 확장이 어렵고, 부하를 분석하기 어렵다는 단점이 있습니다.

Q # 2) 데이터베이스에서 다양한 유형의 관계는 무엇입니까?

답변 : 데이터베이스에는 3 가지 유형의 관계가 있습니다.

  • 1:1 : 한 테이블은 비슷한 종류의 열을 가진 다른 테이블과 관계가 있습니다. 각 기본 키는 관련 테이블에서 하나의 레코드 또는 하나의 레코드와 관련이 없습니다.
  • 1:n : 한 테이블은 기본 및 외래 키 관계가있는 다른 테이블과 관계가 있습니다. 기본 키 테이블에는 관련 테이블에없는 하나 또는 여러개의 레코드와 관련된 하나의 레코드 만 포함됩니다.
  • n:m : 두 테이블의 각 레코드는 다른 테이블의 여러 레코드와 관련 될 수 있습니다.

Q # 3) SQL 을 설명하세요.

답변 : SQL은 데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어, 기본적으로 DDL, DML 및 DCL의 세 가지 범주로 나뉩니다. 다음과 같이 정의 할 수 있습니다.

DDL (데이터 정의 언어) 명령은 데이터를 보유하는 구조를 정의하는 데 사용됩니다. 이 명령은 자동 커밋됩니다. 즉, 데이터베이스의 DDL 명령에 의해 수행 된 변경 사항이 영구적으로 저장됩니다.

DML (데이터 조작 언어) 명령은 데이터베이스의 데이터를 조작하는 데 사용됩니다. 이 명령은 자동 커밋되지 않으며 롤백 할 수 있습니다.

DCL (데이터 제어 언어) 명령은 데이터베이스에서 데이터를 사용하기위한 액세스 권한 취소와 같이 데이터베이스에서 데이터의 가시성을 제어하는 ​​데 사용됩니다.

 

Q # 4) 정규화와 비정규화를 설명하십시오. ⭐️⭐️

답변 : 

1. 정규화릴레이션 간의 잘못된 종속 관계로 인한 '데이터베이스 이상 현상'을 해결하고, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정입니다.

2. 비정규화 성능을 향상시키기 위해 테이블에 의도적으로 중복 데이터를 추가하는 프로세스입니다.

 

Q # 4-1) 정규화의 장점은? 

답변: 데이터베이스 변경 시 발생하는 이상 현상을 제거하고, 저장 공간을 효율적으로 사용할 수 있게 됩니다.

 

Q # 4-2) 정규화의 단점은? 

답변: 릴레이션 분해로 인해 릴레이션 간의 연산(join)이 많아집니다. 이로 인해 응답 시간이 느려질 수 있습니다.

 

Q # 5) 데이터베이스 뷰(VIEW)란? ⭐️

답변 : 허용된 데이터를 제한적으로 보여주기 위해 하나 이상의 테이블에서 유도된 '가상 테이블'입니다. 뷰는 저장장치 내에 물리적으로 존재하지 않지만, 사용자에게는 있는 것처럼 간주됩니다.

 

Q # 5-1) 데이터베이스 뷰의 장점과 단점은 무엇입니까?

답변 :

뷰의 장점 )

  • 데이터 조회가 용이하다 (복잡한 쿼리를 단순화)
  • 사용자에게 필요한 정보만 제공할 수 있다 (보안 이점)

뷰의 단점 )

  • 뷰에 인덱스를 구성할 수 없다
  • 한번 정의된 뷰는 수정이 불가하다

Q # 6) ER 모델은 무엇입니까?

답변 : ER 모델은 데이터베이스의 개념적 뷰를 정의하는 엔터티-관계 모델입니다.

ER 모델은 기본적으로 실제 실체와 그 연관 / 관계를 보여줍니다. 여기서 엔티티는 데이터베이스의 속성 세트를 나타냅니다.

 

Q # 6-1) 엔터티(Entity), 엔터티 타입(Entitiy type) 및 엔터티 집합(Entitiy set)을 정의하십시오.

답변 : 엔터티실세계에서 독립적으로 존재하는 데이터의 집합입니다.

엔터티 타입은 유사한 특성을 가진 엔터티 집합을 나타냅니다.

데이터베이스에 설정된 엔티티는 특정 엔티티 유형을 갖는 엔티티의 집합을 나타냅니다.

 

Q # 7) 데이터베이스 트랜잭션이란 무엇입니까? ⭐️

답변 : 트랜잭션이란 데이터베이스의 상태를 변경하기 위해 수행되는 작업 단위입니다.

 

Q # 7-1) 트랜잭션의 4가지 성질(ACID)에 대해 설명해보세요. ⭐️⭐️

답변 : 총 네가지 성질을 가지고있습니다.

- Atomicity(원자성) 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이되지 않던지 둘중에 하나만 수행해야한다.

- Consistency(일관성) 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 상태로 변환되어야한다.

- Isolation(독립성) 수행중인 트랜잭션이 완전히 완료되기 전까지는 다른 트랙잭션에서 수행 결과를 참조할 수 없다.

- Durablility(지속성) 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

 

Q # 8) 인덱스 란? ⭐️⭐️

답변 : 인덱스는 테이블에 저장된 데이터를 빠르게 검색하기 위한 자료구조입니다. 대표적으로 사용되는 자료구조로 해시 테이블과 B-Tree가 있습니다.

 

인덱스를 사용해야 하는 경우

  • 데이터의 양이 많고 검색이 변경보다 빈번한 경우
  • 인덱스를 걸고자 하는 필드의 값이 다양한 값을 가지는 경우

인덱스를 사용할 시 단점

  • 인덱스를 생성하는 시간이 크게 요구됩니다.
  • INSERT, DELETE, UPDATE 쿼리문을 실행할 때 별도의 과정이 추가적으로 발생하기 때문에 DB변경작업이 잦으면 성능이 저하됩니다.

 

Q # 8-1) 인덱스 헌팅을 사용하여 쿼리 성능을 향상시키는 방법은 무엇입니까?

답변 : 인덱스 헌팅은 인덱스 수집을 향상시켜 데이터베이스 성능뿐만 아니라 쿼리 성능을 향상시키는 프로세스입니다. 인덱스 헌팅은 다음을 통해 쿼리 성능을 향상시킵니다.

  • 쿼리 최적화 프로그램을 사용하여 워크로드와 쿼리를 조정합니다.
  • 인덱스 및 쿼리 배포의 성능 및 효과 관찰

Q # 9) 검사점(Checkpoint)를 정의하십시오.

답변 : Checkpoint는 모든 로그가 저장 디스크에 영구적으로 저장되고 일관성이없는 지점을 선언합니다. 충돌이 발생하면 시스템이 검사 점에서 다시 시작할 수 있으므로 작업량과 시간이 절약됩니다.

 

Q # 10) 데이터 사전(Data dictionary)을 설명하십시오.

답변 : 데이터 사전은 테이블과 데이터베이스 개체의 내용과 구조를 설명하는 정보 집합입니다. 데이터 딕셔너리에 저장된 정보의 작업은 데이터베이스 요소 간의 관계를 제어, 조작 및 액세스하는 것입니다.

 

Q # 11) 기본 키(Primary key)와 복합 키(Compound key)를 설명하십시오.

답변 : 기본 키 는 모든 행 데이터가 고유하게 식별되는 테이블의 해당 열입니다. 테이블의 모든 행에는 기본 키가 있어야하며 두 행은 동일한 기본 키를 가질 수 없습니다. 기본 키 값은 절대로 null이거나 수정하거나 업데이트 할 수 없습니다. 복합 키 는 열 세트가 테이블의 모든 행을 고유하게 식별하는 후보 키의 양식입니다.

 

Q # 12) Unique 키로 무엇을 이해하십니까?

답변 : Unique 키는 유일성을 가지기 위해 설정해 놓은 키로 중복이 되는 것을 방지합니다. Primary 키는 오직 하나만 생성할 수 있지만, Unique키는 여러개 생성이 가능합니다. Primary키의 경우 NULL 값을 허용하지 않지만, Unique 키는 NULL 값을 허용합니다.

 

Q # 13) 데이터베이스 트리거로 무엇을 이해하십니까?

답변 : 테이블에서 삽입 전, 삽입 후, 업데이트시, 행 삭제시와 같은 이벤트가 발생할 때 자동으로 실행되는 명령 세트를 데이터베이스 트리거라고합니다.

 

Q # 14) 저장 프로 시저를 정의하십시오.

답변 : 저장 프로시저는 사전 컴파일 된 SQL 쿼리의 모음으로, 사전에 준비해 둔 많은 명령을 자동으로 실행할 수 있기 때문에 작업의 효율성도 높일 수 있습니다.

 

Q # 15) 'DELETE', 'TRUNCATE'및 'DROP'명령을 구분하십시오.

답변 : 'DELETE' 연산을 실행 한 후 손실 된 데이터를 검색하기 위해 COMMIT 및 ROLLBACK 문을 수행 할 수 있습니다.

'TRUNCATE' 조작을 실행 한 후 손실 된 데이터를 검색하기 위해 COMMIT 및 ROLLBACK 문을 수행 할 수 없습니다.

'DROP' 명령은 기본 키 / 외래 키와 같은 테이블 또는 키를 삭제하는 데 사용됩니다.

 

Q # 16) 이상현상이란? ⭐️

답변 : 릴레이션간의 잘못된 종속 관계로 인해 릴레이션 조작 시 발생하는 데이터 불일치 현상이다.

Q # 16-1) 이상의 종류에 대해 말하세요.

답변 :

- 삽입 이상 은  원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.

- 삭제 이상  하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말한다.

- 갱신 이상  정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말한다.

 

Q # 17) 트리거에 대해 설명하고, 트리거를 쓰는 이유에 대해 말하세요.

답변 : 자동으로 실행되도록 정의된 저장 프로시저입니다. INSERT/UPDATE/DELETE문에 대한 응답으로 자동 호출합니다.

트리거를 사용하는 이유

  • 업무 규칙을 보장
  • 업무 처리 자동화
  • 데이터 무결성 강화(변경, 생성, 제거, 복구 시)

Q # 18) 데이터베이스 무결성이란? ⭐️

답변 : 데이터 베이스에 저장된 데이터 값과 현실 세계의 실제 값이 일치하는 것을 말합니다.

개체 무결성 기본키를 구성하는 속성은 NULL값이나 중복값을 가질 수 없다.

참조 무결성 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값으로 유지

널 무결성 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우, 그 속성 값은 NULL이 될 수 없다는 제약 조건

고유 무결성 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성 값은 모두 고유한 값을 가져야 한다.

 

Q # 19) 조인에 대해 설명하고 조인의 종류에 대해 말하세요. 

답변 : 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법입니다.

Inner Join 은 2개 이상의 테이블에서 교집합만을 추출

Left Join 은 2개 이상의 테이블에서 from에 해당하는 부분을 추출

Right Join 은 2개 이상의 테이블에서 from join하는 테이블에 해당하는 부분을 추출

Outer Join 은 아웃터 조인 또는 풀 조인이라고 말함, 2개 이상의 테이블에서 모든 테이블에 해당하는 부분을 추출

 

Q # 20) 교착상태란? ⭐️

답변 : 2개 이상의 트랜잭션이 특정 자원(테이블 또는 행)의 잠금(Lock)을 획득한 채 다른 트랜잭션이 소유하고 있는 잠금을 요구하면 아무리 기다려도 상황이 바뀌지 않는 상태가 되는데 이를 교착상태 라고 합니다.

 

Q # 20-1) 교착상태를 방지하기 위한 방법에 대해 설명하세요.

답변 :

  • 트랜잭션을 자주 커밋한다.
  • 정해진 순서로 테이블에 접근한다.

Q # 21) NoSQL이 기존 RDBMS와 다른 점은?

답변 : NoSQL에서는 스키마가 없기 때문에 '유연'하며 '자유로운 데이터 구조'를 가질 수 있습니다. 관계 정의가 없으니 Join이 불가능하고 (하지만 reference와 같은 기능으로 비슷하게 구현은 가능)  트랜잭션을 지원하지 않습니다.

 

분산처리(수평적 확장)이 용이하는 장점이 있습니다. 대부분의 NoSQL DB는 분산처리기능을 목적으로 나왔기 때문에 분산처리 기능을 자체 프레임워크에 포함하고 있다.

 

Q # 21-1) 어떤상황에서 RDBMS / NoSQL을 쓰는 것이 더 적합한가?

답변 :

- RDBMS는 데이터 구조가 명확하며 변경 될 여지가 없으며 명확한 스키마가 중요한 경우 사용하는 것이 좋습니다.

- NoSQL정확한 데이터 구조를 알 수 없고 데이터가 변경/확장이 될 수 있는 비정형 데이터를 저장해야할 때 가장 적합합니다.

 

Q # 22) 테이블을 드롭(DROP)하는 것과 자르는 것(Truncate), 그리고 테이블 내 모든 레코드를 삭제(Delete)하는 것의 차이점은 무엇입니까?

답변 : DELETE TABLE은 로그되는 작업이기 때문에 삭제되는 각 행은 트랜잭션 로그에 기록되고 이것은 작업을 느리게 합니다. TRUCATE TABLE 역시 테이블 내 행들을 삭제하지만 삭제되는 각 행을 기록하지 않고 대신 테이블의 데이터베이스 할당 해제를 기록하여 작업이 빠릅니다. TRUNCATE TABLE는 롤백할 수 없습니다.

DELETE 명령어는 데이터는 지워지지만 테이블 용량은 줄어들지 않는다. 원하는 데이터만 지울 수 있다. 삭제 후 RollBack 가능하다.

TRUNCATE 명령어는 용량이 줄어들고, 인덱스 등도 모두 삭제된다. 테이블은 삭제하지는 않고 데이터만 삭제한다. 한꺼번에 다 지워야 한다. 삭제 후 절대 되돌릴 수 없다.

DROP 명령어는 테이블 전체를 삭제,공간, 객체를 삭제한다. 삭제 후 절대 되돌릴 수 없다.

 

참고: https://hyonee.tistory.com/41?category=913823

 

[데이터베이스(DB)] 면접 예상 질문과 답변

Q # 1) DBMS를 정의하십시오. 답변 : DBMS는 데이터베이스 관리 시스템을 나타냅니다. 사용자가 데이터에 관한 정보를 가능한 한 효율적이고 효과적으로 구성, 복원 및 검색 할 수 있도록하는 응용

hyonee.tistory.com