[CS] 데이터베이스 (1)

young-gue Park·2023년 8월 23일
0

CS

목록 보기
6/18
post-thumbnail

⚡ 데이터베이스


📌 기본 용어

🔷 데이터베이스(DataBase)

  • 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음
  • 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)이라고 한다.

🔷 엔터티(entity)

  • 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사
  • 서비스의 요구 사항에 맞춰 속성이 정해진다.
  • 약한 엔터티와 강한 엔터티
    -> 어떤 엔터티가 다른 엔터티의 존재 여부에 따라 종속적이라면 어떤 엔터티는 약한 엔터티이고 다른 엔터티는 강한 엔터티이다.

🔷 릴레이션(relation)

  • 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
  • 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리한다.

💡 보통 관계형 DB에서는 테이블이라고 하고, NoSQL DB에서는 컬렉션이라고 한다.

🔷 속성(attribute)

  • 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보
  • 서비스의 요구 사항을 기반으로 관리해야 할 필요가 있는 속성들만 엔터티의 속성이 딘다.

🔷 도메인(domain)

  • 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합

🔷 필드(field)

  • 테이블의 각 속성들을 나타내는 이름

🔷 레코드(record)

  • 테이블에 쌓이는 행(row) 단위의 데이터

    💡 튜플(tuple)이라고도 한다.

🔷 필드 타입(field type)

  • 필드가 갖는 타입을 의미하며 숫자, 날짜, 문자 타입 등이 있다.

    💡 문자 타입 중 ENUM 열거형 타입을 갖는 DB가 꽤 있다.
    ENUM이란?

🔷 관계

  • 데이터베이스 내 여러 개의 테이블 간의 관계가 정의되어 있다.

  • 관계 화살표로 나타낼 수 있다.

    💡 관계와 관계 화살표

🔷 키

  • 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치
  1. 기본키(Primary key)

    • 주로 PK라고 부르며 유일성최소성을 만족하는 키이다.

      💡 유일성: 중복되는 값이 없는 것
      💡 최소성: 최소 필드만 써서 키를 형성할 수 있는 것

    • 테이블의 데이터 중 고유하게 존재하는 속성이며 기본키의 데이터는 중복되어서는 안된다.
  2. 자연키

    • 중복된 값들을 제외하며 중복되지 않는 것을 자연스레 뽑다가 나오는 키
    • 언젠가는 변하는 속성을 가지고 있다.
  3. 인조키

    • 고유 식별자(기본키) 생성을 위해 인위적으로 생성한 키
    • 자연키와 다르게 변하지 않는다.
  4. 외래키(Foreign Key)

    • FK라고 부르며, 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계 식별 시 사용
    • 중복될 수 있다.
  5. 후보키(candidate key)

    • 기본키가 될 수 있는 후보들
    • 유일성최소성을 만족한다.
  6. 대체키(alternative key)

    • 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키들
  7. 슈퍼키(super key)

    • 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키

📌 ERD

  • 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것
  • 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축한다.
  • 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용하다.
  • 다만, 비정형 데이터는 충분히 표현할 수 없다.

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

🔷 정규화 과정

  • 릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서 이를 해결하거나, 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정

💡 데이터베이스 이상 현상: 한 튜플이 갑자기 여러 개의 같은 필드의 여러 값을 갖거나, 데이터 삭제 시 엉뚱한 데이터가 함께 삭제되고, NOT NULL 제약 때문에 데이터 삽입이 꼬이는 등 여러모로 사람 빡치게 한다.

🔷 정규화 원칙

  1. 같은 의미를 표현하는 릴레이션이어도 좀 더 좋은 구조로 만들어야 한다.
  2. 자료의 중복성은 감소해야 한다.
  3. 독립적인 관계는 별개의 릴레이션으로 표현한다.
  4. 각각의 릴레이션은 독립적인 표현이 가능해야 한다.
profile
Hodie mihi, Cras tibi

0개의 댓글