1NF 위반
한 셀에
여러 과목
을 넣으면 값이 아니라 문자열 덩어리가 됩니다
1NF의 핵심은 셀 하나가 하나의 값만 가지는 것입니다. `DB, 알고리즘`처럼 묶어 저장하면 검색, 수정, 확장이 모두 문자열 처리 문제로 바뀝니다.
문제가 시작되는 지점
수강과목 셀 하나에 2개 값
학번
이름
수강과목
1001
김철수
DB
알고리즘
한 셀 안에 값이 2개라서 원자값이 아님
1002
이영희
DB
검색 시도
WHERE 수강과목 = 'DB'
→
실제 결과
1002만 일치, 1001은 빠짐
1001의 값은 `DB`가 아니라 `DB, 알고리즘` 전체 문자열이기 때문에 정확 비교가 실패합니다.
운영상 바로 생기는 문제
검색 외 부작용
과목 추가·삭제가 문자열 파싱이 됨
`DB, 알고리즘`에서 과목 하나만 넣거나 빼려면 값을 분해하고 다시 조합해야 합니다. 데이터 조작이 집합 연산이 아니라 문자열 편집이 됩니다.
수강 과목이 늘수록 셀만 길어짐
과목 수는 행으로 늘어나야 자연스럽습니다. 하지만 다중 값 저장은 한 칸 안에 계속 붙여 쓰게 만들어 구조가 확장되지 않습니다.
요점:
다중 값 저장은 관계형 테이블을 검색 가능한 값의 집합이 아니라 해석이 필요한 문자열 묶음으로 바꿉니다.