🤔 잠깐 비정형 데이터란?
비구조화 데이터
미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보
이상 현상을 제거하면서 데이터베이스를 정규형 원칙을 기반으로 올바르게 설계하는 과정
릴레이션 간의 잘못된 종속 관계로 인해 DB 이상 현상을 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정
🤔 잠깐 DB 이상현상?
회원이 갱신 이상 - 한 개의 등급을 가져야 하는데 세 개의 등급을 가짐(데이터 불일치 발생)
삭제 이상 - 삭제할 때 필요한 데이터가 같이 삭제
삽입 이상 - 데이터를 삽입해야 하는데 하나의 필드 값이 null이 되면 안 되어 삽입하기 어려운 현상
정규화된 정도 정규형(NF, Normal Form)으로 표현
EX) 이벤트 번호에 E001, E005, E010이 있는데 이를 나눠서 반복 집합을 제거
EX) 기본키에 완전 함수 종속되지 못한 등급과 할인률(등급, 할인률이 고객아이디에만 종속!!)로 인해 이상현상 발생
→ 기본키인 고객아이디, 이벤트번호와 완전 종속(당첨여부는 고객아이디, 이벤트번호에 완전 종속)된 이벤트 참여 릴레이션과 고객 아이디에 완전종속(등급과 할인율은 고객아이디에 완전 종속)된 고객 릴레이션으로 분류
🤔 잠깐 이행적 함수 종속?
릴레이션을 구성하는 3개의 속성 집합 X, Y, Z에 대해 함수 종속 관계 X → Y와 Y → Z가 존재하면 논리적으로 X → Z가
성립되는데, 이때 Z가 X에 이행적으로 함수 종속되었다고 함
EX) 즉 고객 릴레이션에서 고객아이디 → 등급을 만족하고 등급 → 할인율을 만족하므로 고객아이디 → 할인율이 성립하게 된다. 즉, 모든 속성(등급, 할인율)이 기본키에 종속되지 않도록 분해한다.
고객아이디 → 등급, 등급 → 할인율로 분해!
EX) 즉, 고객아이디와 인터넷 강좌가 기본키인 경우를 가정해보자 만약 한 명의 고객은 같은 강좌를 중복 신청하지 않고 한 명의 강사는 하나의 강좌만 담당한다고 가정해보자 이때, 담당강사번호는 후보키가 아님에도 인터넷 강좌 속성을 결정하게 된다. 후보키가 아닌 결정자를 제거하기 위해 분해해야 한다.!
면접을 위한 CS 스터디
데이터베이스 개론 2판