기본 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