함수적 종속성
0.함수적 종속성
1)릴레이션(Relation)의 속성(Attribute)들 사이의 관계 표현,
주로 기본키(primary key)와 다른 non key 속성들 사이의 관계 표현
-결정자(Determinant)라고도 함.
2)함수적 종속성의 분석을 통해 정규화를 실행한다!!
3)함수 : 입력 X의 경우 반드시 1개의 출력 Y 결정
-예) 통화(달러) --> 환율
사원아이디 --> 사원명
주민등록번호 --> 성명
학번 --> 소속학과
정규화
1.정규화(Normalization)의 개념
1)관계형 데이터베이스의 설계에서 데이터 중복을 최소화하게 구조화하는 프로세스
2)함수적 종속성을 이용해서 연관성있는 속성들을 분류하고
각 릴레이션에서 이상 현상이 생기지 않도록 하는 과정
3)함수적 종속성(FD) 등과 같은 이론에 근거하여 관계형 데이터베이스의 테이블의
삽입, 삭제, 갱신, 이상(anomaly)현상 발생을 최소화하기 위해 좀더 작은 단위의 테이블로 설계하는 과정
-조회 => 처리 조건에 따라 성능 향상 or 성능 저하
-입력/수정/삭제 => 무조건 성능 향상
2.정규화의 목적
1)불필요한 데이터를 제거, 데이터 중복을 최소화
2)무결성 제약조건의 시행을 간단하게 하기 위해
3)이상(anomaly)현상을 방지하기 위해 테이블 구성을 논리적으로 직관적으로 만들기 위해
-삭제 이상(deletion anomaly) : 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제되는 경우
4)이상 현상이 발생하는 원인
-관련없는 속성들을 다 모아서 하나의 릴레이션으로 만들었기 때문에.
-정규화를 통해 릴레이션을 관련이 있는 속성들로만 구성되는 작은 여러 개의
릴레이션으로 분해해야함.
-속성들간의 관련성 판단 : 함수적 종속성
=>하나의 릴레이션에는 하나의 함수적 종속성만 존재하도록 정규화 필요.
3.정규화 효과 및 장점
1)상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념(엔티티,테이블)으로
정의를 하게됨에 따라 high cohesion & loose coupling 원칙에 충실해짐.
2)non key 데이터 요소의 중복이 최소화됨.
정규형, 제1 ~ 3 정규화(형)
4.정규형(NF : Normal Form)
-정규화 결과에 의해 도출된 데이터 모델
5.1NF (First Normal Form, 제 1정규화)
1)릴레이션에 속한 속성들은 원자값(atomic value, 하나의 값)을 가져야 한다.
2)복수의 속성값을 갖는 속성들을 분리.
3)속성의 원자값 확보
7. 2NF(Second Normal Form, 제 2 정규화,제 2 정규형)
1)1NF를 만족하고 모든 Non-key 컬럼은 기본키 전체에 종속되어야 함.
2)기본키에 종속적이지 않거나 기본키 일부 컬럼(들)에만 종속적인 컬럼은 분리되어야 함.
3)함수적 종속성(Functional Dependency)분석 (예)
-주문 일자는 고객 아이디와 주문 순번으로 결정됨.
=>기본키를 구성하는 속성(열,컬럼)전부에 함수 종속이 존재함.
-고객명 : 고객아이디로만 결정됨.
=>부분 함수 종속됨.
기본키를 구성하는 열의 일부에만 함수 종속이 존재함.(제2정규화 위반)
-고객등급 : 고객아이디로만 결정됨.
=>부분 함수 종속됨.
기본키를 구성하는 열의 일부에만 함수 종속이 존재함.(제2정규화 위반)
8. 3NF(Third Normal Form,제 3 정규화,제 3 정규형)
1)제 2정규형을 만족하고 일반 속성들간에도 종속 관계가 존재하지 않아야함.
2)일반 속성들간 종속관계가 존재하는 것들은 분리되어야함.
3)함수적 종속성(Functional Dependency)분석 (예)
-고객명은 고객아이디로 결정됨
=>부분 함수 종속 아님. 함수 종속이 존재함.
-나이는 고객아이디로 결정됨.
=>부분 함수 종속 아님. 함수 종속이 존재함.
-직업명은 직업코드로 결정됨.
=>일반 속성(컬럼)인 직업코드에 함수 종속이 존재함.(제3정규형 위반)
9. 제 4,5 정규형
1)실무에서 거의 쓰이지 않음.
2)제 3정규형까지만 이해하면 된다.
'📒 education archive > 💾DB' 카테고리의 다른 글
[국비학원 기록/DB 미니 프로젝트] 데이터 모델링 실습 02. 사원, 부서, 자격증, 급여 테이블 생성, 명령 프롬포트 테이블 데이터 삽입하는 방법 (0) | 2021.11.18 |
---|---|
[국비학원 기록/DB 미니 프로젝트] DA#5 활용한 데이터 모델링 실습 01. (0) | 2021.11.18 |
[국비학원 기록/DB] 데이터베이스 설계01. DB 설계 단계, 개념적 설계, 논리적 설계 (0) | 2021.11.17 |
[국비학원 기록/DB] JOIN - 내부조인, 외부조인 (0) | 2021.11.12 |
[국비학원 기록/DB] SQL 내장 함수(숫자, 문자, 날짜, 시간) (0) | 2021.11.11 |