我正在为一家诊所设计一个带有一些桌子的MySQL数据库,我需要三种不同的用户类型:管理员,医生和病人。
我所做的是创建一个名为用户的表,其中的列是管理员,医务人员和患者共享的常用字段(当然有一个名为 id_user 的主键每次添加用户时自动递增。)
然后我创建了三个关于每个用户类型的特定数据的表: admin , medic 和患者,我有一个字段叫做 id_user 是表用户中 id_user 的外键。
当我尝试为三个用户类型表建立外键约束时,phpMyAdmin不允许我将ON DELETE设置为“SET NULL”(我认为这是有意义的,因为如果我从<删除用户strong>用户表然后它应该在军医,管理或患者表中自动将字段设置为NULL,对吧?)并给我错误“关系尚未添加”。
怀疑1 :这里发生了什么,我不知道?
怀疑2 :我是否应该忘记这种关联表的方式,只需在用户表中为每种用户类型添加特定字段,尽管有些用户会设置一些字段为NULL?
这是一张ilustrating我的数据库的图片: http://i363.photobucket.com/albums/oo76/afa_bastard/yes_zpsbad93696.png
答案 0 :(得分:1)
你应该使用Cascading Deletes而不是设置字段为null,如果你删除了你希望它们消失的用户,如果你将数据归零,你将只有表填充空值。
同样根据我的理解,您为每个权限级别创建了3个表,如果是这种情况,您应该在代码中处理具有检查权限级别的条件