[Chapter 4.1] 데이터베이스의 기본

JiMin LEE·2023년 8월 2일
0

CS

목록 보기
3/3

Datebase

: 일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음

DBMS

: 데이터베이스를 제어, 관리하는 통합 시스템

ex) Mysql


4.1.1 엔터티

Entity

: 여러 개의 속성을 지닌 명사

💡 약한 엔터티 VS 강한 엔터티

약한 엔터티

: 혼자 존재하지 못하고 다른 엔터티 존재 여부에 따라 종속적인 존재
ex) 방

강한 엔터티

: 다른 엔터티가 자신의 존재 여부에 따라 종속된다면 강한 엔터티이다.
ex) 건물


4.1.2 릴레이션

Relation

: 데이터베이스에서 정보를 구분하여 저장하는 기본 단위

  • 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아 관리한다.
  • 관계형 데이터베이스에서는 “Table” / Nosql에서는 “Collection” 이라고 한다.

테이블과 컬렉션

데이터베이스 종류

  1. 관계형 데이터베이스
    ex) Mysql
    - mysql 구조는 레코드-테이블-데이터베이스로 이루어져 있다.
    - 레코드가 쌓여 테이블이 되고, 테이블이 쌓여 데이터베이스가 된다.

  2. Nosql 데이터베이스
    ex) MongoDB
    • MongoDB 구조는 도큐먼트-컬렉션-데이터베이스

4.1.3 속성

Attribute

: 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보


4.1.4 도메인

Domain

: 릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말한다.


4.1.5 필드와 레코드

  • 행 단위의 데이터 == 레코드

필드 타입

  • 필드는 타입을 갖는다.

숫자 타입

타입용량(byte)범위(부호없음)범위(부호있음)
TINYINT10 ~ 255-128 ~ 127
SMALLINT20 ~ 655535-32768 ~32767
MEDIUMINT40 ~ 16777215- 8388608 ~ 8388607
INT80 ~ 4294967295-2147483648 ~ 2147483647
BIGINT0 ~ 264-1-263 ~ 263-1

날짜 타입

DATE

  • 날짜부분만 존재
  • 시간 부분은 없음
  • 3바이트 용량을 가짐

1000-01-01 ~ 9999-12-31

DATETIME

  • 날짜부분 & 시간부분 모두 포함
  • 8바이트 용량을 가짐

1000-01-01 00:00:00
~ 9999-12-31 23:59:59

TIMESTAMP

  • 날짜 부분 & 시간 부분 모두 포함
  • 4바이트 용량 가짐

1970-01-01 00:00:00
~ 2038:01-19 03:14:07

문자 타입

CHAR

  • CHAR에 경우 최대 30자까지 입력 가능함
  • 고정 길이 문자열이고 길이는 0 ~ 255 사이의 값을 가진다.
  • 레코드를 저장할 때 무조건 선언한 길이 값으로 고정해서 저장된다.
    • CHAR(100)이라 선언한 경우 10글자이더라도 100바이트로 저장되게 된다.

VARCHAR

  • 가변 길이 문자열
  • 0 ~ 65535 사이의 값으로 지정할 수 있다.
  • 입력된 데이터에 따라 용량을 가변시켜 저장한다.
    • 10글자의 이메일을 저장할 경우 10글자에 해당하는 바이트 + 길이기록용 1바이트로 저장함

TEXT

  • 큰 문자열 저장에 쓰며 주로 게시판의 본문을 저장할 때 쓴다.

BLOB

  • 이미지, 동영상 등 큰 데이터 저장에 쓴다.
  • 하지만 보통은 S3를 사용하여 서버에 파일을 올리고 파일경로를 VARCHAR로 저장한다.

ENUM

  • 문자열을 열거한 타입
  • ‘x-small’ , ‘small’, ‘medium’, ‘large’, ‘x-large’ 형태로 쓰인다.
  • 이 중에서 하나만 선택하는 단일 선택만 가능하고, ENUM 리스트에 없는 잘못된 값을 삽입하면 빈 문자열이 대신 삽입된다.
  • 이를 사용하면 ‘x-small’ 등이 0, 1 등으로 매핑되어 메모리를 적게 사용하는 이점을 얻는다.
  • 최대 65535개의 요소들을 넣을 수 있다.

SET

  • 문자열을 열거한 타입
  • 여러 개의 데이터를 선택할 수 있고, 비트 단위의 연산을 할 수 있으며, 최대 64개의 요소를 집어 넣을 수 있다는 점이 ENUM과 다르다.

—> ENUM, SET을 사용할 경우 공간적으로는 이점을 볼 수 있지만, 애플리케이션의 수정에 따라 데이터베이스의

ENUM, SET에서 정의한 목록을 수정해야 한다는 단점이 있다.


4.1.6 관계

  • 1대1 관계
  • 1대다 관계
  • 다대다 관계

4.1.7 키

기본키

: 유일성과 최소성을 만족하는 키

자연키

: 중복된 값들을 제외하며 중복되지 않은 것을 자연스레 뽑다가 나오는 키

  • 언젠가는 변하는 속성을 가진다.

ex) 이름, 성별, 주민번호라는 속성이 있을 때, 주민번호가 자연키

인조키

: 인위적으로 생성한 키

  • 자연키와는 대조적으로 변하지 않는다.
  • 보통 기본키는 인조키로 설정한다.

ex) 사용자가 설정한 ID

외래키

: 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는 데 사용한다.

  • 외래키는 중복되어도 괜찮다.

후보키

: 기본키가 될 수 있는 후보들이며, 유일성과 최소성을 동시에 만족하는 키

대체키

: 후보키가 두 개 이상일 경우, 어느 하나를 기본키로 지정하고 남은 후보키를 의미한다.

슈퍼키

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

0개의 댓글