0
두 개의 테이블 사용자와 관리자가 있습니다.MySQL과 캐스케이드 관계의 일대일 관계
+-------------------------+
| TABLE : user
+-------------------------+
| id: PRIMARY_KEY
| username
| password
+-------------------------+
+-------------------------+
| TABLE: admin
+-------------------------+
| user_id: FOREIGN_KEY
| e-mail
+-------------------------+
관리자도 사용자이므로, 두 테이블이 모두 1 : 1의 관계에 있습니다. 사용자 테이블에서 행이 삭제되면 테이블 Admin에서도 제거됩니다 (admin.user_id는 ON DELETE CASCADE 관계로 설정 됨). 그러나 Admin 테이블에서 행을 삭제하면 어떻게됩니까? 그런 다음 User 테이블에서 제거되지 않으며 이로 인해 데이터베이스가 엉망이됩니다. 이것에 대한 해결책이 있습니까? 양측의 realtionship 만드는 법? 당신이 user
또는 admin
테이블에서 행을 제거 할 수 있습니다, 지금
ALTER TABLE user
ADD CONSTRAINT FK_user_admin_user_id FOREIGN KEY (id)
REFERENCES admin(user_id) ON DELETE CASCADE ON UPDATE RESTRICT;
을하고, 관련 기록이 제거됩니다 -
모든 것이 작동합니다. 모든 사용자가 관리자가 아니기 때문에 문제는 하나뿐입니다. 나는 그 관계를 나쁘게 분명히했다. 오히려 제로 또는 하나의 관계입니다. – user3106462
문제에 대해 더 자세히 알 수 있습니까? – Devart
내 응용 프로그램에는 관리자, 교사 및 학생이 있습니다. 각 유형의 사용자는 그룹 운영에 대한 특성을 수행 할 수 있습니다 (예 : 교사 만 수업을 진행하고 학생에게는 친구가있는 경우 등). 하지만 그들 각각은 내 응용 프로그램의 사용자이며 로그인, 암호, 전자 메일, 이름, 성 등을 가지고 있습니다. 예를 들어 PHP에서 Student 클래스는 User 클래스를 상속합니다. 데이터베이스의 관점에서, 사용자는 공통 데이터 및 관리자, 교사, 특정 데이터에 대한 학생용 테이블입니다. – user3106462