조 스테파넬리 (Joe Stefanelli)의 답변에 따라 열을 세분 할 수 없습니다.
각 열을 구조체 또는 자체 클래스로 처리하려는 것처럼 느껴집니다. 구조체로 TABLE을 생각하고 각 FIELD를 프리미티브로 생각하는 것이 좋습니다.
가장 가까운 항목은 12 개의 열을 만들고 적절하게 이름을 지정하거나 (C1_Pos, C1_Neg, C2_Pos, C2_Neg 등) 두 개의 테이블을 만드는 것입니다.
하나의 테이블에는 기본 키 열이 있고 두 개의 값 열이 있습니다. positive
및 negative
. 주 테이블의 각 항목은이 테이블을 참조합니다. 당신이 값 중 하나를 잡아 할 때마다 예를 들어
은 ...
다음
CREATE TABLE value_pair (
id INT,
positive INT,
negative INT,
PRIMARY KEY (id)
);
CREATE TABLE master (
id INT,
value_pair_id_1 INT,
value_pair_id_2 INT,
value_pair_id_3 INT,
value_pair_id_4 INT,
value_pair_id_5 INT,
value_pair_id_6 INT,
PRIMARY KEY (id),
FOREIGN KEY (value_pair_id_1) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_2) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_3) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_4) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_5) REFERENCES value_pair (id),
FOREIGN KEY (value_pair_id_6) REFERENCES value_pair (id)
);
, 그러나, 당신은 두 개의 테이블을 조인하도록 강요하고 있습니다. 당신이 모든 값을 원하는 경우, 당신은 이것은 위반 6 회 ...
SELECT
*
FROM
master
INNER JOIN
value_pair AS [VP1]
ON master.value_pair_id_1 = [VP1].id
INNER JOIN
value_pair AS [VP2]
ON master.value_pair_id_2 = [VP1].id
INNER JOIN
value_pair AS [VP3]
ON master.value_pair_id_3 = [VP1].id
INNER JOIN
value_pair AS [VP4]
ON master.value_pair_id_4 = [VP1].id
INNER JOIN
value_pair AS [VP5]
ON master.value_pair_id_5 = [VP1].id
INNER JOIN
value_pair AS [VP6]
ON master.value_pair_id_6 = [VP1].id
개인적으로
, 난 그냥 12 열을 사용하는 거라고 ...
에 가입해야 데이터베이스의 첫 번째 정규 형식 : 모든 특성 (즉, 열)은 원자 적이며 단일 값만 포함하거나 전혀 값을 포함하지 않습니다. 열은 하나의 열이고, 데이터 유형을 가지고 있으며, 값을 가질 수 있습니다. 그러나 열을 "세분화"할 수는 없습니다 ... –