#10 Nomalization
#10.1 Normalizing Status
-- status 빼기
CREATE TABLE statuses (
status_id BIGINT UNSIGNED PRIMARY KEY auto_increment,
status_name ENUM (
'Canceled',
'In Production',
'Planned',
'Post Production',
'Released',
'Rumored'
) NOT NULL,
explanation TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL
)
INSERT INTO statuses (status_name) SELECT status from movies GROUP BY status;
-- value 대신 select 문 사용 가능
-- status_id 생성 후 연결
ALTER TABLE movies ADD COLUMN status_id BIGINT UNSIGNED;
ALTER TABLE movies ADD CONSTRAINT fk_status FOREIGN KEY (status_id) REFERENCES statuses (status_id) ON DELETE SET NULL;
-- 기존 데이터 기준으로 id 값 적용
UPDATE movies SET status_id = (SELECT status_id FROM statuses WHERE status_name = movies.status);
-- 기존 status 제거
ALTER TABLE movies DROP COLUMN status;#10.2 Normalizing Directors
#10.3 Normalizing Original Language
#10.4 Normalizing Countries
#10.5 Unions
#10.6 Conclusions
Last updated