나는 MySQL 데이터베이스를 사용하고 있습니다. 표 1에는 복합 기본 키가 있습니다. 표 1의 복합 PK를 참조하는 복합 외래 키가 있습니다 (표 2 참조).복합 외래 키로 잘못된 항목 생성
문제점은 아래에 나와 있습니다. :
표 1
| ------------ PK ----------- |
menuid | categoryid | 범주
1 | 1 | myCategoryName1
1 | 2 | myCategoryName2
2 | 1 | myCategoryName3
2 | 2 | myCategoryName4
2 | 3 | myCategoryName5
:
표 2
| ------ FK ----------- | | ---- PK ---- |
menuid | categoryid | postid | 포스트 이름
1 | 3 | 1 | 내가 데이터베이스에 유효한 값을 삽입 할 수 있기 때문에 myPostName
는 지금, 그것은 큰 문제가되지 않습니다. 그러나 이것은 데이터베이스의 관계형 오류와 같으며 깨끗하고 올바르게 작동하는 DB를 갖고 싶습니다. 이 사소한 문제를 해결할 수있는 방법이 있습니까?
UPDATE : 내 데이터베이스를 구현하는 phpMyAdmin을 사용하던 분명히 phpMyAdmin을에 복합 외래 키를 구현하는 방법은 없습니다. 나는 Table2
이 복합 외부 키 내 두 번째 테이블의 이름입니다
SHOW CREATE TABLE Table2
를 통해 내 잘못 구현 된 외래 키 볼 수 있었다.
그러면 I 올바르게my_fk_constraint
는 제약의 이름이 추가되는
ALTER TABLE Table2 ADD CONSTRAINT my_fk_constraint
FOREIGN KEY (menuid, categoryid)
REFERENCES Table1(menuid, categoryid)
통해 수동 복합 외래 키를 추가했다.
참고 : 정상적으로 될 것으로 수동으로,이 방법은 새로운 항목을 삽입 (나 FK 열을 클릭하여 corrresponding 테이블을 참조) 때 드롭 다운 메뉴를 사용하는 것을 허용하지 않습니다 외래 키 제약 조건을 추가 phpMyAdmin에서 할 수 있습니다.
감사합니다. pst
과 thedayofcondor
모두 phpMyAdmin을 사용하여 작은 dicked 괴물입니다.
확실히 적절한 관계를 인식지지를 사용하고 있는지 확인 : 당신이 제대로 제약 조건을 설정하면
이
이 발생하지 않아야합니다. 또한이 FK를 DML을 통해 정의 했습니까 (아니면 논리적입니까)? 그렇다면 어떻게? –