본문 바로가기
[9oorm x kakao] 구름톤 유니브 3기/[구름톤 유니브] KDT 스터디

[코드온 - 5주차] 데이터베이스 기본과 ERD

by 조희우 2024. 10. 8.

코드온 CS 스터디

구름톤 유니브에서 진행하는 Deep Dive 풀스택 11회차 과정 내에서 진행하는 CS 스터디입니다.

학습 기간

2024.10.02.(수) ~ 08.(화)

4주차 학습 주제

  1. 데이터베이스 기본
    • 엔터티, 릴레이션, 속성: 데이터베이스의 기본 구성 요소.
    • 키: 기본 키, 후보 키, 대체 키의 개념과 역할.
  2. ERD와 정규화
    • ERD: ERD(엔터티 관계 다이어그램)의 중요성과 활용 방법.
    • 정규화 과정: 1차 정규화부터 3차 정규화까지의 기본 개념.

1. 데이터베이스 기본

1.1. 엔터티, 릴레이션, 속성

  • 데이터베이스(Database, DB): 현실 세계의 데이터를 구조적으로 저장하고 관리하는 시스템이다.
  • 엔터티(Entity): 현실 세계에서 독립적으로 존재하는 객체나 개체로 데이터베이스에서 테이블로 표현한다.
     e.g.) 학생, 수업, 교수 등
  • 릴레이션(Relation): 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
    관계형 데이터베이스에서 릴레이션은 테이블(Table)을 의미한다.
    테이블은 행과 열로 구성되며, 각각의 행은 하나의 레코드(튜플), 열은 속성(컬럼)이다.
  • 속성(Attribute): 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다.
    엔터티가 가진 특정 특성이나 정보로 테이블의 열(컬럼)에 해당한다.
    e.g.) 학생의 이름, 학번, 생년월일 등

1.2. 키(Key)

데이터베이스에서 중복된 데이터를 허용하지 않기 위한 기준이 되는 속성이다.

주로 테이블 내에서 각 레코드를 유일하게 식별할 수 있도록한다.

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

  • 기본 키(Primary Key, PK): 테이블 내의 각 행을 고유하게 식별하는 데 사용되는 하나 이상의 속성이다.
    중복을 허용하지 않으며, 반드시 값이 존재해야하고 Null을 허용하지 않는다.
    e.g.) 학생 테이블의 학번
  • 외래 키 (Foreign Key, FK): 한 테이블에서 다른 테이블의 기본 키를 참조하는 키이다.
    두 테이블 간의 관계를 설정하며, 데이터의 무결성을 보장하는 데 중요한 역할을 한다.
    다른 테이블의 기본 키와 매핑되므로, 참조 무결성을 유지하기 위해 기본 키와 같은 값을 가진다.
  • 후보 키(Candidate Key): 기본 키로 선택될 수 있는 후보 속성들이다.
    테이블에서 유일성을 만족하는 여러 속성들이 있을 수 있으며, 그중 하나가 기본 키로 사용된다.
  • 대체 키(Alternate Key): 후보 키 중에서 기본 키로 선택되지 않은 나머지 키이다.
    유일성을 보장하지만, 기본 키로 사용되지 않은 속성이다.
  • 슈퍼 키(Super Key): 각 레코드에서 유일하게 식별할 수 있는 하나 이상의 속성들의 집합이다.
    슈퍼 키에는 기본 키도 포함될 수 있으며, 기본 키는 슈퍼 키의 특수한 형태이다.
    단, 최소성을 만족할 필요가 없으며, 중복된 속성을 포함할 수 있습니다.

2. ERD와 정규화

2.1. ERD

ERD(Entity-Relationship Diagram)는 데이터베이스 설계를 시각적으로 표현하는 도구이다.

데이터베이스 구조를 쉽게 이해할 수 있게 도와주며 엔터티, 속성 및 엔터티 간의 관계를 표현한다.

  • 엔터티(Entity): 직사각형으로 표현되며, 데이터베이스에서 관리하고자 하는 개체를 나타낸다.
    e.g.) 학생, 교수 등
  • 속성(Attribute): 원으로 표현되며, 엔터티의 특정 정보를 나타낸다.
    e.g.) 학생의 이름, 학번 등
  • 관계(Relationship): 다이아몬드 형태로 표현되며, 엔터티 간의 상호작용을 나타낸다.
    관계는 1:1, 1, N과 같은 관계 유형으로 나뉜다.

2.2. ERD의 중요성

  • 시스템의 요구 사항을 기반으로 작성되며, ERD를 기반으로 데이터 베이스를 구축한다.
  • 데이터베이스 구축 이후 디버깅, 비지니스 프로세스 재설계가 필요한 경우 설계도 역할을 담당한다.

2.3. ERD의 단점

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

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

2.4. ERD의 활용 방법

 

  • 데이터베이스 설계 초기 단계에서 각 엔터티와 그들 간의 관계를 명확하게 정의하는 데 사용한다.
  • 복잡한 데이터 구조를 시각적으로 이해하고, 각 엔터티가 어떤 속성을 가지고 있으며 어떻게 연결되는지 확인할 수 있다.
  • 시스템의 요구 사항 분석과 데이터 구조 설계에서 중요한 역할을 한다.
  •  

 

2.2. 정규화 과정

데이터베이스 설계에서 데이터의 중복을 최소화하고, 이상 현상(데이터 불일치, 삭제 이상, 삽입 이상 등)을 방지하기 위한 과정이다.
여러 단계로 이루어지며, 각 단계는 특정 기준을 충족합니다.

정규형 원칙

  • 같은 의미를 표현하는 릴레이션이나 더 개선된 구조로 표현해아한다.
  • 자료의 중복성은 감소해야한다.
  • 독립적인 관계는 별개의 릴레이션으로 표현해야한다.
  • 각각의 릴레이션은 독립적인 표현이 가능해야한다.

1차 정규화(1NF: First Normal Form)

  • 테이블 내의 모든 속성 값이 원자값(Atomic Value)을 가져야한다.
    각 속성은 하나의 값을 가져야 하며, 여러 개의 값을 가질 수 없다.
  • e.g.) 전화번호의 속성이 여러 개의 번호를 가진다면, 개별적으로 분리하여 테이블을 설계

2차 정규화(2NF: Second Normal Form)

  • 1차 정규화를 만족하면서, 부분 함수 종속성을 제거한다.
  • 기본 키가 여러 개의 속성으로 구성된 경우, 일부 속성에만 종속된 비키 속성(기타 속성)을 제거한다.
  • e.g.) 학생의 학번과 수업 코드가 기본 키라면, 학생의 이름은 학번에만 종속되므로 별도의 테이블로 분리

3차 정규화(3NF: Third Normal Form)

  • 2차 정규화를 만족하면서, 이행적 함수 종속(Transitive Dependency)을 제거한다.
  • 비키 속성이 다른 비키 속성에 종속되는 경우, 이를 제거하여 독립된 테이블로 나눈다.
  • e.g.) 부서 테이블에서 부서 이름이 부서 번호에 종속되고, 부서 위치가 부서 이름에 종속된다면,
    부서 위치는 부서 번호에 직접적으로 종속되도록 테이블을 분리

참고자료

- https://velog.io/@gkqls813/면접을-위한-CS-전공지식-노트-운영체제-메모리

- https://inpa.tistory.com/entry/DB-📚-데이터-모델링-1N-관계-📈-ERD-다이어그램

- https://mslilsunshine.tistory.com/164

- https://velog.io/@kim_truee/ERD