1. 데이터베이스란?
일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음이다
해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS라고 하며
데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리언어를 통해
삽입, 삭제, 수정, 조회 등을 수행 할 수 있다
또한 실시간 접근과 동시 공유가 가능하다
데이터베이스 위에 DBMS가 있고 그 위에 응용 프로그램이 있고
이러한 구조를 기반으로 데이터를 주고 받는다
2. 엔티티(Entity)
사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사를 의미한다
엔티티에는 약한 엔티티와 강한 엔티티가 있는데
혼자서는 존재하지 못하는 엔티티를 약한 엔티티
혼자서 존재할 수 있는 엔티티를 강한 엔티티라고 한다
예를들어 방은 건물 안에만 존재하기 때문에
방은 약한 엔티티 건물은 강한 엔티티가 된다
3. 릴레이션 (Relation)
데이터베이스에서 정보를 구분하여 저장하는 기본 단위이다
엔티티에 관한 데이터를 데이터베이스는 하나의 릴레이션에 담는다
이러한 릴레이션을 관계형데이터베이스 (mysql, oracle) 에서는 테이블 이라하고
NoSQL (mongoDB) 데이터베이스에서는 컬렉션 이라고 한다
관계형 데이터베이스 구조는 레코드 - 테이블 - 데이터베이스
NoSQL 구조는 도큐먼트 - 컬렉션 - 데이터베이스
4. 속성 (attribute)
릴레이션에서 관리하는 구체적이며 고유한 이름을 갖는 정보이다
예를 들어 자동차에서 속성이라 하면 자동차 넘버, 바퀴 수, 차종, 색깔 등이 있다
5. 도메인 (domain)
릴레이션에 포함된 각각의 속성들이 가질 수 있는 값의 집합을 말한다
예를들어 성별이라는 속성이 있으면 속성이 가질 수 있는 값은 {남, 여} 라는 집합이 된다
6. 필드와 레코드
위에서 다룬 속성(열) 을 필드라고도 하며
그 속성 아래에 튜플(행) 을 레코드라고 한다
7. 필드 타입
필드는 타입을 갖는다
예를 들어 이름은 문자열, 전화번호는 숫자열 이런식으로 말이다
DBMS마다 조금씩 다르지만 많이쓰이는 MySQL을 기준으로 알아보자
숫자타입
타입 | 용량 (바이트) |
TINYINT | 1 byte |
SMALLINT | 2 byte |
MEDIUMINT | 3 byte |
INT | 4 byte |
BIGINT | 8 byte |
날짜타입
타입 | 용량 (바이트) |
DATE | 3 byte |
DATETIME | 8 byte |
TIMESTAMP | 4 byte |
DATE
날짜 부분은 있지만 시간 부분은 없는 값에 사용한다
DATETIME
날짜 및 시간 부분을 모두 포함하는 값에 사용한다
TIMESTAMP
날짜 및 시간 부분을 모두 포함하는 값에 사용한다
문자타입
타입 | 용량 (최솟값, 최댓값) 또는 설명 |
CHAR | 0 ~ 255 |
VARCHAR | 0 ~ 65,535 |
TEXT | 큰 문자열 저장에 쓰인다 |
BLOB | 이미지, 동영상 같은 큰 데이터 저장에 쓰인다 |
ENUM | 0 - 65,535 |
SET | 비트 단위의 연산, 최대 64개 요소 저장 가능하다 |
CHAR
테이블을 생성할 때 선언한 길이로 고정되며 길이는 0에서 255 사이의 값을 가진다
레코드를 저장할 때 무조건 선언한 길이 값으로 고정해서 저장된다
VARCHAR
가변 길이 문자열이다
길이는 0에서 65,535 사이의 값으로 지정할 수 있다
입력된 데이터에 따라 용량을 가변시켜 저장한다
그렇기 때문에 지정된 형태에 따라 저장된 CAHR의 경우 검색에 유리하다
검색을 별로하지 않고 유동적인 길이를 가진 데이터는 VARCHAR가 좋다
TEXT
큰 문자열 저장에 쓰며 주로 게시판의 본문을 저장할 때 쓰인다
BLOB
이미지, 동영상 등 큰 데이터 저장에 쓰인다
그러나 보통 S3를 이용해서 서버에 파일을 올리고 파일에 관한 경로를 VARCHAR로 저장한다
ENUM
ENUM('x-small', 'small', 'medium', 'large', 'x-large') 형태로 쓰인다
이 중에서 하나만 선택하는 단일 선택만 가능하다
ENUM 리스트에 없는 잘못된 값을 삽입하면 빈 문자열이 대신 삽입 된다
ENUM을 이용하면 x-small 등이 0, 1 등으로 매핑되어 메모리를 적게 사용하는 이점이 있다
ENUM은 최대 65,535개의 요소들을 넣을 수 있다
SET
ENUM과 비슷하지만 여러 개의 데이터를 선택할 수 있다
비트 단위의 연산을 할 수 있으며 최대 64개의 요소를 집어 넣을 수 있다는 점도 있다
참고로 ENUM이나 SET을 사용하면 공간적으로 이점을 볼 수 있지만
애플리케이션의 수정에 따라 데이터베이스의 ENUM이나 SET에서 정의한 목록을 수정해야하는 단점이 있다
'DataBase' 카테고리의 다른 글
[DataBase] 트랜잭션과 무결성 (2) | 2022.11.21 |
---|---|
[DataBase] ERD와 정규화 과정 (0) | 2022.11.20 |
[DataBase] 데이터베이스 관계, 키 (0) | 2022.11.19 |
[DataBase] Redis 개념정리 (0) | 2022.11.15 |
[DataBase] 관계형 데이터베이스, NoSQL 데이터베이스 (0) | 2022.10.05 |