CS전공지식(데이터베이스)

박정호·2022년 8월 8일
0

CS

목록 보기
13/18
post-thumbnail

데이터베이스

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


데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있다.
ex) MySQL이라는 DBMS 위에 응용프로그램에 속하는 Node.js에서 해당 데이터베이스 안에 있는 데이터를 끄집어내 해당 데이터 관련 로직을 구축하는 과정

entity

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

ex) 회원이라는 엔터티에 이름,아이디,주소,전화번호라는 속성 존재

약한 entity & 강한 entity

약한 entity

  • 혼자서 존재하지 못하고 다른 entity의 존재 여부에 따라 종속적인 존재

강한 entity

  • 혼자 존재 가능한 존재

ex) 건물 안에 종속하는 방 -> 건물 = 강한 entity , 방 = 약한 entity

릴레이션

  • 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
  • 엔터티에 관한 데이터를 데이터베이스는 릴레이션 하나에 담아서 관리
  • 릴레이션은 관계형 데이터베이스에서는 '테이블', NoSQL 데이터베이스에서는 '컬렉션'이라고 한다

ex) 회원이라는 엔터티가 데이터베이스에서 관리될때 릴레이션으로 변화

테이블 & 컬렉션

테이블

  • 대표적인 관계형 데이터베이스 = MySQL
  • MySQL 구조: 레코드-테이블-데이터베이스

컬렉션

  • 대표적인 NoSQL 데이터베이스 = MongoDB
  • MongoDB 구조: 도큐먼트-컬랙션-데이터베이스

참고하면 너무 좋은 곳: https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-sql-vs-nosql/

속성

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

도메인

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

ex) 회원이라는 릴레이션에 이름, 아이디, 주소, 전화번호, 성별이라는 속성 존재, 성별은 {남,여}라는 도메인을 가지는 것

필드와 레코드

필드

  • column에 해당하는 가장 작은 단위의 데이터를 의미
  • 필드는 엔티티의 속성을 표현

레코드

  • 테이블의 행단위의 데이터를 레코드라고 한다(레코드 = 튜플)

필드 타입

  • 필드는 타입을 갖는다

숫자타입

  • TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 등 존재

날짜타입

  • DATE, DATTIME, TIMESTAMP

DATE

  • 날짜 부분은 있지만 시간 부분은 없는 값에 사용
  • 지원 범위 1000-01-01~9999-12-31
  • 3바이트 용량 차지

DATTIME

  • 날짜 및 시간 부분을 모두 포함하는 값에 사용
  • 지원 범위 1000-01-01-00:00:00 ~ 9999-12-31 23:59:59
  • 8바이트 용량 차지

TIMESTAMP

  • 날짜 및 시간 부분을 모두 포함하는 값에 사용
  • 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07 지원
  • 4바이트 용량 차지

문자타입

  • CHAR, VARCHAR, TEXT, BLOB, ENUM, SET

CHAR

  • 수를 몇자까지 입력할지 결정
  • 테이블 생성 시 선언한 길이 고정
  • 0 ~ 255사이의 값을 가진다
  • 레코드를 저장할 때 무조건 선언한 길이 값으로 '고정해서 저장'
  • 저장된 CHAR의 경우 검색에 유리

VARCHAR

  • 수를 몇자까지 입력할지 결정
  • 가변 길이 문자열
  • 0 ~ 65,535사이의 값을 가진다
  • 입력된 데이터에 따라 용량을 가변시켜 저장
  • 검색을 별로 하지 않고 유동적인 길이를 가진 데이터를 저장할 때 좋다

TEXT

  • 큰 데이터를 저장할 때 쓰는 타입
  • 큰 문자열 저장에 쓰며 주로 계시판의 본문을 저장할때 사용

BLOB

  • 큰 데이터를 저장할 때 쓰는 타입
  • 이미지, 동영상 등 큰 데이터 저장
    -> but, 아마존 이미지 호스팅 서비스인 S3와 같은 경우 파일 경로를 VARCHAR에 저장

ENUM

  • 문자열을 열거한 타입
  • ENUM('x-small','small','medium','large','x-large')형태
  • 하나만 선택하는 단일 선택만 가능
  • ENUM 리스트에 없는 잘못된 값 입력시 빈문자열이 대신 삽입
  • ENUM 사용시 x-small 등이 - 0,1 등으로 매핑되어 메모리를 적게 사용하는 이점
  • 최대 65,535개의 요소를 넣은 수 있다
  • 공간적인 이점 존재
    -> but, 애플리케이션의 수정에 따라 정의한 목록 수정해야하는 단점

SET
- 문자열을 열거한 타입

  • ENUM의 단일 선택과 달리 여러개의 데이터 선택 가능
  • 비트 단위의 연산이 가능
  • 최대 64개 요소를 집어넣을 수 있다
  • 공간적인 이점 존재
    -> but, 애플리케이션의 수정에 따라 정의한 목록 수정해야하는 단점

관계

  • 데이터베이스에는 여러 개의 테이블이 존재
    -> 테이블들은 서로의 관계가 정의되어 있다

1:1 관계

  • 두 개의 테이블로 나눠 테이블의 구조를 더 이해하기 쉽게 만들어준다

ex) 한명의 유저에 하나의 이메일

1:N 관계

  • 한 개체가 다른 많은 개체르 포함하는 관계

ex) 한 유저당 여러개의 상품 선택 가능

N:M 관계

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

  • 테이블 간의 관계를 조금 더 명확하게 하고 테이블 자체의 인덱스를 위해 설정된 장치
  • 기본키, 외래키, 후보키, 슈퍼키, 대체키 존재

기본키(primary key)

  • 유일성과 최소성을 만족하는 키
  • 테이블의 데이터 중 고유하게 존재하는 속성 (중복 X)
  • 자연키, 인조키 중에 골라서 설정

자연키

  • 중복된 값들을 제외하며 중복되지않은 것을 '자연스럽게' 뽑다가 나오는 키
  • 자연키는 언젠가 변한다는 속성을 가진다

ex) 테이블에 이름,성별,주민등록번호 속성 존재
-> 이름, 성별은 중복되는 값이 들어올 수 있으므로 '주민등록번호'를 기본키로 설정

인조키

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

외래키(foreign key)

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

후보키(candidate key)

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

대체키(alternate key)

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

슈퍼키(super key)

  • 각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
profile
기록하여 기억하고, 계획하여 실천하자. will be a FE developer (HOME버튼을 클릭하여 Notion으로 놀러오세요!)

0개의 댓글