EXPLAIN ANALYZE를 통해 Filter, Index range scan, Table scan, Covering index 등 각 키워드를 하나하나 직접 찾아보았다. → 이해는 아직 잘……
EXPLAIN ANALYZE를 통해 옵티마이저의 예상과 실제 실행 결과가 얼마나 다를 수 있는지 비교할 수 있었다.
ON DELETE CASCADE나 ADD CONSTRAINT 구문에서 구조적인 의존관계를 파악하고 적용하는 것 같았다.
이름 없이도 되는 거 아닐까처럼 혼자 의문을 던지고 질문을 구성했던 흐름이 연습하기에 좋았던 것 같다.
ERD에서 흔히 나오는 관계(1:N, N:M)의 개념과 실체를 정확히 이해하고, 이를 수강신청, 도서 주문, 리뷰 작성 등 다양한 시나리오에 구체적으로 적용해보는 과정을 통해 구조 이해를 넘어 관계형 사고가 무엇일까 고민해보게 됨.
WITH AS (CTE) 활용과 DENSE_RANK()를 조합해 고객별 구매 순서를 정하고이를 통해 재구매 간격 분석까지 흐름을 설계하는 능력이 생김!
윈도우 함수(RANK, DENSE_RANK) 의 동작 원리와 차이를 예제와 함께 익혔고 쿼리에서 이 함수들을 어떻게 활용할 수 있는지도 정리했다.
뷰(View)에 INSERT 할 때 기반 테이블의 제약조건까지 영향을 준다는 점을 배웠고 오류 해결을 위해 기본값을 설정하거나 명시적으로 값을 주는 방식도 함께 익혔다.
DECIMAL(4,1) 의 구조, MODIFY와 ADD CONSTRAINT의 차이, 외래키 제약조건 수정 불가 등의 DDL 관련 규칙과 예외 사항도 체계적으로 정리되었다.
WITH(CTE)와 서브쿼리의 구조적 차이와 장단점도 정리하며 가독성과 유지보수 측면에서 CTE의 유용성을 느꼈다.
외래키 제약조건은 수정 불가능하며 기존 외래키 옵션을 바꾸려면 반드시 DROP 후 ADD를 해야 한다는 점.
함수적 종속성 개념을 이해하고 어떤 속성이 어떻게 결정되는지를 직접 분석해보았다.
고객ID + 도서번호 + 대여일자처럼 복합키 기반 함수적 종속성을 실제 테이블로 풀어보며 부분 종속과 이행 종속의 차이도 이해할 수 있었다.
2정규화(2NF), 3정규화(3NF) 과정을 통해 테이블을 세분화하며 이상현상을 줄이는 과정을 직접 해보았고 ERD에서의 관계선 방향, 기본키/외래키 설정, 대여번호(PK) 도입의 필요성까지 현실적인 설계 감각도 익힐 수 있었다.
반정규화의 개념과 장단점을 예시와 함께 이해하여 정규화와 성능 사이의 딜레마(?)를 고민하게 되었다.
t검정(t-test)의 의미와 적용 방식을 구체적으로 이해했다.
단일표본 t검정에서는 모집단 평균과의 차이를 이표본 t검정에서는 두 집단 평균 간 차이를 검정하는 목적임을 파악했다.
t값은 표본 평균이 기준 평균에서 얼마나 떨어져 있는지를 표준오차 단위로 나타낸 값이고 p값은 이런 정도의 차이가 우연히 나타날 확률이라는 걸 수치적으로 받아들일 수 있었다.
t = 5.331, p = 0.0000604698처럼 구체적인 값으로 해석할 때 표준오차의 5배 이상 차이가 난다면 이는 통계적으로도 실제로도 큰 차이라는 표현이 설득력 있게 다가왔다.
강제 인덱스 사용 시 예상 rows=1이 실제로는 24가 나오는 등 옵티마이저의 판단 오류를 본 사례에서 왜 통계 정보가 잘못됐는지를 구조적으로 해석하긴 어려웠다. → ANALYZE TABLE 보는 연습이 필요함을 느꼈다.
뷰에 INSERT 시 테이블의 제약조건까지 고려하지 못하고 단순히 보이는 구조로만 생각한 점은 실수였다.
COUNT(*) 와 COUNT(DISTINCT ...)의 차이를 처음엔 직관적으로 구분하지 못했고 GROUP BY 이후 컬럼 구조가 바뀐다는 개념을 좀 더 명확히 할 필요가 있을 것 같다.
데이터 타입 자동 변환(BETWEEN '20' AND '29')에 의존하는 습관도 위험할 수 있다는 점을 다시 생각하게 되었다.
개념모델링에서 정의한 관계를 논리모델링으로 풀어내는 과정에서중간에 속성인지 엔티티인지 구분이 애매했던 지점이 몇 번 있었고다중성 표현(1:N, N:M)도 명확하지 않았음.
ERD에서 점선/실선의 의미나 관계를 속성으로 표현하는 방식 vs 별도 관계로 분리하는 방식의 선택 기준이 판단이 어려워 더 실습이 필요하다고 느낌.
p값이 작으면 왜 귀무가설을 기각하는 걸까?
기각하면 무조건 대립가설이 맞다는 뜻일까? 같은 의문이 들었고
그때그때 설명을 다시 읽으면서 조금씩 이해해 나갔다.
t값과 표준오차의 관계도 처음엔 수식적으로만 아는 느낌이었지
실제로 표본 평균이 얼마나 많이 다른지를 생각해보는건 부족했다.
t = 5.3이면 차이 크네라고 받아들이기보단 그냥 숫자로만 봤던 것 같다.
그 차이가 실제로 얼마나 흔치 않은지 얼마나 의미 있는지를 해석하는 능력이 더 필요하다고 느꼈다.