[면접을 위한 CS 전공지식 노트] 데이터베이스 - 데이터베이스의 기본

Yijun Jeon·2024년 2월 6일
0

CS 전공지식

목록 보기
17/21
post-thumbnail

데이터베이스의 기본

💡 데이터베이스 란?

데이터베이스(DB, Database)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음

  • 실시간 접근과 동시 공유 가능

💡 DBMS 란?

DBMS(Database Management System)는 데이터베이스를 제어 관리하는 통합 시스템

  • 데이터베이스의 데이터들은 특정 DBMS마다 정의된 쿼리 언어 (query language) 를 통해 삽입, 삭제, 수정, 조회


엔터티

💡 엔터티 (entity) 란?

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

💡 속성 (attribute) 이란?

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

  • 수많은 속성을 지니지만, 서비스의 요구 사항에 맞춰 엔티티의 속성이 정해짐

⭐️ 강한 엔터티 VS 약한 엔터티
강한 엔터티 : 혼자서 존재할 수 있는 엔터티 (ex. 건물)
약한 엔터티 : 다른 엔터티의 존재 여부에 따라 의존적인 엔터티 (ex. 방)


릴레이션

💡 릴레이션 (relation) 이란?

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

  • 관계형 데이터베이스 릴레이션 : 테이블
  • NoSQL 데이터베이스 릴레이션 : 컬렉션

테이블과 컬렉션

🔗 관계형 데이터베이스 (MySQL)

  • 레코드 - 테이블 - 데이터베이스

🔗 NoSQL 데이터베이스 (MongoDB)

  • 도큐먼트 - 컬렉션 - 데이터베이스

도메인

💡 도메인 (domain) 이란?

릴레이션에 포함된 각각의 속성들이 가질 수 있는 집합

  • ex) 성별 속성의 도메인 -> {남,여}

필드와 레코드

🔗 필드와 레코드로 구성된 테이블

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

필드 타입

필드는 DBMS마다 다른 각자의 타입을 가짐

숫자 타입

날짜 타입

  • DATE : 날짜만 사용 (3 bytes)
  • DATETIME : 날짜 및 시간 모두 사용 (8 bytes)
  • TIMESTAMP : 날짜 및 시간 모두 사용 (4 bytes)

문자 타입

🔗 글자 수 지정 타입

  • CHAR : 고정 길이 문자열 (0~255)
  • VARCHAR : 가변 길이 문자열 (0~65535)
    • 입력된 데이터에 따라 용량을 가변시켜 저장
    • 해당 바이트 + 길이 기록용 1 바이트

🔗 큰 데이터 저장 타입

  • TEXT : 큰 문자열 저장에 사용
    • 주로 게시판의 본문
  • BLOB : 이미지, 동영상 등 큰 데이터 저장
    • but, 보통은 아마존 S3를 이용하고 파일 경로를 VARCHAR로 저장

🔗 문자열 열거 타입

  • ENUM : ENUM(x-small, small, medium, large, x-large) 형태로 쓰이며 단일 선택만 가능
    • 잘못된 값을 삽입하면 빈 문자열이 대신 삽입
    • x-small 등이 0,1 등으로 매핑되어 메모리를 적게 사용하는 이점
    • 최대 65,535개의 요소
  • SET : ENUM과 비슷하지만, 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할 수 있음
    • 최대 64개의 요소

관계

💡 데이터베이스에는 여러 개의 테이블이 있고 이러한 테이블은 서로의 관계가 정의되어 있음
👉 이러한 관계를 관계화살표로 나타냄

🔗 1:1 관계

  • ex) 유저당 유저 이메일은 하나씩 있는 경우

🔗 1:N 관계
👉 한 개체가 다른 많은 개체를 포함하는 관계

  • ex) 한 유저당 어러 개의 상품을 장바구니에 넣는 경우

🔗 N:M 관계
👉 테이블 두 개를 직접적으로 연결해서 구축 ❌
👉 1:N, 1:M 라는 관계를 갖는 테이블 두 개로 나눠서 설정

  • ex) 학생과 강의의 관계

💡 키 (key) 란?

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

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

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

🔗 기본키 (PK, primary key)

  • 유일성최소성을 만족하는 키
  • 자연키 또는 인조키 중 설정

자연키 : 중복되지 않는 것을 '자연스레' 뽑다가 나오는 키 - 언젠가는 변하는 속성을 가짐
인조키 : 인위적으로 생성한 키 - 변하지 않음 -> 보통 기본키로 사용

🔗 외래키 (FK, foreign key)

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

🔗 후보키 (candidate key)

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

🔗 대체키 (alternate key)

  • 후보키가 두 개 이상이 경우 기본키 이외의 남은 후보키들

🔗 슈퍼키 (super key)

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

0개의 댓글