데이터베이스(Database) 기초

데이터베이스(Database)는 여러 사람이 공유하고 사용할 목적으로 체계적으로 조직한 데이터의 집합을 의미합니다. 데이터베이스를 효율적으로 제어 및 관리하기 위해 DBMS(DataBase Management System)를 사용합니다.

데이터베이스란?

  • 정의
    • 공유, 통합, 저장, 운영되는 데이터의 집합
    • 여러 응용 시스템(프로그램)들이 동시에 데이터를 활용할 수 있도록 물리적으로나 논리적으로 조직화해둔 것
  • 특징
    • 실시간 접근성: 사용자가 원할 때마다 실시간으로 데이터에 접근 가능
    • 지속적인 변화: 새로운 데이터의 삽입, 삭제, 갱신이 계속 이루어짐
    • 동시 공유: 여러 사용자가 동시에 접근하여 데이터를 활용 가능
    • 내용 참조: 데이터의 물리적 주소(위치)가 아닌, 실제 데이터 값을 참조
    • 데이터베이스 내부에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(SQL)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있습니다.

  • 데이터베이스 위에 DBMS가 위치하여 응용 프로그램의 데이터 사용을 제어하고 관리합니다.

엔티티(Entity)

  • 개체라는 뜻으로 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사
  • 자바의 Class라고 생각하시면 됩니다!
  • 실제로 존재하는 개념과 추상적인 개념을 모두 표현할 수 있습니다.
    • 실제로 존재하는 것: 학생 DB
    • 추상적인 개념: 결제
  • 약한 엔티티와 강한 엔티티
    • 독립적으로 존재할 수 있는지에 따라 약한/강한 엔티티로 구분할 수 있습니다.
    • A가 존재해야만 B가 존재한다면 A는 약한 엔티티, B는 강한 엔티티입니다.
    • 예를 들어, 건물과 방을 놓고 보았을 때 방은 건물이 있어야만 존재할 수 있으므로 건물은 약한 엔티티, 방은 강한 엔티티가 됩니다.

릴레이션(Relation)

  • 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
  • 엔티티와 관련된 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리합니다. 즉, 엔티티가 데이터베이스에서 관리될 때, 릴레이션이라고 합니다.
  • 릴레이션을 DBMS에서는 테이블, NoSQL 데이터베이스에서는 컬렉션이라고 합니다.

속성(Attribute)

  • 릴레이션에서 관리하는 구체적이고 고유한 이름을 갖는 정보
  • 관리해야할 필요가 있는 속성들만이 엔티티의 속성이 됩니다.
  • 속성별로 타입을 정의하여 테이블을 구성합니다.
  • 자동차 엔티티에 해당하는 속성은 차량 번호, 바퀴 수, 색상 등이 있습니다.

도메인(Domain)

  • 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합
  • 성별이라는 속성이 있다면 이 속성이 가질 수 있는 값은 {남, 여}라는 집합이 됩니다.

필드와 레코드(Field, Record)

  • 필드: 개별적인 속성을 부르는 말
  • 레코드: 테이블에 쌓이는 행(row) 단위의 데이터, 튜플이라고도 함

관계

  • 여러 개의 테이블 사이에서 관계를 정의하는 것.
  • 1:1 관계
    • 테이블 간의 관계가 하나씩만 존재하는 관계
    • 사람 - 여권
  • 1:N 관계
    • 부서 - 직원
  • N:M 관계
    • 학생 - 강의

  • 테이블 간의 관계를 더 명확히 하고, 테이블 자체의 인덱스를 위해 설정된 방법, 기본기, 외래키, 후보키, 슈퍼키, 대체키가 있습니다.
  • 기본키
    • PK 또는 프라이머리 키라고 하며, 유일성과 최소성을 만족합니다.
    • 테이블의 데이터 중 고유하게 존재하는 속성으로 기본키는 중복이 되지 않아야 하고 최소성을 만족해야 합니다.
    • 자연키 또는 인조키 중에 골라서 설정합니다.
      • 자연키: 테이블을 구성하는 속성 중, 따로 조치하지 않아도 고유성을 만족하는 키, 유저 테이블의 주민등록번호
      • 인조키: 테이블에서 인위적으로 유저 아이디를 부여하는 키, 오라클은 sequence, MySQL은 auto increment
      • 그래서 보통 기본키는 인조키로 설정
  • 외래키
    • FK라고 하며, 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는 데 사용
    • 외래키는 중복을 허용
    • 고객 테이블과 제품 테이블이 있다고 했을 때, 고객의 기본키를 참조하여 제품 테이블에 외래키로 가져와 관계를 형성할 수 있습니다.
  • 후보키
    • 기본키가 도리 수 있는 후보들이며 유일성과 최소성을 동시에 만족하는 키
  • 대체키
    • 후보키가 두 개 이상인 경우 어느 하나를 기본키로 지정하고 남은 후보키들을 의미
  • 슈퍼키
    • 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키

참고 자료

  • 면접을 위한 CS 전공지식 노트, 주홍철