일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 아키텍처 패턴
- 데이터 입출력
- 브로커 패턴
- baekjoon
- 동적 모델링
- 메타 데이터
- 클라이언트 서버 패턴
- 정보 은닉
- 기능 모델링
- 요구사항 분석
- 언리얼엔진5
- UML 다이어그램
- 단계적 분해
- 언리얼엔진 함수
- C++
- UnrealEngine
- Unreal Engint4
- 마스터 슬레이브 패턴
- DBMS
- 요구사항 확인
- 정처기
- UnrealEngine5
- 정보처리기사 실기
- 정보처리기사
- 데이터베이스
- UML
- 백준
- 파이프 필터 패턴
- 알고리즘 문제
- 팬아웃
- Today
- Total
게임 개발자를 향해
이상 / 함수적 종속 본문
1. 이상 (Anomaly)
- 이상이란 테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복(Redundancy)으로 인해 테이블 조작시 문제가 발생하는 현상을 의미한다.
- 이상의 종류에는 테이블 조작 중에 발생하는 삽입 이상(Insertion Anomaly), 삭제 이상(Deletion Anomaly), 갱신 이상(Update Anomaly) 이 있다.
<수강 릴레이션>
학번 | 과목번호 | 성적 | 학년 |
100 | C413 | A | 4 |
100 | E412 | A | 4 |
200 | C123 | B | 3 |
300 | C312 | A | 1 |
300 | C324 | C | 1 |
400 | C123 | A | 4 |
400 | C312 | A | 4 |
400 | C324 | A | 4 |
400 | C413 | B | 4 |
400 | E412 | C | 4 |
500 | C312 | B | 2 |
1. 삽입 이상(Insertion Anomaly) : 테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상이다.
2. 삭제 이상(Deletion Anomaly) : 테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는, 즉 연쇄 삭제가 발생하는 현상이다.
3. 갱신 이상(Update Anomaly) : 테이블에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성(Inconsistency)이 생기는 현상이다.
<여기서 Tip!>
무조건 외워라.
2. 함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성 집합의 부분 집합이하 하자. 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고 X → Y로 표기한다.
- 함수적 종속은 데이터의 의미를 표현하는 것으로, 현실세계를 표현하는 제약조건이 되는 동시에 데이터베이스에서 항상 유지되어야 할 조건이다.
- X → Y의 관계를 갖는 속성에서 X는 결정자(Determination)라 하고, Y를 종속자(Dependent)라고 한다.
<학생>
학번 | 이름 | 학년 | 학과 |
400 | 이순신 | 4 | 컴공과 |
422 | 유관순 | 4 | 물리학과 |
301 | 강감찬 | 3 | 수학과 |
320 | 김뿌단 | 3 | 체육과 |
학생 릴레이션은 학번이 기본키이다.
그렇다면 이름, 학년, 학과 속성은 학번 속성에 함수적 종속이라고 한다.
<표시 예1>
학번 → 이름
학번 → 학년
학번 → 학과
<표시 예2>
학번 → 이름, 학년, 학과
<수강>
학번 | 과목번호 | 성적 | 학년 |
100 | C413 | A | 4 |
100 | E412 | A | 4 |
200 | C123 | B | 3 |
300 | C312 | A | 1 |
300 | C324 | C | 1 |
400 | C123 | A | 4 |
400 | C312 | A | 4 |
400 | C324 | A | 4 |
400 | C413 | B | 4 |
400 | E412 | C | 4 |
500 | C312 | B | 2 |
수강 테이블의 속성 중 성적은 (학번, 과목번호)에 의해 값이 정해진다.
이를 완전 함수적 종속(Full Functional Dependency)이라고 한다.
수강 테이블의 속성 중 학년은 (학번, 과목번호)에 의해 값이 정해지지 않는다.
이를 부분 함수적 종속 (Partial Functional Dependency)이라 한다.
<표시>
학번, 과목번호 → 성적
학번 → 학년
<여기서 Tip!>
이게 무슨말이냐 하면, 일단 이 수강 테이블의 키는 [학번], [과목번호] 두 속성으로 만든 것이다.
이 테이블은 단순 예시이며 엄밀히 따지면 최소성에 반하기 때문에 기본키 선택을 잘못 한 테이블이다.
이 개념은 다음 챕터에서 다루기 때문에 넘어가겠다.
일단 학번과 과목번호에 의해 값이 정해진다는 것은 아래와 같다.
학번을 가진 사람 A가 하나의 과목의 시험을 치렀는데 두 개의 점수가 나올 수 있을까? 한 사람은 한 과목에 하나의 점수만 받을 수 있으므로 말이 안된다.
결론적으로 A의 학번과 A가 수강한 과목이 점수의 속성값을 결정한다는 것이다.덧붙이자면 학번 값과 과목 값이 같으면 점수 값도 같아야 한다는 말이다. 이를 [점수]는 [학번], [과목번호]에 완전 함수적 종속이라고 표현한다.
반대로 학번을 가진 사람 A와, A가 수강한 과목이 A의 학년을 결정할 수 있을까?과목과 학년은 전혀 상관이 없으므로 말이 안된다.
그럼 학번만이 A의 학년을 결정할 수 있을까?그건 가능하다.
결론적으로 [학번]이 A의 학년을 결정할수 있을 뿐이지, [학번], [과목번호] 두 속성이 학년을 결정하지 않는 것이다.
이를 [학년]은 [학번], [과목번호]에 부분 함수 종속이라고 표현하는 것이다.
이 개념을 배우는 이유는 부분함수적 종속은 테이블을 설계할 때 없애야 하는 요소이기 때문이다.
다음 챕터 정규화에서 부분함수적 종속을 없애는 과정 그리고 또다른 정규화를 배울 것이다.

읽어주셔서 감사합니다!
정처기 화이팅!
'정보처리기사 > 2. 데이터 입출력 구현' 카테고리의 다른 글
반정규화(Denormalization) (0) | 2022.09.08 |
---|---|
정규화(Nomalization) (0) | 2022.09.06 |
관계대수 및 관계해석 (0) | 2022.09.05 |
관계형 데이터베이스의 제약조건 - 무결성(Integrity) (0) | 2022.09.05 |
관계형 데이터베이스의 제약 조건 - 키(Key) (0) | 2022.09.05 |