잘못된 데이터베이스 모델링
데이터의 중복
- 일관성 유지의 어려움
- 저장 공간 낭비
갱신 이상
- 삽입 이상 - 레코드 추가 시불필요한 컬럼의 값이 없이는 추가하지 못 하는 경우
- 삭제 이상 - 삭제 시 의도하지 않았던 다른 데이터가 삭제 되는 경우
- 수정 이상 - 중복 저장된 레코드를 수정 시 모두 반영이 안되어 데이터베이스의 일관성이 깨지는 경우
좋은 릴레이션의 개념
- 컴퓨터 프로그래머적 관점에서의 모델링
→ 어떻게 데이터를 저장해야 하는가?
- 릴레이션의 스키마가 얼마나 효율적으로 실세계를 반영하고 있는지 평가
- 고려사항
→ 한 릴레이션 내의 컬럼 간의 관계 분석
→ 원하지 않는 데이터의 종속과 중복 제거
→ 새로운 컬럼들이 데이터베이스에 추가될 때, 기존 컬럼과의 관계 수정을 최소화
함수적 종속성
함수적 종속성의 정의
- 릴레이션 인스턴스를 분석하여 속성들 간의 연관관계를 표현한 것
- 릴레이션의 효율성을 향상시켜 좋은 릴레이션으로 변환하는데 이용되는 중요한 개념
함수의 종속성의 확장
- 함수적 종속성은 릴레이션의 효율성 여부에 중요한 판단기준
- 릴레이션의 인스턴스 만으로 내재된 모든 함수적 종속성을 찾아내기 어려움
- 판별되지 않은 모든 함수적 종속성을 찾기위해 추론 규칙을 사용하여 함수적 종속성을 확장
- 클로저(closure)
→ 판별된 함수적 종속성 집합으로부터 유추할 수 있는 모든 함수적 종속성 집합
함수적 종속성 추론 규칙
- 암스트롱 공리 (Armstrong’s axiom)
카노니컬 커버
- 함수적 종속성 추론 규칙으로 확장된 클로저에는 자명한 종속성과 중복된 종속성을 포함
- 불필요한 함수적 종속성을 제거한 표준형으로 변환 후 정규화를 수행
- 표준형 조건
→ F의 모든 함수적 종속성의 오른편 속성은 반드시 1개
→ F에서 X → A를 X의 진부분집합 Y에 대하여 Y → A로 교체 했을때, 그 집합이 F와 동등한 집합이 불가능
→ F에서 어떤 함수적 종속성을 제거했을 때, 그 집합이 F와 동등한 집합이 불가능
정규화
정규형
- 이상 현상을 최소화 하도록 특정 조건을 갖춘 릴레이션의 형식
- 정규형의 분류
정규화의 목적
특정 정규형의 조건을 만족하도록 릴레이션과 속성을 재구성하는 과정
- 정규화의 기능
→ 데이터 베이스 내에 모든 릴레이션을 효과적으로 표현
→ 보다 간단한 관계 연선에 기초하여 검색 알고리즘을 효과적으로 작성할 수있도록 지원
→ 바람직하지 않은 삽입, 수정, 삭제 등의 이상 발생 방지
→ 새로운 형태의 데이터가 삽입 될 때 릴레이션 재구성의 필요성을 축소
제 1 정규형
- 가장 조건이 단순한 정규형
- 관계형 모델에 조건에 따라 자동 적용 되는 정규형 ( 함수적 종속성 x)
→ 릴레이션 스키마에서 정의된 모든 속성의 도메인이 원자값을 갖는 상태
제 1정규화가 필요한 릴레이션
번호 | 오픈 | 마감 | 목적 |
A-01 | 09:00,11:00 | 10:15,11:45 | 테스트 |
A-02 | 10:00,12:00 | 11:00,13:00 | 배포 |
→ 09:00 , 11:00 같이 원자 값을 갖지 않는 속성이 있으면 안된다.
제 1 정규화를 적용한 릴레이션
번호 | 오픈 | 마감 | 목적 |
A-01 | 09:00 | 10:15 | 테스트 |
A-01 | 11:00 | 11:45 | 테스트 |
A-02 | 10:00 | 11:00 | 배포 |
A-02 | 12:00 | 13:00 | 배포 |
→ 원자 값을 갖는 속성 제 1 정규형에 조건 충족
함수적 종속성 판별
임의의 릴레이션 스키마 R의 인스턴스 r(R)에 포함되는 서로 다른 . 두레코드 t1 , t2 와 속성 집합 X와 Y에 대해, t1[X] = t2[X] 일 때, t1[Y] = t2[Y] 이면 함수적 종속성 X→Y가 성립한다.
번호 | 오픈 | 마감 | 목적 | 관리자 |
A-01 | 09:00 | 10:15 | 테스트 | 관리자1 |
A-01 | 11:00 | 11:45 | 테스트 | 관리자1 |
A-02 | 10:00 | 11:00 | 배포 | 관리자2 |
A-02 | 12:00 | 13:00 | 배포 | 관리자2 |
함수적 종속성 다이어그램(FDD)
- 릴레이션 내의 속성간의 종속 관계를 직관적이고 이해하기 쉽게 도식화 한 표현 방식
→ 직사각형 : 속성 또는 속성 집합
→ 화살표 : 함수적 종속성
[ 목적 ] ——> [ 번호 ]
결정자 ——> 종속자
제 2 정규형의 정의
릴레이션이 제1 젱규형을 만족하고 기본키의 부분집합이 특정 속성을 종속하고 있지 않은 상태
→ 주어진 릴레이션의 인스턴스가 기본키가 아닌 속성들이 기본키에 완전히 종속되어 있는 상태
제2 정규형의 적용
관리자는 번호에게 완전히 종속이 되지 않은 상태라 중복이 될 수 있음.
→ 기본키에 완전히 종속되도록 릴레이션을 분해를 해야한다.
릴레이션의 무손실 분해
- 무손실 분해(lossless decomposition)
→ 스키마 R에 함수적 종속성 X→Y가 존재하고, X 와 Y가 같은 컬럼을 공유하지 않으면 R을 R - Y 와 XY로 분해
- 도크 관리 릴레이션 무손실 분해
- {번호} → {관리자}
- {번호} (공집합) {관리자} = (중복X)
→ 릴레이션1 - {번호} , {번호 , 관리자} 로 분해 를 할 . 수있다.
제2 정규화의 적용
릴레이션 1
번호 | 오픈 | 마감 | 목적 |
A-01 | 09:00 | 10:15 | 테스트 |
A-01 | 11:00 | 11:45 | 테스트 |
A-02 | 10:00 | 11:00 | 배포 |
A-02 | 12:00 | 13:00 | 배포 |
관리자 릴레이션
번호 | 관리자 |
A-01 | 관리자1 |
A-02 | 관리자2 |
제3 정규화의 정의
번호 | 오픈 | 마감 | 목적 | 관리자 | 담당자 |
A-01 | 09:00 | 10:15 | 테스트 | 관리자1 | A |
A-01 | 11:00 | 11:45 | 테스트 | 관리자1 | A |
A-02 | 10:00 | 11:00 | 배포 | 관리자2 | B |
A-02 | 12:00 | 13:00 | 배포 | 관리자2 | B |
→ 릴레이션이 제2 정규형을 만족하고, 기본키가 아닌 속성들이 어떤 키에도 이행적으로 종속되지 않은 상태
- 이행적 종속성
X → Y 이고 Y → Z 이면 X → Z 이다.
제 3 정규화의 적용
릴레이션 1
번호 | 오픈 | 마감 | 목적 |
A-01 | 09:00 | 10:15 | 테스트 |
A-01 | 11:00 | 11:45 | 테스트 |
A-02 | 10:00 | 11:00 | 배포 |
A-02 | 12:00 | 13:00 | 배포 |
담당자 릴레이션
목적 | 담당자 |
테스트 | A |
배포 | B |
BC 정규형의 정의
릴레이션이 제3 정규형을 만족하고, 릴레이션에 성립하는 X→Y 형태의 모든 함수적 종속성에 대하여 X가 수퍼키 인 상태
BC 정규화의 적용
릴레이션 1
목적 | 오픈 | 마감 |
테스트 | 09:00 | 10:15 |
테스트 | 11:00 | 11:45 |
배포 | 10:00 | 11:00 |
배포 | 12:00 | 13:00 |
번호 릴레이션
목적 | 번호 |
테스트 | A-01 |
배포 | A-02 |
담당자 릴레이션
목적 | 담당자 |
테스트 | A |
배포 | B |
관리자 릴레이션
번호 | 관리자 |
A-01 | 관리자1 |
A-02 | 관리자2 |
역정규화의 개념
- 정규화
→ 릴레이션 분할을 통해 데이터의 중복성을 최소화 하는 과정
→ 사용 과정에서 많은 조인 연산을 유발
- 역정규화
→ 정규화의 반대 과정
→ 정규화를 통해 분리되었던 릴레이션을 통합하는 재조정을 수행 하고, 정보의 부분적 중복을 허용하는 기법
→ 데이터 접근 성능 개선 목적
- 정규화 되지 않은 스키마와 역정규화 스키마는 구별이 가능
'KNOU > 요약정리' 카테고리의 다른 글
[데이터베이스시스템] 인덱싱 (0) | 2024.05.25 |
---|---|
[데이터베이스시스템] 데이터 저장과 파일 (0) | 2024.05.25 |
[데이터베이스시스템] SQL(3) (0) | 2024.05.25 |
[데이터베이스시스템] SQL(2) (0) | 2024.05.25 |
[데이터베이스시스템] SQL(1) (0) | 2024.05.25 |
댓글