[CS] 데이터베이스 - 데이터베이스의 기본

junwoo·2022년 7월 16일
0

CS

목록 보기
5/6
post-custom-banner

4.1 데이터베이스의 기본

  • 데이터베이스(DB) : 일정한 규칙을 통해 구조화되어 저장되는 데이터의 모음
  • 데이터베이스 통합 시스템(DBMS) : 데이터베이스를 제어, 관리하는 통합 시스템
  • 특정 DBMS마다 정의된 쿼리 언어를 통해 DB안에 있는 데이터들을 삽입, 삭제, 수정, 조회
  • 실시간 접근과 동시 공유 가능

4.1.1 엔터티

여러 개의 속성을 지닌 명사 (사람, 장소, 물건, 사건, 개념 등)

약한 엔터티와 강한 엔터티

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

4.1.2 릴레이션

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

  • 관계형 DB에서는 '테이블', NoSQL DB에서는 '컬럭션'

테이블과 컬렉션

  • 대표적 관계형 데이터베이스 : MySQL (레코드-테이블-데이터베이스)
  • 대표적 NoSQL 데이터베이스 : MongoDB (도큐먼트-컬렉션-데이터베이스)

4.1.3 속성

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

4.1.4 도메인

각각의 속성들이 가질 수 있는 값의 집합

  • 성별이라는 속성이 있다면 이 속성이 가질 수 있는 값은 {남, 여}라는 집합

4.1.5 필드와 레코드

레코드(튜플) : 테이블에 쌓이는 행 단위의 데이터

필드 타입

  • DBMS마다 다름
  • 숫자 타입, 날짜 타입, 문자 타입

날짜 타입

  • DATE : 3바이트 용량
  • DATETIME : 8바이트 용량
  • TIMESTAMP : 4바이트 용량

문자 타입

CHAR와 VARCHAR

  • 안에 수를 입력해서 몇 자까지 입력할지 정함
  • CHAR은 테이블을 생성할 때 선언한 길이로 고정, 0~255 사이의 값
  • 검색에 유리
  • VARCHAR은 가변 길이 문자열, 0~65535 사이의 값
  • 입력된 데이터에 따라 용량을 가변시켜 저장
  • 저장 용량면에서 유리
    ex) 10글자 이메일의 경우 : 10글자에 해당하는 바이트 + 길이 기록용 1바이트

TEXT와 BLOB

  • 큰 데이터를 저장할 때 사용
  • TEXT는 큰 문자열 저장에 사용, 게시판의 본문 저장
  • BLOB은 이미지, 동영상 등 큰 데이터 저장에 사용, 그러나 보통은 S3 등 서버에 파일을 올리고 파일 경로를 VARCHAR로 저장

ENUM과 SET

  • 문자열을 열거한 타입

4.1.6 관계

여러 개의 테이블은 서로의 관계가 정의되어 있음

  • 1:1 관계, 1:N 관계, N:M 관계

N:M 관계

N:M은 테이블 두 개를 직접적으로 연결해서 구축하지 않고 1:N, 1:M이라는 관계를 갖는 테이블 두 개로 나눠서 설정

4.1.7 키

테이블 간의 관계를 조금 더 명확하게 하고, 테이블 자체의 인덱스를 위해 설정된 장치

  • 기본키, 외래키, 후보키, 슈퍼키, 대체키

기본키(PK)

  • 유일성과 최소성을 만족하는 키
  • 자연키, 인조키

자연키

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

  • 언젠가는 변하는 속성

인조키

인위적으로 생성한 키

  • 자연키와는 대조적으로 변하지 않음
  • MySQL은 auto increment, 오라클은 sequence

외래키(FK)

다른 테이블의 기본키를 그대로 참조하는 값

  • 개체와의 관계를 식별하는데 사용

후보키

기본키가 될 수 있는 후보들

  • 유일성과 최소성을 동시에 만족하는 키

대체키

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

슈퍼키

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

profile
오늘보다 발전된 내일을 위한 기록
post-custom-banner

0개의 댓글