키워드 | 개념 | 팁/포인트 | |
21 | 정규화 (Normalization) | 중복 제거 + 이상(Anomaly) 방지를 위한 데이터 구조 정리 | 1NF → 2NF → 3NF → BCNF 흐름 기억 이상 해결의 핵심 도구 |
22 | 반정규화 (Denormalization) | 성능 향상을 위해 정규화된 테이블을 합치거나 중복 허용 | JOIN 줄이고 조회 빠르게, 성능이 우선일 땐 고려 |
23 | 트랜잭션 (Transaction) | DB 상태 변화의 논리적 단위, ACID 특성 필수 | A.C.I.D = 원자성/일관성/고립성/지속성 → 실기 자주 출제! |
24 | Commit & Rollback | Commit: 저장 / Rollback: 되돌리기 | “Ctrl+S vs Ctrl+Z”처럼 외우면 쉽다 |
25 | 인덱스 (Index) | 데이터 검색을 빠르게 하는 목차 구조 | 삽입·수정 시 성능 저하 주의, 클러스터드/넌클러스터드 구분 |
26 | JUnit | Java 단위 테스트 프레임워크, 테스트 자동화 지원 | 자바는 JUnit 파이썬은 pytest 자바스크립트는 Jest 기억 |
27 | NUI (Natural User Interface) | 음성·터치·제스처 등 자연스러운 방식의 인터페이스 | CLI/GUI/NUI 비교 NUI는 “No UI 같은 자연스러움” |
28 | UX (User Experience) | 사용자가 느끼는 시스템의 총체적 경험과 감정 | UI는 “겉”, UX는 “느낌” 접근성과 만족도 중심 |
29 | 살충제 패러독스 | 같은 테스트 반복 시 더 이상 오류 안 나오는 현상 | 테스트 케이스 주기적 변경 필수 |
30 | 경계값 분석 | 입력 값의 최대/최소값 근처를 중심으로 테스트하는 기법 | “실수는 경계에서 터진다” 동치분할과 차이: 테두리만 집중 |
21. 정규화(Normalization)
- 정의
데이터의 중복을 제거하고 **이상(Anomaly)**을 방지하기 위한 데이터 구조 개선 과정. - 주요 단계
- 1NF: 원자값만 허용 (반복 속성 제거)
- 2NF: 부분 함수 종속 제거
- 3NF: 이행 함수 종속 제거
- BCNF: 결정자가 후보키가 되도록
- 비교 개념
- 정규화는 데이터 무결성 중심
- 반정규화는 성능 중심
- 정규화는 데이터 정리정돈.
반복 → 부분 → 이행으로 가는 단계 기억!
22. 반정규화(Denormalization)
- 정의
성능 향상을 위해 정규화된 테이블을 다시 합치거나 중복을 허용하는 것. - 목적
- 조회 성능 향상
- JOIN 횟수 감소
- 사용 예
- 자주 조인되는 테이블 통합
- 검색용 컬럼 추가
- 반정규화 = 정규화를 되돌리는 것
성능이 우선이면 반정규화 고려!
23. 트랜잭션(Transaction)
- 정의
데이터베이스의 상태를 변화시키기 위한 작업의 논리적 단위 - ACID 특성
- 원자성(Atomicity)
- 일관성(Consistency)
- 고립성(Isolation)
- 지속성(Durability)
- "트랜잭션은 A.C.I.D하게!"
네 가지 특성을 무조건 외워야 실기 주관식에 강해짐
24. Commit & Rollback
- Commit
트랜잭션을 성공적으로 마쳐 DB에 영구 반영 - Rollback
트랜잭션 중 오류 발생 시 변경 내용 되돌림 - Commit → 저장
Rollback → 되돌리기
“Ctrl+S vs Ctrl+Z”처럼 기억하기
25. 인덱스(Index)
- 정의
데이터 검색 속도를 높이기 위한 목차 역할의 객체 - 종류
- 클러스터드 인덱스 (기본 정렬 기준)
- 넌클러스터드 인덱스 (별도 저장)
- 주의사항
삽입·수정 시 오히려 성능 저하 우려 있음 - 인덱스 = “책의 목차”
빠르게 찾지만 관리 비용이 든다
26. JUnit
- 정의
자바 기반의 단위 테스트 프레임워크로 Kent Beck과 Erich Gamma가 개발 - 특징
테스트 자동화, 반복 가능
@Test, assertEquals 등 어노테이션 사용 - 비교 개념
- 정적 분석은 코드 실행 X
- JUnit은 코드 실행 O
- 자바 테스트는 “JUnit”
Python은 “pytest”, JavaScript는 “Jest”
27. NUI(Natural User Interface)
- 정의
사람의 자연스러운 동작이나 음성을 이용한 인터페이스 - 예시
음성 인식(Siri), 터치, 제스처 인식 등 - 비교 개념
- CLI: 명령어 입력
- GUI: 마우스, 메뉴
- NUI: 음성·제스처 등 자연스럽게
- NUI = “No UI 같지만 UI”
자연스러움이 핵심
28. UX(User Experience)
- 정의
사용자가 시스템을 사용할 때 느끼는 총체적 감정과 경험 - 목표
- 사용성, 접근성, 만족도 개선
- 비교 개념
- UI는 보이는 인터페이스
- UX는 느끼는 경험
- UI는 “겉모습”, UX는 “느낌”
29. 살충제 패러독스(Pesticide Paradox)
- 정의
동일한 테스트 케이스로 반복 테스트하면 더 이상 결함을 찾지 못하는 현상 - 해결법
테스트 케이스 지속적 갱신 필요 - 테스트도 다양화 필수
30. 경계값 분석(Boundary Value Analysis)
- 정의
입력 값의 경계값(최대/최소)에 오류가 집중되기 때문에 그 주변 값 중심으로 테스트 - 예시
나이 입력: 1~100 → 0, 1, 100, 101 등으로 테스트 - 비교 개념
- 동치 분할: 범위 내 대표값 중심
- 경계값 분석: 범위의 경계값 중심