이상현상 종류
• 삭제 이상: 투플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 -> 연쇄 삭제 문제 발생
• 삽입 이상: 투플 삽입 시 특정 속성에 해당하는 값이 없어 null 값을 입력해야하는 현상 -> null 값 문제 발생
• 수정 이상: 수정 시 중복된 데이터의 일부만 수정되어 데이터의 불일치 문제가 일어나는 현상 -> 불일치문제발생
정규화 목적
정규화는 데이터 구조의 안정성 최대화, 데이터 수정, 삭제 시 이상 현상 최소화, 데이터 불일치 위험 최소화를 위해 필요하다. 정규화의 목적은 하나의 릴레이션에 통합된 종속성을 각 릴레이션으로 분산시키는 것이다. 정규화를 거치지 않으면 여러 가지 상이한 종류의 정보가 하나의 릴레이션에 표현되기 때문에 릴레이션을 조작할 때 이상현상이 발생할 수 있다. 이상 현상은 속성 간에 존재하는 함수 종속성이 원인이다.
종속성 화살표 표기
속성 A의 값을 알면 속성 B의 값이 유일하게 정해지는 의존관계를 ‘A->B’, ‘B는 A에 종속한다.’ A = B의 결정자
릴레이션의 속성은 직사각형, 속성 간 함수 종속성은 화살표, 복합 속성은 속성들을 직사각형으로 묶어서 그린다.
함수 종속성 규칙(functional dependency rule)
X, Y, Z가 릴레이션 R에 포함된 속성의 집합이라고 할 때, 함수 종속성에 관한 다음과 같은 규칙이 성립
• 부분집합 규칙 : if Y ⊆ X, then X → Y //(학과, 주소) → 학과
• 증가 규칙 : If X → Y, then XZ → YZ //(학생번호, 강좌이름) → (학생이름, 강좌이름)
• 이행 규칙 : If X → Y and Y → Z, then X → Z //학생번호 → 학과사무실
위 세 가지 규칙으로부터 부가적으로 다음의 규칙을 얻을 수 있음
• 결합 규칙 : If X → Y and X → Z, then X → YZ //학생번호 → (학생이름, 주소)
• 분해 규칙 : If X → YZ, then X → Y and X → Z //학생번호 → 학생이름, 학생번호 → 주소
• 유사이행 규칙 : If X → Y and WY → Z, then WX → Z //강좌이름, 학생이름) → 성적
(증가 규칙에 의해 if X - >Y, then WX -> WY가 숨어있음 )
-기본키는 릴레이션의 모든 속성에 대해 결정자임
예) 이름이 같은 학생이 없다고 가정하면, ‘이름 → 학과, 이름 → 주소, 이름 → 취득학점’이므로 ‘이름 → 이름, 학과, 주소, 취득학점’이 성립한다. 즉 이름 속성이 학생 릴레이션의 전체를 결정함.
- 이상현상은 기본키가 아니면서 결정자인 속성이 있을 때 발생한다. 이단으로 뻗어지는 애들을 분리시키면 해결가능
'데이터베이스 DB' 카테고리의 다른 글
SQL Indexing은 왜 필요할까? 어떻게 빨라지는 걸까? (0) | 2024.12.16 |
---|---|
SQL TUNING : Soft Parsing, Hard Parsing (0) | 2024.12.16 |
DB에서 트랜잭션 정의하는 이유, 트랜잭션의 ACID 성질 (0) | 2021.03.03 |
식별자/부분키 (0) | 2021.03.03 |
인덱스 장단점, 클러스터형 인덱스, 인덱스 고려사항/주의점 (0) | 2021.03.03 |
댓글