본문 바로가기
Computer Science

[Database] 데이터베이스의 기본(엔터티, 속성, 릴레이션, 타입, 키 총정리)

by 개발현욱 2023. 1. 19.

데이터베이스의 기본

본 포스팅은 “면접을 위한 CS 전공지식 노트” (주홍철 지음, 길벗출판사) 의 내용을 바탕으로 정리 되었습니다.

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

엔터티(Entity)

엔터티란?

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

약한 엔터티와 강한 엔터티

서로 다른 엔터티가 존재할 때, 다른 엔터티의 존재 여부에 따라 종속적이라면, 약한 엔터티, 반대의 경우는 강한 엔터티라고 한다.

릴레이션

릴레이션(relation) : 데이터베이스에서 정보를 구분하여 저장하는 기본 단위

테이블과 컬렉션

종류 데이터 릴레이션 데이터베이스
RDBMS(MySQL) 레코드 테이블 데이터베이스
NoSQL(MongoDB) 도큐먼트 컬렉션 데이터베이스

속성

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

도메인

도메인(domain) : 속성들이 가질 수 있는 값의 집합
예시) 속성 -> 성별 -> 가질 수 있는 값 -> {남, 여} -> 도메인

필드와 레코드

필드와 레코드

필드(field) : 세로 열(column), 속성
레코드(record) : 가로 행(row), 튜플(tuble)

필드 타입

숫자 타입

MySQL 넘버 타입

날짜 타입

타입 용량(바이트) 날짜 시간 범위
DATE 3 O X 1000-01-01 ~ 9999-12-31
DATETIME 8 O O 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP 4 O O 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07

 

DATETIME과 TIMESTAMP가 유사해보이지만 차이가 있다.

https://kimhyunwook.tistory.com/8

 

[Database] MySQL에서 DATETIME과 TIMESTAMP의 차이는?

MySQL에서 DATETIME과 TIMESTAMP는 둘 다 YYYY-MM-DD hh:mm:ss 형식으로 유사 해보인다. 그러나, 둘의 차이는 어떤 것이 있을까? DATETIME - 'YYYY-MM-DD hh:mm:ss' 형식으로 표시 - '1000-01-01 00:00:00' 부터 '9999-12-31 23:59:59

kimhyunwook.com

 

문자타입
CHAR : 테이블을 생성할 때 선언한 길이로 고정되는 문자열. 0 ~ 255 사이의 값을 가진다.
VARCHAR : 가변 길이 문자열. 0 ~ 65,535 사이의 값으로 지정할 수 있다. 10글자의 문자열을 저장하면, 10글자에 해당하는 바이트 + 길이 기록용 1바이트로 저장하게 된다.

TEXT : 큰 문자열을 저장할 때 쓰는 타입. 최대 65,535 바이트까지 저장 가능하다.
BLOB : 이미지, 동영상 등 큰 데이터 저장에 쓴다. 최근에는 파일에 관한 경로를 VARCHAR로 저장한다.

ENUM : ENUM('x-small', 'small', 'medium', 'large', 'x-large') 형태로 쓰이며, 이중에서 하나만 선택하는 단일 선택만 가능하다. 잘못된 값을 삽입하면 빈 문자열이 대신 삽입된다. ENUM을 이용하면 데이터가 0, 1 등으로 매핑되어 메모리를 적게 사용하는 이점이 있다.
SET : ENUM과 비슷하지만 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할 수 있으며 최대 64개의 요소를 집어 넣을 수 있다.
-> ENUM과 SET은 공간적으로 이점이 있지만, 애플리케이션 수정에 따라 정의한 목록을 수정해야 한다는 단점이 있다.

관계

여러 개의 테이블 서로간의 관계를 정의한다.

관계

1:1(One-to-One)
1:N(One-to-Many)
N:M(Many-to-Many)

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

키

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


슈퍼키(Super key) : 유일성을 만족하는 키
후보키(Candidate key) : 유일성과 최소성을 동시에 만족하는 키
기본키(Primary Key) : 줄여서 PK 또는 프라이머리키라고도 하며, 유일성과 최소성을 만족하는 키
대체키(Alternate Key) : 후보키가 두 개 이상일 경우 어느 하나를 기본키로 지정하고 남은 후보키
자연키(Natural key) : 인위적으로 값을 생성하지 않고 기존의 속성에서 선정한 키 -> 언젠가는 변하는 속성이 있음
인조키(Artificial Key) : 인조적으로 생성한 키, 오라클에선 sequence, MySQL에서는 auto increment 등으로 설정한다. -> 자연키와는 대조적으로 변하지 않는다.
외래키(Foreign Key) : FK라고도 하며, 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용

728x90
반응형