DATABASE 설계

류장원·2024년 8월 30일
post-thumbnail

📗 본문 내용

1. 외래키(foreign key)

✅ FK 정의

  • 데이터가 일관될 수 있도록 돕는 역할. 보통 두 개의 데이터베이스 테이블을 잇고자 기본키와 함꼐 사용된다.
  • 일종의 테이블을 연결하는 가상의 다리 역할

✅ FK 특징

  1. 외부 키는 한 테이블의 필드이다.
  2. 외래 키를 가지고 있는 테이블을 하위 테이블, 기본 키를 가지고 있는 테이블을 참조 테이블 또는 상위 테이블이라 한다.
  3. 각 외부 키와 기본 키는 1:1 관계로 매칭되어야 한다.

2. 기본키(Primary key)

✅ PK 정의

  • 데이터베이스 테이블 내의 모든 레코드에서 고유한 아이디를 제공

✅ PK 특징

  1. 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별
  2. NULL값이 존재할 수 없다.
  3. 레코드의 값은 중복이 불가능
  4. 테이블에는 하나의 기본키를 가질 수 있찌만, 경우에 따라 1개 이상의 기본키 정의 가능(다수 열 번호 키, 복합 기본 키)

3. ER 다이어그램

✅ 정의

  • ERD란 Entitiy Relationship Diagram의 약어로, 데이터베이스 구조를 한눈에 알아보기 위해 쓰임
  • DB를 개발하기 전에 보다 많은 아이디어를 도출하고, 데이터베이스 설계의 이해를 높이기 위해 데이터 모델링 실시
  • 데이터의 다양한 특징을 확인할 수 있어 요구사항을 그에 맞게 개발

✅ Entity(개체)

  • 관리하고자 하는 정보의 실체이며, 사람, 객체 혹은 개념이라고 이해
  • 테이터베이스를 설계할 때, 테이블이 Entity로 정의될 수 있음
  • 모든 Entity는 하나 이상의 식별자르 지녀야 함

✅ Attribute(속성)

  • Entity를 구성하는 요소
  • 테이블의 각 필드들이 엔티티 속성

✅ Relationship

  • 정의 : Entity간의 관계를 의미

  • ✏️ 식별자 관계

    • 실선으로 표현
    • 자식이 부모의 주 식별자를 외래 식별자로 참조해서 자신의 주 식별자로 설정
  • ✏️ 비식별자 관계

    • 점선으로 표현
    • 자식이 부모의 주 식별자를 외래 식별자로 참조해서 일반 속성으로 사용
  • ✏️ 관계 형태(Cardinality)

  1. 1:1 관계
    • 양쪽 모두 단 하나씩 존재하는 경우
    • EX. 어떤 상점에는 하나의 주소만이 존재
  2. 1:N 관계
    • 하나의 원소가 두개 이상의 원소와 관계를 맺는 것을 의미
    • EX. 한 부서에는 여러명의 사원이 소속
  3. N:M 관계
    • 다대다 관계라고 하며, 양쪽 모두 하나 이상과 연관
    • M:N 관계 경우, 두 엔티티의 관계를 1:N, N:1로 조정하는 작업 필요
    • EX. 하나의 수업에는 여러명의 학생, 한 명의 학생이 여러 개의 수업 청강

4. 복합 키

  • 두개 이상의 칼럼을 묶어서 하나의 기본키로 지정
  • 기본키는 하나의 테이블에 하나만 존재, 또한 기본키는 하나 이상의 칼럼으로 구성

5. 정규화

✅ 정규화 과정이란

  • 중복된 속성을 최소화하고 종속관계에 있는 속성을 제거하는 과정
  1. 제 1정규화

    • 테이블의 칼럼이 원자값(하나의 값)을 갖도록 테이블을 분해
    • 규칙
      1. 각 칼럼이 하나의 속성만을 가져야 함
      2. 하나의 칼럼은 같은 종류나 타입의 값을 가져야 함
      3. 각 칼럼이 유일한 이름을 가져야 함
      4. 칼럼의 순서과 상관없어야 함
  2. 제 2정규화

    • 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블 분해
    • 규칙
      1. 제 1정규화를 만족
      2. 모든 칼럼이 부분적 종소이 없어야 함
  3. 제 3정규화

    • 제 2정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블 분해
    • 규칙
      1. 제 2정규화를 만족
      2. 기본키를 제외한 속성들 간의 이행 종속성이 없어야 함
  4. BNCF

    • 3차 정규화를 강화한 버전으로, 3차 정규화를 만족하면서 모든 결정자가 후보키 집합에 속한 정규형
    • 규칙
      1. 제 3정규화를 만족
      2. 모든 결정자가 후보키 집합에 속해야 함

6. 반정규화

✅ 반정규화 과정이란

  • 데이터베이스의 성능 향상을 위하여, 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법
  • 조회(SELECT) 속도를 향상하지만, 데이터 모델의 유연성은 낮아짐

✅ 반정규화를 수행하는 이유

  • 정규화에 충실하여 종속성, 활용성은 향상 되었지만, 수행속도가 느려진 경우
  • 다량의 범위를 자주 처리해야 하는 경우
  • 특정 범위의 데이터만 자주 처리하는 경우
  • 요약/집계 정보가 자주 요구되는 경우

✅ 반정규화 절차

  • 대상 조사 및 검토 : 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상 조사

  • 다른 방법 검토 : 클러스터링, 뷰 ,인텍스 튜닝 등을 검토

  • 반정규화 수행 : 테이블, 속성, 관계 등을 반정규화

  • 🔍참고) 클러스터팅 인덱스란 인덱스 정보를 정할 때, 물리적으로 정렬해서 저장하는 방법

🔍 참고 레퍼런스

profile
Mythos of Summer

0개의 댓글