[CS] ERD와 정규화 과정

현톨·2023년 2월 11일
0

CS

목록 보기
1/6

ERD란 무엇일까?

ERD ( Entity Relationship Diagram )
데이터베이스를 구축할 때, 가장 기초적인 뼈대 역할이며, 테이블간의 관계들을 설명해주는 다이어그램이다.
이를 통해 DB의 구조를 한 눈에 파악할 수 있다.

한 때 ICT 멘토링에 참여하면서 백엔드 팀원들이 작성한 ERD를 예시로 첨부 해보았다.
(이 때 당시엔 ERD가 뭔지 몰랐는데 이제서야 알게 되었다.)

시스템의 요구 사항을 기반으로 ERD를 작성하고, 이 ERD를 기반으로 데이터베이스를 구축한다.
구축하고 난 이후에도 디버깅이나 비즈니스 프로세스를 재설계 할 때에도 중요한 설계도가 되어준다.

단, 비정형 데이터는 충분히 표현할 수는 없다.

정규화란?

관계형 데이터베이스를 설계할 때, 중복을 최소화하도록 구조화시키는 작업을 정규화라고 한다.

정규화는 데이터베이스의 이상 현상을 해소하는 것에 목적을 가진다.

이 때, 이상 현상이란 테이블 내에서 갱신, 삽입 삭제 시 의도치 않은 부작용이 생길 수 있는 현상을 말한다.

  • 갱신 이상: 같아야하는 정보가 복수개의 행에서 표현되는 것

    519 사번을 가진 사원의 보유 스킬이 2개이기에 2개행으로 표현 된 경우,
    해당 사원의 주소를 변경하면 2개 다 변경되지 않고 한개의 행만 변경이 되는 경우
  • 삽입 이상: 데이터를 삽입할 때, 하나의 필드값이 NULL이면 삽입할 수 없는 현상

해당 교수가 맡은 강의가 없으면 교육 코드가 NULL이므로, NULL 비허용 컬럼에 추가할 수 없다.

  • 삭제 이상: 어떠한 데이터를 삭제할 때, 삭제 되면 안되는 데이터가 함께 삭제되는 현상

Giddens 교수가 ENG-206 수업을 중단하여 해당 수업 코드를 삭제하면, 그의 교수 정보 전체가 삭제되는 경우

위와 같은 문제들을 해결하기 위한 정규화에는 정규화된 정도에 따라 제1정규형, 제2정규형, 제3정규형, 보이스/코드 정규형이 있고, 고급 정규형인 제4, 제5 정규형이 있다.

정규형의 원칙

  • 더 좋은 구조
  • 자료의 중복성 감소
  • 독립적인 관계는 별개의 릴레이션으로 표현
  • 각각의 릴레이션은 독립적인 표현 가능

제 1 정규형

릴레이션의 속하는 속성의 값이 모두 원자 값(atomic value)으로만 구성되어야 한다.
즉, 한개의 기본 키에 대해 두개 이상의 값을 가지는 반복 집합이 있어선 안된다.

하나의 칸엔 하나의 데이터만 보관한다

위와 같이 하나의 컬럼에 두개 이상의 값이 들어있는 경우, 아래와 같이 분리해준다.

제 2 정규형

제 1 정규형이면서, 기본키가 아닌 모든 속성이 기본 키에 완전 함수 종족인 정규형을 말한다.

완전 함수 종속 참고 문헌

현재 테이블의 주제와 관련없는 컬럼을 다른 테이블로 빼는 작업

아 이게 아닌데... 모르겠다 일단 패스

profile
기록하는 습관 들이기

0개의 댓글