다음은 데이터베이스를 설정하는 데 사용하려는 내 sql 스크립트입니다. 기본적으로 테스트/설문 조사와 같은 선택을하는 사람들이 있습니다. 각 개인 (사람 테이블)에 대한 정보와 각 질문 (질문 테이블)에 대한 답변이 있습니다. 질문에 대한 기본 키가 (id, qid)
입니다.외래 키 오류를 생성하는 MySQL 150
여기 내 문제가 있습니다. 각 질문과 관련된 정수 배열을 저장하고 싶습니다. 그래서 세 번째 테이블, 배열, 누구의 기본 키는 (id, qid, idx)
입니다 idx 배열의 값을 인덱스입니다 .ID 및 qid 모두 해당 질문을 테이블에 해당 항목이 있어야합니다, 그래서 이러한 외래 키를 만들었지 만 일반적인 150 errno 내가 이렇게. 내가 확실하지 않다 왜.
CREATE TABLE person (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
age INT,
income INT
);
CREATE TABLE questions (
id INT NOT NULL,
qid INT NOT NULL,
a INT,
b INT,
c INT,
PRIMARY KEY (id, qid),
FOREIGN KEY (id) REFERENCES person(id)
);
CREATE TABLE array (
id INT NOT NULL,
qid INT NOT NULL,
idx INT NOT NULL,
array_value INT NOT NULL,
PRIMARY KEY (id, qid, idx),
FOREIGN KEY (id) REFERENCES person(id),
FOREIGN KEY (qid) REFERENCES questions(qid)
);
이 스크립트는 작동하지 않습니다. 당신이 QID에 대한 외래 키를 설정하려고 맨 마지막 줄을 제거하면 스크립트가 실행됩니다 withou t 오류.
이 외래 키를 만들 때 발생하는 오류는 무엇입니까?
+1 from me ...... –
고마워, 그게 내가하고 싶은 일 이었어. 당신의 대답은 제가하는 일이 제 상황을 다루는 적절한 방법이 아니라는 인상을줍니다. 내가하려는 일을하는 더 좋은 방법이 있습니까? (즉, 배열을 테이블의 모든 레코드와 연관시킵니다.) –
나에게있어 보이는 것은 괜찮습니다. 내 개인적인 취향은 질문 표의 기본 키로 단일 열을 갖는 것입니다. 하지만 그것은 개발자가 DAO에 일관된 패턴을 원하고 단일 값, 원시 데이터 유형을 원한다는 것을 알려줍니다. 식별자로 두 멤버가있는 Object (Class)의 추가 복잡성을 원하지 않습니다. – spencer7593