해결된 질문
작성
·
77
답변 1
1
안녕하세요 상민님 ㅎㅎ
이러한 관점에서 바라보았을때 MySQL의 SET 타입을 사용할 경우 정규화를 달성할 수 없는 것을 이해하면 될까요?
>> 네 맞습니다. 정확히는 제 1정규형을 지키지 못합니다.
참고 : 제 1정규형
릴레이션의 모든 도메인이 더 이상 분해될 수 없는 원자 값(atomic value)만으로 구성되어야 합니다.
CREATE TABLE colors (
id INT PRIMARY KEY,
colors SET('red', 'green', 'blue', 'yellow')
);
SET의 경우 red, green과 같은 값을 가질 수 있는 것 -> 원자성을 위배함.
이를 해결하기 위해서 다음과 같이 colors로 빼고 테이블을 나눠서 구축하기도 합니다.
CREATE TABLE items (
id INT PRIMARY KEY,
name VARCHAR(255)
);
CREATE TABLE colors (
id INT PRIMARY KEY,
color_name VARCHAR(50)
);
CREATE TABLE item_colors (
item_id INT,
color_id INT,
FOREIGN KEY (item_id) REFERENCES items(id),
FOREIGN KEY (color_id) REFERENCES colors(id)
);
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.