240129 - 이상현상과 정규화

윤호상·2024년 1월 30일
0

SQL

목록 보기
6/6

자소서에 트랜잭션이 무조건 언급돼야 함.


잘못된 설계로 테이블이 생성되면
데이터 조작 작업시 이상현상이 발생할 수 있다.
이상현상은 데이터의 일관성을 손상시켜 데이터의 무결성을 깨뜨린다.
이 문제를 해결하려면, 속성 간의 함수 종속성을 파악해여 테이블을 규칙에 의해서 분해하는데,
이 과정을 정규화라고 한다.

정규화란 잘못 설계된 테이블을 수정하여 데이터의 일관성과 무결성을 회복하는 프로세스

(중복성과 종속성을 제거(최소화) 데이터의베이스의 효율성과 유지보수의 구조를 개선하고
데이터베이스의 성능 향승을 최적화 하는데 의미가 있다.)

-> 자소서에 들어가면 나이스


  • 함수 종속성의 개념

    어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는의존관계를 ‘속성 B는 속성 A에 종속한다(dependent)’ 혹은 ‘속성 A는 속성 B를 결정한다(determine)’라고 함
    ‘A→B’로 표기하며, A를 B의 결정자라고 함

함수 종속성 다이어그램 ->

함수 종속성을 나타내는 표기법
속성 : 직사각형
속성 간의 함수 종속성 : 화살표
복합 속성 : 직사각형으로 묶어서 그린다.

종속성 관계를 따르고 정규화를 통해 설계 했다 -> 자소서 ++

  • 이상 현상은 한 개의 릴레이션에 두 개 이상의 정보가 포함되어 있을 때 나타남
    기본키가 아니면서 결정자인 속성이 있을 때 발생함

복합키인 경우 하나로만 결정되는 것 -> 부분함수적 종속성
완전히 두개 키에 의해서 결정되는 것 -> 완전함수적 종속성
세 개 이상의 속성이 연결되어서 전이되는 과정 -> 이행함수적 종속성


-- 주요 정규화 형식 제1규형 ~ 제3정규형

제 1 정규형(1NF)
테이블의 각 속성 값은 반복그룹(Repeating Group)이 없는 원자값으로만 구성되도록
중복되는 속성이나 속성그룹을 별도의 테이블로 분리한다.

제 2 정규형(2NF)
1NF를 만족하면서 부분 함수적 종속성을 제거해야 한다.
기본키 속성에 완전 함수적 종속성을 가지도록 테이블을 분할하거나
기본키를 변경하거나 속성간의 종속성을 조정

제 3 정규형(3NF)
2NF를 만족하면서 이행 함수적 종속성을 제거해야 한다.
테이블의 모든 비(Non-key)속성은 기본키에만 종속되어야 하고,
비-키 속성 간에는 종속성이 존재하지 않아야 한다.
비-키 속성 간에 종속성이 존재한다면 테이블 분할해야 한다.

-- 보이스코드정규형(Boyce-codd NF, BCNF)
제 4 정규형(4NF), 제 5 정규형(5NF)

-- 반정규화(Denomalization)
중복 데이터를 하나 이상의 테이블에 추가하는 데이터베이스 최적화 기술 이를 통해 관계형 데이터베이스에서 비용이 많이 드는
조인의 수를 줄일 수 있다. 반정규화는 정규화를 되돌린다거나 정규화되지 않음을 의미하는 것이 아니라, 정규화 후에 적용되는 최적화 기법

장점 : 더 적은 수의 테이블을 사용하면서 조인 개수를 줄일 수 있고,
이로 인해 검색 쿼리가 간단해지고 빠른 일기 작없의 수행으로 검색성능이 업!

단점 : 중복저장으로 더 많은 스토리지가 요구된다. 또한 데이터 불일치가 발생할 수 있으며, 쓰기 작업에 추가적인 비용이 발생할 수 있다.

profile
개발네발

0개의 댓글