RDBMS 모델링의 기초

  • by

1. pk 설정
1) 사업의 주체가 부여한 열, 고객으로부터 부여한 데이터는, 주 식별자로서 채용하지 않는다.


ex) 주민번호(fk), 고객명, 전화번호(fk), 이메일(fk), 집주소, 고객번호(pk)
– 전화번호와 메일이 없을 수 있으므로 식별자로 설정하지 않음
– 결정자: 주민번호, 전화번호, 이메일, 고객번호
2) pk 설정시 반드시 하나의 컬럼으로 설정하지 않고 복수의 컬럼을 함께 사용하는 경우도 많다

ex) 년 – 월 – seq(int)

2. 데이터형

데이터 유형 범위 바이트
signed unsigned
TINYINT -128 ~ 127 0~255 1바이트
SMALLINT -32768 ~ 32767 0~ 65535 2바이트
MEDIUMINT -8388608 ~ 8388607 0~16777215 3바이트
INT -2147483648 ~ 2147483647 0~4294967295 4바이트
BIGINT -9223372036854775808
~ 9223372036854775807
0~18446744073709551615 8바이트
DECIMAL 전체 자릿수와 소수점 자릿수

  • DECIMAL(5)의 경우: -99999~99999
  • DECIMAL(5,1)의 경우: -9999.9~9999.9
  • DECIMAL(5, 2)의 경우: -999.99~999.99
가변
FLOAT -3.402823466×1038~3.402823466×1038 4바이트
DOUBLE -1.7976931348623157×10308~1.7976931348623157×10308 8바이트
– 즉, Signed와 Unsigned의 차이는 음수를 표현할지 여부에 따라 정수형의 열을 생성할 때 범위를 다르게 줄 때 사용한다.

: 사용 예

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

1) 정수


– Tinyint : 0 ~ 255, 저장 크기 : 1byte -> 소형 테이블의 경우 fk 데이터 형식으로 자주 사용됩니다.

2) 실수
– float, real은 근사값을 가져오지만, decimal은 근사값을 가져오지 않고 대신 4~16바이트까지 사용하므로 용량이 조금 크다.


-> 화폐 단위를 취급할 때는 decimal을 사용하는 경우가 많다(numeric은 decimal과 같다고 생각하고, decimal을 쓰면 좋다)

3) 문자

– char는 입력되지 않은 공간은 빈 공간으로 할당되며 Varchar는 입력한 데이터만 사용하고 Varchar(50)을 기본값으로 합니다.


– text는 Varchar의 어플리케이션이며, 최대 22억 문자의 가변 길이를 가진다(=Varchar(max)). ex) 본 책자의 내용을 넣어야 할 때

– Varchar(max), Text 를 사용하면 인덱스를 잡을 수 없고, pk 로 참가할 수 없는, 큰 키이므로 sort 도 할 수 없기 때문에 데이터 필드로서 쓸 수 있다.

4) 일시

– datetime(8byte), smalldatetime(4byte) 중 하나를 말한다

데이터 유형 범위
DATE 0000-00-00~9999-12-31
DATETIME 0000-00-00 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP 1970-01-01 00:00:00 이후 이전 초
TIME -838:59:59~838:59:59
YEAR 1901~2155

5) 통화

– money, smallmoney는 쓰지 말고 이유 : 달러 -> 외화로 변환 할 때 근사값으로 인해 오류가 발생합니다 -> decimal을 쓰는 것이 좋습니다.

BLOB 타입과 TEXT 타입

  • BLOB와 TEXT 그룹의 유일한 차이점은 BLOB 유형은 문자 세트나 콜레이션이 없는 이진 데이터를 저장하는 반면, TEXT 유형은 문자 세트와 콜레이션이 있는 텍스트 데이터를 저장한다는 것입니다.

  • BLOB – 바이너리 형식 (TINYBLOB, SMALLBLOB, BLOB, MEDIUMBLOB, LONGBLOB)
  • TEXT – 텍스트 형식(TINYTEXT, SMALLTEXT, TEXT, MEDIUMTEXT, LONGTEXT)

*참고

– 인프라 RDBMS 모델링의 기초 – 이교준

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) Signed, Unsigned 비교와 차이

안녕하세요. 오늘은 MySQL에서 데이터 타입 속성 Signed와 Unsigned에 대해 비교하여 차이점을 살펴 보겠습니다.

MySQL Signed vs Unsigned ▣ Integer (정수) 타입 Signed & Unsigned – MySQL 는 SQL 의 표준 정수형이다

codingspooning.