이것은 바람직한 기능처럼 보이지만 외래 키가 기본 키 (복합 키)의 일부인 동안 어떻게 할 것인지 알 수없는 것처럼 보입니다. . 각각의 사용자와 각각의 액세스 레벨모든 레코드를 참조하는 외래 키 또는 접합 테이블에 레코드가 없음
Column | References
user user.id
access access.id
따라서있을 수 많은 항목이
테이블은 사용자가 액세스 할 수있는 User.id
및 Access.id
참조 함수를 참조하는 다수의 관계에 많은 간단한 접합 테이블이다. "수퍼 유저"를 단순화하기 위해 access
에 대한 NULL
값을 갖고 싶었습니다. 이는 모든 페이지에 액세스 할 수 있음을 의미합니다 (access
테이블의 행을 참조하지 않는 값을 입력하는 방법을 설명하는 유일한 방법입니다).). 문제는 MySQL이 NULL
값을 기본 키의 일부로 허용하지 않는다는 것입니다.
기본 키가있는 NULL
문제와 관련된 문제가 있습니까? 아니면 외래 키의 모든 행 (또는 행 없음)을 참조 할 수있는 다른 방법이 있습니까? 다른 방법으로는 외래 키를 사용하지 않도록 설정하거나 테이블의 모든 access.id에 대한 행을 추가해야합니다. 둘 중 하나가 바람직하지 않습니다.
감사합니다. 이 질문은 나를위한 연습만큼이나 많은 이론이므로 코드를 변경하거나 새 테이블을 추가하는 대신 접합 테이블 또는 관계 테이블의 디자인에서 수행 할 수있는 작업이 있는지 확인하려고합니다. – Devon
새 테이블을 추가 할 필요없이 쿼리 만 변경하면됩니다. 물론 수퍼 유저 플래그가 없으면 모든 액세스 ID를 추가 할 수 있습니다. – LoztInSpace