RDBMS Modeling 기초

1. PK 설정
1) 회사 제공 칼럼 및 고객 제공 데이터는 1차 식별자로 채택하지 않는다.
예) 사회 보장 번호(fk), 고객 이름, 전화 번호(fk), 이메일(fk), 집 주소, 고객 번호(pk)
– 전화번호, 이메일 주소가 없어 식별자로 설정되지 않는 경우가 있을 수 있습니다.
– 판단기준 : 주민등록번호, 전화번호, 이메일, 고객번호
2) pk 설정 시 반드시 하나의 컬럼으로 설정하지 않고 여러 컬럼을 묶어서 사용하는 경우가 많습니다.

ex) 년 – 월 – seq(int)

2. 데이터 유형

데이터 형식 영역 바이트
서명 서명되지 않은
TINYINT -128 ~ 127 0~255 1바이트
스몰린트 -32768 ~ 32767 0 ~ 65535 2바이트
중간 지능 -8388608 ~ 8388607 0 ~ 16777215 3바이트
지능 -2147483648 ~ 2147483647 0 ~ 4294967295 4 바이트
엄청난 -9223372036854775808
~9223372036854775807
0 ~ 18446744073709551615 8바이트
소수 정밀도와 규모가 있음

  • 10진수(5)의 경우: -99999 ~ 99999
  • DECIMAL(5, 1)의 경우: -9999.9 ~ 9999.9
  • DECIMAL(5, 2)의 경우: -999.99 ~ 999.99
변하기 쉬운
호버 -3.402823466×1038에서 3.402823466×1038 4 바이트
더블 -1.7976931348623157×10308에서 1.7976931348623157×10308 8바이트
– 즉, Signed와 Unsigned의 차이는 음수의 표현 여부이며, 정수형 칼럼 생성 시 다른 범위를 나타내기 위해 사용한다.

– 기본적으로 데이터 타입 생성 시 INT(n) Signed가 기본값으로 설정되어 있습니다.

: 적용예

--사용 예시
CREATE TABLE 'Example' (
              'id' INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
              ...
              ...
    )

1) 정수


– Tinyint: 0~255, 메모리 크기: 1byte -> small table의 경우 fk의 데이터 타입으로 자주 사용된다.

2) 오류
– Float와 Real은 근사값을 가져오지만 Decimal은 근사값을 가져오지 않고 대신 4~16바이트를 사용하므로 용량이 다소 큽니다.
-> 화폐 단위를 다룰 때 십진수를 자주 사용한다.

3) 텍스트

– char의 경우 입력되지 않은 공백을 공백으로 지정하고 Varchar는 입력한 데이터만큼 사용하며 기본값은 Varchar(50)을 사용합니다.
– 텍스트는 Varchar의 응용 프로그램이며 최대 22억 문자(=Varchar(max))의 가변 길이를 가집니다. 예) 책의 내용을 수용해야 하는 경우

– 인덱스는 가로채기 불가능하고 PK는 varchar(max) 및 text와 함께 사용할 수 없으며 큰 키이므로 정렬이 불가능하므로 배열로 사용할 수 있습니다.

4) 날짜 및 시간

– datetime(8byte) 또는 smalldatetime(4byte) 중 하나 사용

데이터 형식 영역
날짜 0000-00-00 ~ 9999-12-31
약속 시간 0000-00-00 00:00:00 ~ 9999-12-31 23:59:59
타임스탬프 1970-01-01 00:00:00 이후 초
시간 -838:59:59 ~ 838:59:59
년도 1901년 ~ 2155년

5) 통화

– 현금을 사용하지 않거나 느슨한 거스름돈, 이유: 달러 -> 대략적인 가치로 인해 외화로 환산할 때 오류 발생 -> 소수를 사용하는 것이 좋음

BLOB 유형 및 TEXT 유형

  • BLOB와 TEXT 계열의 유일한 차이점은 BLOB 유형은 문자 집합이나 데이터 정렬이 없는 이진 데이터를 저장하는 반면 TEXT 유형은 문자 집합과 데이터 정렬이 있는 텍스트 데이터를 저장한다는 것입니다.
  • BLOB – 이진 형식(TINYBLOB, SMALLBLOB, BLOB, MEDIUMBLOB, LONGBLOB)
  • TEXT – 텍스트 형식(TINYTEXT, SMALLTEXT, TEXT, MEDIUMTEXT, LONGTEXT)

*참조

– Infrastructure RDBMS Modeling Fundamentals – 이교준

https://nomadlee.com/mysql-%EC%B5%9C%EC%A0%81%EC%9D%98-%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED %83%80%EC%9E%85-%EC%84%A0%ED%83%9D-%EB%B0%A9%EB%B2%95/

https://codingspooning.entry/MySQL-Signed-Unsigned-%EB%B9%84%EA%B5%90-%EB%B0%8F-%EC%B0%A8%EC%9D%B4

(MySQL) 무부호, 무부호 비교 및 ​​차이

안녕하세요. 오늘 우리는 MySQL에서 서명된 데이터 유형 속성과 서명되지 않은 데이터 유형 속성을 비교하고 차이점을 알아낼 것입니다. MySQL Signed vs Unsigned ▣ 정수(Integer) Type Signed & Unsigned – MySQL은 SQL의 표준 정수형

codingspooning.tistory.com