목표:
우선 메뉴가 있는 테이블이 존재해야 관계설정이 가능하기 때문에 item테이블을 먼저 생성해주었다. 이번에는 sequelize말고 직접 로우쿼리로 작성해보았다.
CREATE TABLE IF NOT EXISTS item (
id bigint(5) NOT NULL AUTO_INCREMENT,
name bigint(5) NOT NULL,
option_id bigint(5) NOT NULL,
price bigint(5) NOT NULL,
type varchar(255) NOT NULL,
amount bigint(5) NOT NULL,
PRIMARY KEY(id)
)
숫자 타입 의미
크기에 따라 숫자 타입이 나뉜다
tinyint - smallint - int - bigint
단어 그대로 bigint는 가장 큰 용량의 숫자 데이터 타입이다.
또한 소괄호안의 숫자는 자리수를 의미한다. Zerofill이라는 옵션을 추가로 사용할 때만 의미가 있고 그것이 아니면 큰 의미가 없다.
ex) int(5), Zerofill옵션을 사용하면 숫자 2를 넣었을 때 00002가 나오게 된다.
나는 생각없이 테이블을 작성하였지만 데이터베이스의 용량을 설정하는 것과 유지비가 연관이 되기때문에 되도록이면 효율적인 용량을 설정할 수 있도록 하기위해 다시 작성해보았다.
DROP TABLE item
CREATE TABLE IF NOT EXISTS item (
id SMALLINT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
option_id SMALLINT NOT NULL,
price SMALLINT NOT NULL,
type ENUM('COFFEE','TEA','JUICE','SMOOTHIE') NOT NULL,
amount SMALLINT NOT NULL,
PRIMARY KEY(id)
);
우선 처음 데이터테이블과 차이점은
1) bigint -> smallint로 바꿔주었다 int가 차지하는 크기는 4바이트고 smallint(-32,768~32,767)를 써도 충분하다고 판단하였다.
2) 숫자타입 옆의 숫자자리를 의미하는 소괄호안의 숫자를 빼주었다.
3) 문자열타입의 varchar를 설정하고 ENUM을 설정해주었다.