1. 정규화에 대해 설명해보세요
일단 정규화는 성능을 어느정도 포기하면서 무결성을 지키는 과정이라고 생각합니다.
반정규화는 반대.
1정규화 - 하나의 셀에 하나의 원소만 저장되어있어야 한다.
2정규화 - 기본키의 일부에만 종속된 컬럼이 있다면, 이를 별도의 테이블로 분리하여 종속성을 제거 (부분 종속 제거)
-> 현재 테이블과 관련이 없는 컬럼 다른 테이블로 빼는 과정
3정규화 - 일반 컬럼에만 종속된 컬럼을 다른 테이블로 빼는 과정 (이행 종속 제거), 기본키가 아닌 컬럼사이의 종속성을 없애는 단계
BCNF - 모든 결정자가 반드시 후보키여야 한다는 조건을 만족시키는 것
보통 BCNF에서 끝남
2. 인덱스란?
사전에서 가나다 순으로 정렬하면 데이터를 빨리 찾을 수 있는 것처럼 DB에서도 특정 컬럼에 대해 정렬해두고, 그 정보를 자료구조에 저장해둔 것이 인덱스.
Search할 땐 성능이 빠르지만, 삽입이나 삭제시 재정렬을 해야하기 때문에 Search를 많이 하는곳에만 적절히 사용
3. 인덱스의 자료구조는?

예를 들어, 14~20까지 수를 확인하고 싶다고 한다면 중간에 끊기면 성능적으로 저하되기 때문에 리프 노드끼리 연결이 되어있다는 점에서 B+Tree가 범위검색에 더욱 효율적인 구조이다.
4. Inner Join과 Outer Join의 차이는?
inner join : 서로 연관된 내용만 검색하는 조인 방법입니다. (교집합)
outer join : 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽의 내용을 전부 출력하는 방법입니다.
outer join에는 Left outer, Right outer, Full outer join이 있다.

5. Group By의 역할은?
Group By 명령어를 통해 특정 컬럼을 기준으로 연산한 결과를 집계 키로 정의하여 그룹을 짓는 역할을 한다.
6. Delete, Truncate, Drop의 차이는?
Delete : 데이터만 지우는 것, 스키마는 유지. 되돌릴 수 있음
Truncate : 전체 데이터를 삭제. 테이블 용량 줄어들고, 인덱스도 삭제되지만 테이블을 삭제할 수 없고, 되돌릴 수 없음
Drop : 테이블 자체를 삭제 (공간, 인덱스 포함) 삭제후 되돌리기 불가
7. Having, Where, On의 차이
Having : 그룹을 필터링 Where : 개별 행을 필터링
On은 Join의 조건을 지정할 때
우선순위 : On -> Where -> Having
'📖Computer Science' 카테고리의 다른 글
| [프로그래밍 공통] 기술면접 (0) | 2025.01.03 |
|---|---|
| [백엔드] 기술면접 (1) | 2025.01.02 |
| [네트워크] 기술면접 (1) | 2025.01.02 |
| [Java] 기술면접 (1) | 2025.01.01 |
| 기술면접 준비 (0) | 2025.01.01 |