-
[CS] DB - 정규화CS 2023. 10. 19. 12:14728x90
정규화란?
이상현상이 있는 릴레이션을 분해해서 이상현상을 없애는 과정이다.
결국에는 데이터들의 무결성을 향상 시키고 중복을 제거하기 위해서 사용한다.
데이터 무결성은 데이터베이스에 저장된 데이터의 정확성, 일관성, 유효성을 지키는 것
이상현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류.정규화의 장,단점
- [ 장점 ] : DB 변경시 이상 현상 제거 가능
- [ 장점 ] : 정규화된 DB 구조에서 새로운 데이터 형 추가해도 구조를 변경하지 않아도 되거나 일부만 변경해도 된다
- [ 단점 ] : JOIN연산이 많아질 수 있다 -> 데이터 처리 속도 느려질 수 있다 -> 성능 저하가 발생하면 반정규화를 적용할 수 있다
전제적인 정규화 흐름
정규화의 흐름 제 1 정규화 (1NF)
테이블 컬럼을 "원자값(하나의값)"을 갖도록 테이블을 분해하는 것이다.
- 각 컬럼이 하나의 속성만을 가져야한다.
- 하나의 컬럼은 같은 종류나 타입(type)의 값을 가져야한다.
- 각 컬럼이 유일한 이름을 가져야한다.
- 칼럼의 순서가 상관없어야한다.
1정규화 제 2 정규화 (2NF)
제1 정규화가 진행된 테이블에 "완전 함수 종속"을 만족하도록 테이블을 분해하는 것이다.
완전 함수 종속 - 기본키의 부분집합이 결정자가 되면 안된다!
결정자 -> 테이블의 한 필드값(A = 결정자)가 다른 필드(B = 종속자)값을 결정하는 관계 : A에 의해 B의 값이 결정된다
2정규화 제 3 정규화 (3NF)
제 2정규화가 진행된 테이블에 이행적 종속을 없애도록 테이블을 분해하는 것이다.
이행적 종속 : A → B, B → C면 A → C가 성립된다.
-> 기본키를 제외한 속성들 간의 이행적 종속이 없어야 한다
3 정규화 기본키인 우편번호에 2개의 테이블이 의존함을 알 수 있다. ( 기본키에 의존하게 해야 한다 )
BCNF
제 3정규화가 진행된 테이블에 모든 결정자가 후보키 집합에 속한 정규형이다.
후보키, 테이블에서 각 행을 유일하게 식별할 수 있는 최소한의 속성들의 집합이다. -> 기본키가 될 수 있는 후보들이며, 유일성과 최소성을 만족해야 한다. [ 유일성 : 하나의 특정 행을 바로 찾을 수 있는 고유한 데이터 속성 ]
슈퍼키, 유일성만 만족하면 된다
대체키, 후보키중 기본키가 아닌 키들분해전 분해후 'CS' 카테고리의 다른 글
[CS] - CORS (0) 2023.10.18 [CS] OAuth2.0 간단한 이해 (0) 2023.03.10 [CS] batch Insert (0) 2023.01.09 [CS] 동적 프록시 (0) 2023.01.07 [CS] 직렬화 (0) 2023.01.07