데이터베이스 예습

이제우·2023년 9월 25일
0

PK, FK

PK(Primary Key/기본키)는 사람마다 구별하기 위한 Key인 주민등록번호가 있듯 수많은 데이터를 구별하기 위해 존재하는 것이 바로 PK이다.

PK는 비어있어도 안되며(NOT NULL), 중복 되어서도 안된다(Unique). 가끔 주민등록번호를 특정 데이터를 식별할 수 있는 Key로 생각하여 PK로 지정하는 경우가 있는데, 이는 잘못된 방법이다. 주민등록번호는 가능성은 희박하지만 변경될 가능성이 있기 때문이다. 때문에 현업에서 PK는 랜덤값이나 숫자가 1씩 증가하는 방식으로 생성한다.

FK(Foreign Key/외래키)는 참조하는 테이블과 참조되는 테이블로 나누어진다. 이 FK로 테이블간의 관계가 어떻게 되는지 확인할 수 있다.(1:1, 다:다, 다:1)


데이터 유형

  • 정수로 저장해야 하는 경우 INT

    휴대폰 번호나 주민등록번호 같은 경우는 정수가 아닌 문자로 저장해야한다.
    숫자간의 계산에 사용되지 않고 고유의 값 그대로 사용해야하기 때문이다.

  • 10억이 넘는 수를 저장할 수도 있는 경우 BIGINT
  • 실수로 저장해야하는 경우 DECIMAL
  • 문자로 저장해야하는 경우 VARCHAR
  • TIMEZONE을 고려하지 않고 날짜 데이터만 저장할 경우 DATETIME
    ex) 국내 서비스
  • TIMEZONE을 고려하여 날짜 데이터를 저장할 경우 TIMESTAMP
    ex) 글로벌 서비스

NOTNULL

특정 행에 데이터 값이 없을 때는 null로 표현한다. 이 null은 그 자체로 "값이 없다"를 나타내는 것인데 테이블을 정의할 때 특정 행이 null을 갖지 못하도록 설정할 수 있다. 이걸 not null이라고 한다.

0과 null은 다른 의미.
1 + null = 1이 아닌 null
할당되지 않아 적용이 불가능한 값


Charset, Collation

Charset은 문자집합, Collation은 정렬을 뜻한다.

실생활의 모든 데이터는 텍스트 기반이다. 이로인해 텍스트 데이터를 저장할 수 있는 자료형이 필요했고 그렇게 나온 것이 UTF-8이다.
UFT-8은 1~4바이트까지 저장이 가능하도록 설계되었는데 실제로 전세계 모든 문자가 21bit로 3바이트가 조금 안되는 양에 저장이 되기 때문에 Mysql은 공간절약 + 속도 향상을 위해 UTF-8을 3바이트 가변 자료형으로 설계하였다.

하지만 Emoji같은 새로운 문자가 UTF-8의 남은 4바이트 영역을 사용하면서 Mysql도 4바이트 가변 자료형을 추가하는데 그것이 utf8mb4이다.

profile
게으른 사람 중에 제일 부지런하게 사는 사람이 꿈

0개의 댓글