'SET' 데이터 타입과 정규화에 대해 궁금한 점이 있습니다.
안녕하세요 좋은 강의 감사합니다.
테이블의 타입에 값이 두 개 이상이 들어갈 경우 DB의 정규화를 만족하지 못하는 것으로 알고 있습니다.
이러한 관점에서 바라보았을때 MySQL의 SET 타입을 사용할 경우 정규화를 달성할 수 없는 것을 이해하면 될까요?
답변 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점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
디자인패턴 질문
0
35
2
팩토리 패턴
0
51
2
싱글톤 패턴 구현방법
0
53
2
라이브러리 프레임워크 차이 질문
0
54
1
프로젝트 질문 드립니다!
0
49
2
추상화 질문
0
41
2
직렬화 역직렬화 질문 드립니다!
0
55
2
안녕하세요 큰돌님!
0
79
2
REST API (Self-descriptive messages)
0
68
1
시스템 엔지니어 관련 질문입니다.
0
126
2
오버라이딩 관련하여 질문드립니다.
0
107
2
교착상태의 4가지 필요조건이 필요충분조건이 아닌 이유
0
135
1
렌더 트리, 렌더 레이어와 그래픽 레이어
0
87
2
로컬스토리지, 세션스토리지, 쿠키의 공통점
0
91
1
IPv4가 IPv6보다 빠른 경우
0
176
2
UDP가 전송계층의 역할을 못하는 건 아닌지
0
87
1
Path MTU 발견하였음에도 패킷 분할이 필요한 이유?
0
100
2
교재의 LFU 알고리즘에서 6번이 왜 히트인가요?
0
107
2
페이지 교체 알고리즘? 프레임 교체 알고리즘?
0
118
2
Static 키워드가 메모리에 올라가는 시점
0
109
2
헤더 압축부분 질문드립니다
0
109
2
공유 캐시 관련 질문 드립니다.
0
83
2
컨텍스트는 context와 contextual information으로 나눠진다는게 무슨뜻인가요?
0
266
1
회선과 대역폭의 관계
0
106
2





