데이터베이스(2) 관계 & KEY & 정규화

InSeok·2023년 1월 17일
0

CS

목록 보기
2/11

관계

  • 1:1 관계
  • 1:N 관계
    • 하나의 entity(table)가 관계를 맺은 entity의 여러 객체를 가질 수 있는 구조를 말합니다.
  • N:M 관계
    • 양쪽 entity 모두가 서로에게 1:N 관계를 갖는 구조를 말합니다. 보통 새로운 table(Mapping table)을 통해서 관계를 맺습니다.
  • 관계 및 데이터 모델링 참조

[DB] 📈 데이터 모델링 개념 & ERD 다이어그램 그리기 💯 총정리

  • 테이블 간의 관계를 좀 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치

종류

  • 기본키(Primary Key)
    • candidate key 중 선택한 main key로써, 각 row를 unique하게 구분하는 column(또는 column의 집합)을 말합니다.
    • 유일성과 최소성을 만족하는 키, Null 값을 가질 수 없다.
    • 기본키는 table당 1개만 지정해야합니다.
  • 외래키(Foreign Key)
    • 다른 테이블의 기본 키를 그대로 참조하는 값으로, 개체와의 관계를 식별하는데 사용
    • 중복가능
  • 후보키(Candidate Key)
    • Super key 중에서 더이상 쪼개질 수 없는 Superkey를 Candidate Key라고 합니다.
    • 기본키가 될 수 있는 후보들이며 유일성과 최소성을 만족하는 키
  • 대체키
    • 후보키가 두개 이상일경우 어느 하나를 기본키로 지정하고 남은 후보키
  • 슈퍼키
    • 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
    • 유일성 : 하나의 key 값으로 특정 row만을 유일하게 찾아낼 수 있어야 합니다.
  • 복합키(composite key)
    • Composite key란 table에서 각 row를 식별할 수 있는 두 개 이상의 column으로 구성된 candidate key를 말합니다.

ERD

  • 시스템 요구사항을 기반으로 작성되며 ERD를 기반으로 DB 구축(설계도 역할)
  • 단점 : 비정형 데이터를 충분히 표현할 수 없다.

비정형 데이터 : 비구조화 데이터, 미리 정의된 데이터 모델이 없거나 미리 정의된 방식으로 정리 되지 않은 정보

정규화

  • 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러개로 분리하는 과정
  • 이상현상
    • 이상 현상은 테이블을 설계할 때 잘못 설계하여 데이터를 변경할때 때 생기는 논리적 오류를 말합니다.
    1. 삽입 이상 : 자료를 삽입할 때 특정 속성에 해당하는 값이 없어 NULL을 입력해야 하는 현상
    2. 갱신 이상 : 중복된 데이터 중 일부만 수정되어 데이터 모순이 일어나는 현상
    3. 삭제 이상 : 어떤 정보를 삭제하면, 의도하지 않은 다른 정보까지 삭제되어버리는 현상
  • 정규형 원칙
    • 자료의 중복성은 감소해야 하고,
    • 독립적인 관계는 별개의 릴레이션으로 표현해야 하며,
    • 각각의 릴레이션은 독립적인 표현이 가능 해야한다.
  • 제1정규형
    • 릴레이션의 모든 도메인이 더 이상 분해 될 수 없는 원자값(atomic value)만으로 구성되어야 한다.
  • 제2정규형
    • 제1정규형을 만족하며, 부분 함수의 종속성을 제거한 형태
    • 부분 함수 종속성 제거
      • 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속적인 것
  • 제3정규형
    • 제3정규형을 만족하고, 기본키가 아닌 모든 속성이 이행적 함수 종속을 만족하지 않는 상태
    • 이행적 함수 종속
      • A → B 와 B → C가 존재하면 논리적으로 A → C 가 성립하는데, 이때 집합 C가 집합 A에 이행적으로 함수 종속 되었다고한다.
  • BCNF 정규형(보이스/코드)
    • 결정자가 후보키가 아닌 함수 종속 관계를 제거하여 릴레이션의 함수 종속 관계에서 모든 결정자가 후보키인 상태
    • 결정자
      • 함수 종속 관계에서 특정 종속자를 결정짓는 요소 X → Y 일때 X가 결정자

역정규화

  • 정규화를 거치면 릴레이션 간의 연산(JOIN 연산)이 많아지는데, 이로인해 성능이 저하될 우려가 있습니다.이에 따라, 성능 문제가 있는(읽기작업이 많이 필요한) DB의 성능을 향상시키기 위해 역정규화를 진행합니다.
profile
백엔드 개발자

0개의 댓글