SQLD: 데이터 모델링의 이해 #2

임동혁 Ldhbenecia·2024년 8월 4일

DataBase

목록 보기
6/15
post-thumbnail

SQLD 학습을 진행하며 기억할 내용을 간략히 기록합니다.
용어로 Entity(엔티티)를 엔터티라고 발음하지만 엔티티로 정리합니다.

데이터 모델링

정규화

정규화는 논리 데이터 모델 상세화 과정의 대표적인 활동이다.
논리 데이터 모델의 일관성을 확보하고 중복을 제거하여 속성들이 가장 적절한 엔티티에 배치되도록 함으로써 더 신뢰성 있는 데이터구조를 얻는데 목적 을 둔다.

제1정규형(1NF):

  • 콜럼에 의한 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배
  • 모든 인스턴스는 반드시 하나의 값을 가져야 함

제2정규형(2NF):

  • 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블 분해
    -> 부분 함수 종속 제거
  • 엔티티의 일반 속성은 주식별자에 함수 종속
  • PK가 2개 이상일 때 발생하며 PK의 일부와 종속되는 관계가 있다면 분리
    -> PK와 부분 함수 종속성을 갖는 컬럼을 각각 다른 테이블로 분해

제3정규형(3NF):

  • 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블 분해
  • 이행적 종속성: A->B, B->C의 관계 성립 시 A->C가 성립되는 것을 말함
    -> (A, B)와 (B, C)로 분리하는 것
  • 기본 키에 속하지 않은 속성 모두가 기본 키에 이행적함수 종속이 아닐 때
  • 만족하는 엔티티의 일반속성은 주식별자 전체에 종속적

정규화 수행 시 조회 성능은 보장 받지 않는다.
성능이 느려졌다면 반 정규화를 고려해야 한다.

모든 반복 속성에 인덱스를 생성하면 검색 속도는 좋아질 수 있겠지만 너무 많은 인덱스 때문에 입력, 수정, 삭제의 성능이 저하된다.

정규화를 수행하면 일반적으로 검색 작업의 성능이 저하된다. (조인을 해야하므로)

NULL

NULL은 공백 문자 혹은 숫자 0과 동일하지 않는다.
모르는 값을 의미한다.
값의 부재를 의미한다.
NULL과의 모든 비교(IS NULL 제외)는 알 수 없음을 반환한다.
NULL 값과 어떤 숫자를 비교한 결과는 항상 알 수 없음(Unknown)이다.
"NULL = NULL" 연산의 결과는 FALSE 또는 Unknown이다.
집계 함수를 계산할 때 NULL의 값은 0이 아니라 계산에서 제외된다.

식별자

본질 식별자: 업무에 의해 만들어지는 식별자
인조 식별자: 인위적으로 만든 식별자

주식별자: 자식의 주식별자로 부모의 주식별자 상속
비식별자: 부모 속성으리 자식의 일반 속성으로 사용

함수적 종속성: 데이터들이 어떤 기준 값에 의해 종속되는 현상

0개의 댓글