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바이트 |
| 소수 | 정밀도와 규모가 있음
|
변하기 쉬운 | |
| 호버 | -3.402823466×1038에서 3.402823466×1038 | 4 바이트 | |
| 더블 | -1.7976931348623157×10308에서 1.7976931348623157×10308 | 8바이트 | |
– 기본적으로 데이터 타입 생성 시 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://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