4.1 데이터베이스의 기본

·2023년 9월 26일
0

CS

목록 보기
12/23

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

  • 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어(query language)를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.
  • 데이터베이스는 실시간 접근과 동시 공유가 가능하다.

    그림처럼 데이터베이스 위에 DBMS가 있고, 그 위에 응용 프로그램이 있으며 이러한 구조를 기반으로 데이터를 주고 받는다.

4.1.1 엔티티

엔티티(entity) : 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사.
ex) 회원이라는 엔티티가 이름, 아이디, 주소, 전화번호의 속성을 갖는다.

서비스의 요구 사항에 맞춰 속성이 정해진다.

약한 엔티티와 강한 엔티티

A가 혼자서 존재하지 못하고 B의 존재 여부에 따라 종속적이라면, A는 약한 엔티티B는 강한 엔티티이다.
ex) 방은 건물 안에만 존재. 방 : 약한 엔티티, 건물 : 강한 엔티티

4.1.2 릴레이션

  • 릴레이션(relation) : 데이터베이스에서 정보를 구분하여 저장하는 기본 단위.
  • 데이터베이스는 엔티티에 관한 데이터를 릴레이션 하나에 담아 관리한다.
  • 그림처럼, 회원이라는 엔티티가 데이터베이스에서 관리될 때 릴레이션으로 변화된 것을 볼 수 있다.
  • 릴레이션 관계형 데이터베이스에서는 테이블, NoSQL 데이터베이스에서는 컬렉션이라고 한다.

테이블과 컬렉션

  • 데이터베이스의 종류
    • 관계형 데이터베이스 ex) MySQL 구조: 레코드-테이블-데이터베이스
    • NoSQL 데이터베이스 ex) MongoDB 구조 : 도큐먼트-컬렉션-데이터베이스
  • 레코드가 쌓여 테이블이 되고, 테이블이 쌓여 데이터베이스가 된다.

4.1.3 속성

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

4.1.4 도메인

  • 도메인(domain) : 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합.
  • 회원이라는 릴레이션에 이름, 아이디, 주소, 번호, 성별이라는 속성이 있고 성별은 {남, 여}라는 도메인을 가진다.

4.1.5 필드와 레코드

  • 회원이란 엔티티는 member라는 테이블속성인 이름, 아이디 등을 가지고 있으며 name, ID, address 등의 필드를 가진다.
  • 이 테이블에 쌓이는 행(row) 단위의 데이터를 레코드라고 한다.
  • 레코드튜플이라고도 한다.

필드

  • 필드는 타입을 갖는다. ex) 이름은 문자열이고 전화번호는 숫자
  • 이러한 타입들은 DBMS마다 다르며 이 책에서는 MySQL 기준으로 설명!

숫자 타입

날짜 타입

  • DATE : 날짜는 있지만 시간은 없는 값에 사용.
  • DATETIME : 날짜 및 시간 부분을 모두 포함,
  • TIMESTAMP : 날짜 및 시간 부분을 모두 포함

문자 타입

  • CHAR와 VARCHAR
    • CHAR : 고정 길이 문자열. 길이는 0에서 255까지. 레코드를 저장할 때 무조건 선언한 길이 앖으로 '고정'해서 저장된다.
    • VARCHAR : 가변 길이 문자열. 0에서 65,535 사이 값 지정 가능. 입력된 데이터에 따라 용량을 가변시켜 저장.
  • TEXT와 BLOB : 큰 데이터를 저장할 때 쓰는 타입
    • TEXT : 큰 문자열 저장에 쓰임. 주로 게시판의 본문을 저장할 때 쓴다
    • BLOB : 이미지, 동영상 등 큰 데이터 저장에 쓰임.
  • ENUM과 SET : 문자열을 열거한 타입
    • ENUM : ENUM(x-small, small, medium, large, x-large) 형태로 쓰이며 단일 선택만 가능. 잘못된 값을 삽입하면 빈 문자열이 대신 삽입. x-small 등이 0, 1 등으로 매핑되어 메모리를 적게 사용하는 이점을 얻음
    • SET : ENUM과 비슷하지만, 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할 수 있음

4.1.6 관계

1:1 관계


ex) 유저당 유저 이메일 한 개씩
두 개의 테이블로 나눠 테이블의 구조를 더 이해하기 쉽게 만들어줌

1:N 관계


ex) 한 유저당 여러 개의 상품을 장바구니에 넣음

N:M 관계


ex) 학생과 강의의 관계. 학생이 여러 강의를 들을 수 있고 강의도 여러 학생을 포함
N:M은 테이블 두 개를 직접적으로 연결해 구축하지 않고 1:N, 1:M이라는 관계를 갖는 두 개의 테이블로 나눠 설정한다. 중간에 학생_강의 테이블이 끼어 있다.

4.1.7 키

  • 유일성 : 중복되는 값이 없음
  • 최소성 : 필드를 조합하지 않고 최소 필드만 써서 키를 형성할 수 있는 것

기본키(Primary Key)

  • 유일성최소성을 만족
  • {ID, name}이라는 복합키를 기본키로 설정할 수 있지만 그렇게 되면 최소성을 만족하지 않음
  • 자연키 또는 인조키 중에 골라서 설정

자연키

  • 유저 테이블을 만들 때, 주민등록번호, 이름, 성별 등의 속성이 있다. 이 중 이름, 성별 등은 중복된 값이 들어올 수 있으므로 부적절하고 남는 것은 주민등록번호이다. 이런 식으로 중복된 값들을 제외하며 중복되지 않는 것을 '자연스레' 뽑다가 나오는 키를 자연키라고 한다.
  • 자연키는 언젠가 변하는 속성을 가진다.
    인조키
  • 회원 테이블에 주민번호, 이름, 성별 등의 속성이 있다. 여기에 인위적으로 유저 아이디를 부여한다. 이를 통해 고유 식별자가 생겨난다. 이렇게 인위적으로 생성한 키가 인조키이다
  • 자연키와 달리 변하지 않는다.
  • 따라서 보통 기본키는 인조키로 설정한다.

외래키(Foreign Key)

  • 다른 테이블의 기본키를 그대로 참조하는 값
  • 개체와의 관계를 식별하는 데 사용
    업로드중..
  • 외래키는 중복되어도 괜찮다.

후보키(candidate key)

  • 기본키가 될 수 있는 후보들
  • 유일성최소성을 동시에 만족하는 키

대체키(alternate key)

  • 후보키가 두 개 이상일 경우 어느 하나로 기본키로 지정하고 남은 후보키들

슈퍼키(super key)

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

Reference

주홍철 작가님의 '면접을 위한 CS 전공지식 노트'를 기반으로 작성되었습니다.

0개의 댓글