데이터베이스(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개의 댓글

관련 채용 정보