[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개의 댓글

관련 채용 정보