티스토리 뷰

728x90

- 데이터베이스

파일 시스템의 문제를 해결하기 위해 고안됨.

데이터의 독립성, 무결성, 보안성, 일관성, 중복 최소화

성능은 디스크의 I/O에 좌우.

 

 

- 인덱스

테이블의 검색 속도를 향상시키기 위해 별도의 메모리 공간에 칼럼의 값과 주소를 키-값 형태로 정렬되어 저장.

탐색은 빠르지만 추가, 삭제, 수정은 느림

  • B Tree Index: 일반적으로 사용. 칼럼의 값을 변형하지 않고 인덱싱
  • B-Tree: 균형 트리. 각 노드마다 key와 data를 가짐.
  • B+Tree: 리프 노드에만 key와 data를 가지고 리프 노드는 linkedlist로 연결
  • Hash Index: 칼럼의 값을 해시 함수로 계산해서 인덱싱. 동등 연산에만 적합

* 카디널리티와 선택도가 높을 수록 인덱스 설정에 적합. 

카디널리티: 중복되지 않는 값의 개수

선택도: 특정한 값을 얼마나 잘 골라낼 수 있는지에 대한 지표

선택도 = 카디널리티 / 레코드 수)

 

 

- 기본 인덱스 vs 보조 인덱스

기본 인덱스: 기본 키로 인덱스 설정. 일반적으로 물리적 장소가 인접한 레코드끼리 묶어서 저장하는 clustered index.

보조 인덱스: 기본 인덱스가 아닌 인덱스. 테이블 당 여러개 생성 가능

 

 

- 키

  • 슈퍼키: 유일성 만족, 최소성 만족x
  • 후보키: 유일성, 최소성 모두 만족
  • 기본키: 후보키 중 선택된 키
  • 대체키: 후보키 중 기본키가 아닌 키
  • 외래키(foreign key): 다른 테이블의 기본키를 참조하는 키
  • 유일성: 테이블의 튜플들을 유일하게 식별
  • 최소성: 유일하게 식별할 수 있는 최소한의 속성

 

- DDL vs DML vs DCL

DDL: 데이터베이스의 구조를 정의, 수정, 삭제 (alter, create, drop)

DML: 데이터베이스 테이블 내의 검색, 삽입, 갱신, 삭제 (select, insert, update, delete)

DCL: 데이터의 무결성 유지, 보호, 관리 (commit, rollback, grant, revoke)

 

 

- 트리거 

특정 테이블에 대한 이벤트에 반응하여 자동으로 동작하는 프로그램

 

 

- 정규화 (도부이결다조)

하나의 릴레이션에 하나의 의미만 존재하도록 테이블을 분해하는 것.

이상 현상 제거. 

  1. 도메인이 원자값만을 가짐

  2. 부분 함수 종속 제거

  3. 이행 함수 종속 제거

  BCNF: 모든 결정자가 후보키여야 함

  4. 다치 종속 제거

  5. 조인 종속 제거

 

 

- 이상 현상

삽입 이상: 삽입하기 위한 자료가 부족해 null값을 삽입하거나 삽입이 되지 않음

삭제 이상: 튜플 전체를 삭제하여 원하지 않은(필요한) 정보까지 삭제됨

갱신 이상: 일부의 튜플만 갱신되어 일관성이 보장되지 않음

 

 

- 반정규화

정규화한 테이블들끼리 조인 연산이 많아져서 성능이 떨어질 경우 테이블을 통합하는 것.

 

 

- RDBMS vs NoSQL

  1. RDBMS: 스카마 있음. 모든 데이터를 2차원 테이블로 표현.
    구조가 명확하고 변경되지 않는 경우 사용.
  2. NoSQL: 대량의 분산된 데이터를 저장하고 조회. 스키마가 없음.
    구조를 정확히 알 수 없고 변경/확장될 수 있는 경우 사용.
    CAP(일관성, 가용성, 네트워크 분할 허용성) 중 두개만 만족시킴
    키컬도그(key-value, column, document, graph model)

 

- 트랜잭션

데이터베이스에서 작업의 완전성을 보장하기 위한 작업의 수행 단위. ACID 만족.

  1. 원자성(Atomicity): 트랜잭션이 완전히 수행되거나 수행되지 않아야 함
  2. 일관성(Consistency): 트랜잭션이 완료된 후에도 트랜잭션이 일어나기 전과 동일하게 데이터의 일관성 보장
  3. 독립성(Isolation): 트랜잭션끼리 영향을 미치지 않고 독립적으로 수행
  4. 영속성((Durability): 트랜잭션 수행 후 데이터베이스에 영구적으로 반영

 

- 옵티마이저

SQL을 빠르고 효율적으로 수행할 최적의 경로를 생성해주는 DBMS 핵심 엔진.

 

 

- GROUP BY

특정 컬럼을 기준으로 그룹을 지어 연산결과를 보여줌

 

 

- DELETE vs TRUNCATE vs DROP

DELETE: 데이터를 지움

TRUNCATE: 테이블의 데이터 모두를 지움. 테이블 구조는 남아있음

DROP: 테이블 구조를 완전히 지움

 

 

- HAVING vs WHERE

HAVING: GROUP BY를 사용할 때, 그룹에 대한 조건

WHERE: 개별 행에 대한 조건 (먼저 실행됨)

 

 

- JOIN -> ON vs WHERE

ON: JOIN 하기 전 조건에 맞는 행을 찾음

WHERE: JOIN 한 후에 조건에 맞는 행을 찾음

 

 

 

* 참고

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

https://dev-coco.tistory.com/category/%F0%9F%93%8CETC

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함