-
집계용 중간 결과 테이블을 Global Temporary Table로 바꾸기
집계 중간 결과를 일반 테이블 하나에 담고 매 실행 앞에서 DELETE로 비우면 비용이 세 군데서 나옵니다. Global Temporary Table이 그중 무엇을 없애고, redo 감소는 왜 조건부인지 Oracle 12c 문서를 근거로 정리합니다.
-
버스 노선 공간 데이터에서 정류장 간 구간 형상 만들기 (Linear Referencing)
버스 노선의 선형과 정류장 좌표로 정류장 간 구간 형상을 만드는 과정을 설명합니다. Linear Referencing으로 정류장을 Measure로 바꾸고 두 Measure 사이를 추출합니다.
-
억울한 EXISTS, 정말 IN보다 느릴까?
EXISTS를 IN으로 바꾸면 빨라진다는 통념을 따져봅니다. 성능 개선과 원인 입증은 다른 문제라는 것, 그리고 동등한 서브쿼리 IN과 EXISTS가 현대 MySQL에서 같은 최적화 후보가 되는 것을 로컬 실측으로 확인합니다.
-
데이터베이스 정규화 (6): 보이스-코드 정규형(BCNF), 모든 결정자를 후보키로
보이스-코드 정규형(BCNF)을 다룹니다. 3NF가 남긴 빈틈, 모든 결정자가 후보키여야 한다는 조건, 후보키가 겹치는 구조에서 생기는 중복을 예시와 함께 정리합니다.
-
데이터베이스 정규화 (5): 제3정규형(3NF), 이행적 함수적 종속 제거
제3정규형(3NF)을 다룹니다. 이행적 함수적 종속의 의미, Codd의 1971년 원문 정의, 그리고 키가 아닌 속성을 거쳐 생기는 중복을 제거하는 방법을 예시와 함께 정리합니다.
-
데이터베이스 정규화 (4): 제2정규형(2NF), 함수적 종속과 부분 함수적 종속 제거
제2정규형(2NF)을 다룹니다. 2NF의 토대인 함수적 종속성을 완전 함수적 종속, 부분 함수적 종속으로 나누어 설명하고, 복합키에서 생기는 부분 함수적 종속을 어떻게 제거하는지 예시와 함께 정리합니다.
-
데이터베이스 정규화 (3): 제1정규형(1NF), 원자값과 반복 그룹
제1정규형(1NF)을 자세히 다룹니다. 원자값의 의미와 흔한 오해, 반복 그룹을 분리하는 방법, 그리고 1NF가 아직 보장하지 못하는 것까지 예시와 함께 정리합니다.
-
데이터베이스 정규화 (2): 이상현상과 함수적 종속성, 왜 정규화가 필요한가
삽입, 갱신, 삭제 이상현상을 예시로 설명하고 MariaDB에서 직접 재현해, 데이터베이스가 막아주는 이상현상과 조용히 지나가는 이상현상을 구분합니다. 세 단계 분류를 컬럼 세 개에 저장한 실제 계약 테이블에서 갱신 이상이 어떻게 해마다 복제됐는지도 함께 다룹니다.
-
데이터베이스 정규화 (1): 정규화 전에, 데이터 무결성과 키부터
정규화를 둘러싼 흔한 오해 세 가지에서 출발해, 정규형에 들어가기 전 토대가 되는 개념을 정리합니다. 데이터 무결성의 종류(개체, 참조, 도메인)와 키의 계층(슈퍼키, 후보키, 자연키, 대리키), 그리고 키가 제약조건으로 동작하는 방식을 설명합니다.