일정한 규칙, 규약을 통해 구조화되어 저장되는 데이터의 모음이며 실시간 접근과 동시 공유가 가능하다.
DBMS (DataBase Management System) : DB를 제어, 관리하는 통합 시스템
여러 개의 속성을 지닌 명사
속성 (attribute) : 릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보. 서비스의 요구 사항에 맞춰 속성이 정해진다.
강한 엔터티 : 혼자서 존재할 수 있는 엔터티 (ex. 건물)
약한 엔터티 : 다른 엔터티의 존재 여부에 따라 종속적인 엔터티 (ex. 방)
데이터베이스에서 정보를 구분하여 저장하는 기본 단위
데이터베이스는 엔터티에 관한 데이터를 릴레이션 하나에 담아서 관리한다.
회원이라는 엔터티가 DB에서 관리될 때 릴레이션으로 변화된 것을 볼 수 있다.
관계형 DB에서의 릴레이션 : 테이블
NoSQL DB에서의 릴레이션 : 컬렉션
관계형 DB (ex. MySQL) : 레코드 - 테이블 - DB 로 이루어짐
NoSQL DB (ex. MongoDB) : 도큐먼트 - 컬렉션 - DB 로 이루어짐
릴레이션에서 관리한다. 구체적이며 고유한 이름을 갖는 정보이다.
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합
회원 엔터티 : member라는 테이블로 속성인 이름, 아이디 등을 가지고 있다.
레코드 (튜플) : 테이블에 쌓이는 행(row) 단위의 데이터
필드는 타입을 가지며, DBMS마다 다르다. 아래 내용은 MySQL 기준이다.
DATE
: 날짜만 사용 (3 bytes)DATETIME
: 날짜 및 시간 모두 사용 (8 bytes)TIMESTAMP
: 날짜 및 시간 모두 사용 (4 bytes)CHAR
: 고정 길이 문자열 (0 ~ 255)VARCHAR
: 가변 길이 문자열 (0 ~ 65535)큰 데이터 저장 타입
TEXT
: 큰 문자열 저장BLOB
: 이미지, 동영상 같은 큰 데이터 저장문자열 열거 타입
ENUM
: ENUM(x-small, small, medium, large, x-large) 형태로 쓰이며 단일 선택만 가능SET
: ENUM과 비슷하지만, 여러 개의 데이터를 선택할 수 있고 비트 단위의 연산을 할 수 있음DB엔 여러개의 테이블이 있고, 서로의 관계가 화살표로 정의되어 있다.
테이블 간 관계를 명확히 하고, 테이블 자체의 인덱스를 위해 설정된 장치
유일성 : 중복되는 값이 없음
최소성 : 필드를 조합하지 않고 최소 필드만 사용해 키를 형성할 수 있는 것
유일성과 최소성을 만족하는 키. 자연키와 인조키 중 설정한다.
자연키 (Natural Key) : 중복되지 않은 값들을 ‘자연스레’ 뽑다가 나오는 키 - 언젠가는 변하는 속성을 가진다.
- ex) 유저 테이블의 속성 중, 주민번호가 중복되지 않기에 선택
인조키(Artificial Key) : 인위적으로 생성한 키 (고유 식별자 부여) - 인위적으로 생성한 키
따라서 보통은 인조키를 기본키로 사용한다.
다른 테이블의 기본키를 그대로 참조하는 값
개체와의 관계를 식별하는 데 사용하기에 중복되어도 괜찮다.
기본키가 될 수 있는 후보로, 유일성과 최소성을 동시에 만족한다.
후보키가 두 개 이상일 경우, 기본키 이외의 남은 후보키를 칭한다.
각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키
행과 열을 가지는 표 형식의 데이터를 저장하는 형태의 DB
대부분의 운영체제와 호환되며 현재 가장 많이 사용하는 DB
MySQL 다음으로 선호되는 DB
SQL을 사용하지 않는 DB를 말하며, 대표적으로 MongoDB와 redis가 있다.
인메모리 데이터베이스이자 키 - 값 데이터 모델 기반의 데이터베이스
인덱스는 아래 링크에 정리해두었기에, 따로 정리는 안하겠습니다.
CS 스터디 - DB index
가볍게 읽는 DB INDEX (with B-Tree)