数据库多表操作利用外键查询添加删除的简易图解

数据库的多表操作中多对多的情况很多,这时候我们就需要中间表作为媒介,帮我们完成多表之间的关联.

直接用例子来说明,假设现在有一张用户表,一张角色表和一张权限表,一个用户可以由多个角色,一个角色可以有多个权限,而一个角色可以被多个用户所拥有,一个权限可以被多个角色所拥有.这三者的关系都是多对多.

这时候我们可以利用中间表来清楚地表达他们之间的关系,user_role表中,通过userID和roleId将两者关联. role_permission表中,通过roleId和permissionId将两者关联

实际操作中,当我们需要查某个用户拥有什么权限时候,可以通过userId在user_role表中获取当前用户所有的角色,每个角色由又可以用角色的roleId通过role_permission表找到各个角色的权限,全部返回,即可获得某个具体的用户所拥有的所有权限


### 由图可以看出,当我们在删除用户表中的某个用户时,必须先把中间表user_role中所有包含当前用户userId的记录,然后再删除user就可以了,permission同理. ### **特别注意的是,当需要删除某个角色时,因为角色的roleId在两个中间表中,都是作为外键的存在,所以我们必须先删除user_role中包含当前roleId的记录,同时删除role_permission表中包含当前roleId的记录.最后,我们才能删除指定角色,不然数据库会报错.**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值