- 데이터베이스는 일정한 규칙, 혹은 규악을 통해 구조화되어 저장되는 데이터의 모음이다.
- 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 query를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다.
- 또한 데이터베이스는 실시간 접근과 동시 공유가 가능하다.
4.1.1 엔터티
- 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다.
A라는 엔티티가 B라는 엔티티에 종속적이라면 A는 약한 엔티티이고 B는 강한 엔티티가 된다.
4.1.2 릴레이션
- 데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다.
- 엔티티에 관한 데이터를 릴레이션 하나에 담아서 관리한다.
- 릴레이션은 관계형 데이터베이스에서 테이블이라고 하며, noSQL 데이터베이서 컬렉션이라고 한다.
- 관계형 데이터베이스는 record - table - database로 이루어져 있고,
NoSQL 데이터베이스는 document - collection - database로 이루어져 있다.
4.1.3 속성
릴레이션이 관리하는 구체적이며 고유한 이름을 갖는 정보이다.
4.1.4 도메인
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합이다.
4.1.5 필드와 레코드
record
테이블에 쌓이는 row 단위의 데이터를 record 또는 tuple이라고 한다.
Field Type
숫자 타입
날짜 타입
DATE
- 날짜
- 1000-01-01 ~ 9999-12-31
- 3byte
DATETIME
- 날짜 및 시간
- 1000-01-01 00:00:00 ~ 9999-- 12-31 23:59:59
- 8byte
TIMESTAMP
- 날짜 및 시간
- 1970-01-01 00:00:01 ~ 2038-01-19 03:14:07
- 4byte
문자 타입
CHAR
- 고정 길이 문자열이며 길이는 0 ~ 255 사이의 값을 가진다.
- 레코드를 저장할 때 선언한 길이 값으로 고정해서 저장한다.
- 유동적이지 않은 길이를 가진 데이터에서 효율적이다.
VARCHAR
- 가변 길이 문자열이며 0 ~ 65,535 사이의 값을 가진다.
- 입력된 데이터에 따라 용량을 가변시켜 저장한다.
- 길이 정보를 저장하기 위해 255 이하의 길이는 1byte, 255를 초과하는 길이는 2byte의 추가 공간이 필요하다.
- 유동적인 길이를 가진 데이터에서 효율적이다.
TEXT
- 게시판 본문 등 큰 문자열을 저장할 때 사용한다.
BLOB
- 이미지, 동영상 등 큰 데이터를 저장할 때 사용한다.
ENUM
- 열거한 문자열에서 단일 선택만 가능하다.
- 각각의 enum 값은 index가 할당된다. (1부터 시작하며 0은 빈 문자열 오류 값의 index)
- 최대 65,535개의 요소를 넣을 수 있다.
SET
- 여러 개의 데이터를 선택할 수 있다.
- 비트 단위의 연산이 가능하다.
- 최대 64개의 요소를 넣을 수 있다.
4.1.6 관계
데이터베이스는 여러 개의 테이블이 있고 테이블 간의 관계가 정의되어 있다. 이 관계를 관계 화살표로 나타낸다.
4.1.7 키
Primary key
유일성과 최소성을 만족하는 키이다.
자연키
- 주민등록번호 등의 속성
- 언젠가 변하는 속성을 가진다.
인조키
- 인위적으로 id 부여 ex. Oracle: sequence, MySQL: auto increment
- 자연키와 대조적으로 변하지 않는다.
- 보통 인조키를 기본키로 설정한다.
Foreign Key
다른 테이블의 기본키를 그대로 참조하여 개체와의 관계를 식별하는 데 사용한다.
Candidate key
기본키가 될 수 있는 후보들이며 유일성과 최소성을 모두 만족해야 한다.
Alternate key
후보키 중에서 기본키로 선택되지 않고 남은 키이다.
Super key
각 레코드를 유일하게 식별할 수 있는 유일성을 갖춘 키이다.
[참고링크]