기본 2 - 필드, 레코드, 타입
1. 개념잡기
회원이라는 엔터티를 기준으로 생각해보자.
테이블 : member
속성 : 이름, 아이디, 주소, 휴대폰번호
필드 : name, id, address, phone_number
속성 값을 테이블 내에서 영어로 표현한 값 - 한글은 쓰이지 않는다.
이 테이블에 쌓이는 행 단위의 데이터를 레코드라고 한다.
레코드는 튜플이라고 부르기도 한다.
2. 타입
2-1. 필드타입
필드는 타입을 갖는다.
이 타입은 각 DBMS 마다 약간씩 차이가 있다.
MySQL 기준으로 이해해보자.
2-2. 숫자 : TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
참고로 INT는 4byte이고 약 -21억 ~ 21억의 범위를 표현한다.
2-3. 날짜 : DATE, DATETIME, TIMESTAMP
DATE
날짜 부분은 있지만, 시간 부분은 없는 값
지원되는 범위 : 1000-01-01 ~ 9999:12:31
3바이트
DATETIME
날짜 및 시간
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
8바이트
객체
TIMESTAMP
날짜 및 시간 모두 포함
1970-01-01 00:00:00 ~ 2038-01-19 03:14:07
4바이트
카운트 값 : 1970-01-01 00:00:01 = 1초로 두고 카운트한 값
2-4. 문자 : CHAR, VARCHAR, TEXT, BLOB, ENUM, SET
CHAR
고정길이
0-255
VARCHAR
가변길이. 입력된 데이터에 따라 용량을 가변시켜 저장한다.
0-65535
VARCHAR(10000) 임에도 10 바이트의 이메일을 저장할 경우, 10바이트 + 길이 기록용 1바이트로 11바이트로 저장된다.
CHAR 는 유동적이지 않은 길이를 가진 데이터를, VARCHAR 는 유동적인 길이를 가진 데이터를 저장할 때 사용하면 된다.
TEXT
큰 데이터를 저장할 때 쓰는 타입
게시판의 본문 등을 저장할 때 사용한다.
BLOB
이미지, 동영상 등 큰 데이터를 저장할 때 쓰인다.
보통은 아마존의 이미지 호스팅 서비스인 S3를 이용하는 등 서버에 파일을 올린 뒤, 파일에 관한 경로를 VARCHAR 로 저장한다.
CDN
2-5. ENUM, SET
enum
x-small, xmall, medium, large, x-large
정해진 리스트의 값 중에서 하나만 선택한 값이 들어가야하며,
잘못된 값을 삽입하면 빈 문자열이 대신 삽입된다.
x-small 등이 0, 1 등으로 매핑되어서 메모리를 적게 사용하는 이점을 얻는다.
최대 65,535 개의 요소를 넣을 수 있다.
set
enum과 비슷하지만, 여러개의 데이터를 선택할 수 있고,
비트 단위의 연산을 할 수 있으며
최대 64개의 요소를 집어넣을 수 있다.
enum과 set 둘다 공간적으로 이점을 볼 수 있다는 장점이 있지만,
어플리케이션의 수정에 따라서 데이터베이스의 ENUM 이나 SET 에서 정의한 목록을 수정해야한다는 단점이 있다.
요즘은 하드웨어의 성능이 좋아져서 이정도의 공간적 이점은 수정작업의 단점에 비해서 큰 메리트가 없다.
Last updated