사용하는 이유
- 값을 미리 정의해서 사용될 수 없는 값이 들어오는 것을 방지
- 데이터 정규화가 가능
- ENUM의 데이터 추가는 간단하지만 수정이 어려움
- black 에서 white로 수정시 유효하지 않는 black을 찾기 위해 테이블 전체를 다 찾아야 함 - MySQL류 가 아닌 DBMS에서는 ENUM 을 지원 하지 않음
방식
MySQL
CREATE TABLE Locker (
id INT AUTO_INCREMENT KEY,
name VARCHAR,
status ENUM('occupied', 'unoccupied', 'under management')
);
INSERT INTO Locker(name, status) VALUES ('seoul','occupied');
Squelize
const LockerStatus = {
UNOCCUPIED: 'unoccupied',
UNDER_MANAGEMENT: 'under management',
OCCUPIED: 'occupied',
};
const Locker = sequelize.define(
'lockers',
{
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING
},
status: {
type: DataTypes.ENUM(Object.values(LockerStatus)),
},
},
{ underscored: true },
);