00:00
各位注意啊,下面给大家要讲的是,因为咱们现在要做这个权限管理,而在权限管理中呢,要涉及到会有多张表操作,所以我下面把权限管理中有哪些表,包括表分别是什么,以及表之间有哪些关系给大家来详细说一下,这些表关系各位也是必须要特别清楚啊,那我来说一下啊,咱的第二部分第一个基本需求。然后第二个咱说一下权限管理中相关的那些表。以及他们之间的这么一个关系啊,咱来说这个内容,那这个我们怎么来看啊,首先给大家说一下啊,就是各位可以来到我们那个资料里边,在里边有一个数据库脚本,然后在脚本中呢,咱们有就是这个脚本叫鼓励AC,这个里边有,咱们就是权限管理中相关的表。
01:00
咱把它打开看里边这个基本的表,里边应该是有多张表,那首先各位把这一个表。先在我们的数据库中给他先创建出来,我这里边已经提前创建过了。那我们来看一下啊。这些表有哪些,它的表呢,主要是上面的。这么几个表,就是这么几个啊,这是它那个表,大家看啊,一共有这么五张表,也就是说啊,你要做一个权限管理,至少五张表才能把它的功能做的更完善啊,当然可以有更少张表,或者说可以有更多表,当是五张表我觉得是必须的,如果你少五张表,它的功能肯定是不是特别的完善,至少五张表它可以把它功能做的更加的完善,那这里边啊,我们就用五张表这个操作。那五张表是什么,给大家分别来说一下啊,咱们一个来看一下啊。首先各位看啊,第一张表,这个表叫a CL permission,这个表是什么呢?就是一个叫菜单表。
02:02
然后大家看这结构,我觉得各位应该能看懂啊,咱之前讲过这种结构你注意啊,第一个PID是零。是不是表示咱说那个根节点啊,全部数据,然后下面有一个权限管理,你看啊,这PI是一下面,这里边有很多的一一,是不是它下面的第二级节点,然后在下面是不是有第三级或者第四级,所以它里边就是一种咱之前说那个树形结构,然后用树形结构来存储它里边这个那种,这是低一级节点,这是二级,三级,四级等等啊,这个叫做菜单表,也就是咱们在左侧显力过程啊,就是类似于这个这种效果。这是第一个啊,然后咱们看第二张表,这个表叫A肉。这是什么?是不是一个角色表啊,假如现在有用户管理员,有什么测试啊,什么0219等等,这些都是我们的角色,这是第二张表,然后还有第三张表,这个表叫AC色。
03:01
这什么表,就是用户表啊,这是三张最基本的表,就是这个菜单表,角色表,还有用户表,然后除了这个之外,他还有两张表,这两张表,这张表什么意思呢?看这张表肉permission,它表就是什么角色和菜单的关系表,还有这个表是用户和决策的关系表,所以里边涉及到有这么五张表操作啊,这各位给他知道啊,也就是说你做出一个比较完整的权限管理,至少需要五张表,如果你少于五张表不是说不能做,但是很多功能肯定做的不完善,但你比它更多可能做的更完善,但是至少五张表能做到很完善的这么一个券管理功能啊,所以这是五张表。那五张表咱们下面继续来说一下啊,它们里面这个结构希望各位啊,这要特别清晰啊,应该之前也说过啊,我这里边再重复一遍啊。给大家我来画一下啊。咱先画三张最基本这个表。
04:02
这个三张表。我画到D位置啊。三张表,三张表分别是什么呢?第一张表就是咱说那个。菜单表啊,也是我们里边这个acl。Permission。这个表啊,Al permission是咱说那个菜单表。这是第一张表啊,然后里边还有第二张表,这个表。比如这第二张表就画我们这个叫角色表。角色表,然后角色表叫acl这个肉角色,另外还有第三张表,就是这张表叫做a c user色,它叫做。用户表。画一下啊,A CL user,所以这个是三张最基本的表,第一个是菜单,第二个是角色,第三个是用户啊,这个我们做了一个说明,然后在里边为了明显我在表中呢,简单加几条记录,为了咱一块儿看的就是更清晰点。
05:06
我来给他加一下,比如说我现在每张表中呢,我就给他加上这么两条记录啊,为了一会儿咱看的更明显啊。给大家都加上啊。这里边也加上这是用户的。然后在里边啊,我加上这些字段,比如说我现在每个表中是有它的ID和那个名称啊,这是ID。然后这是名称啊,后面一样,这是角色的ID,这是角色的名称。然后这个是用户ID,还有用户的名称。啊,有这么几个值,然后在里边我就写几条记录啊,我觉得大有效果,可以大家第一个菜单ID是一。这个是二,然后菜单里边,比如第一个菜单,那就叫这个讲师管理第二个菜单,比如我们是这个叫。课程管理啊,这是第一个,第二个角色,为了区分,我把ID给他换个值,第ID是幺幺,这个是幺二角色,比如第一个角色是我们这个叫管理员。
06:09
比如说第二个角色,我们就是这个。啊,随便来一个,比如就叫这个测试人员啊,这是两个角色,然后第三个是咱们这个用户,在用户里边,为了区分,我把值稍微换一下,比如这个ID。我就来一个100。这个是101他的名字,比如第一个名字我们是Lucy,第二个假如是这个Mary。这样的话啊,这是三张最基本的表,菜单表,角色表,还有用户表啊,就是对应我们里边的第三个。Al permission al al user,然后这个说完之后咱再看,另外还有两张表,那这张表什么意思呢?给大家来说一下啊,这里边叫说用到一个知识点了,是咱们在买收卷学到的,那问各位啊,希望各位考虑这么一个问题,大家看。
07:03
你说现在啊,这里边,因为咱们刚才有个功能,就是为角色是不是能分配菜单呀,也就是说啊,角色跟菜单表之间他们是有一个关系的,那他们什么关系呢。希望各位能想到啊,你说他们什么关系?咱们表表之间有哪些关系,外乎是不是这么几种,要么一对一,要么一对多,是不是要么多对多呀,多对一对一,一对多一样的啊,就是三种关系,一对一,一对多,多对多,而菜单跟角色之间,大家要说什么关系?这种关系。他是不是一个多对多的关系,也就是说啊,一个菜单他可以有很多的角色,然后一个角色是不是能访问很多菜单,比如我现在管理员能访问讲师管理,是不是可能能访问课程管理,然后我测试人员是不是也可能去访问课程管理,所以这个关系是一个多对多的关系,菜单跟角色关系是多对多。
08:03
这个各位啊,给他要知道啊,然后这里边画一下啊,多对多。呃,咱就画到这里啊。就是他们之间关系是一个多对多的关系。多得多,也就是一个菜单中可以有很多角色,一个角色可以访问很多菜单啊,这是第一个关系,然后咱再看另一个关系,因为咱们为用户也能分配角色,那这里边用户跟角色又是什么关系?这种关系。其实各位我觉得应该之前提过啊,我这里再说一遍,用跟角色他们也是一个多对多的关系。这也多得多,也就是一个角色中可以有很多用户,假如管理员里边可以是Lucy,可是Mary,然后我这个一个用户也可以有很多角色,假如迈瑞,他既是管理员又是测试人员,就好比说在公司里边,比如这公司中这个老板啊,他有一个司机,有个秘书,有个保镖,那这个司机、保镖、秘书是不是可以都是一个人?
09:05
这是可以做到的啊,所以这个是多对多,也就是说咱们这个菜单角色用户他们之间都是多对多的关系啊,这是表示关系,那这多对多大家注意啊,如果说啊,咱们只是单独见三张表,那三张表之间本身是没有关系,那咱怎么表示它的多对多呢?这里边有一个借表方式,要各位记住啊。咱之前说过一对多,一对多就是在多的那边来个字段作为外键,这样一的主键,但是多对多跟他不一样,多对多怎么建表,给大家来画一下啊,它的做法就是咱们针对两张表建一个第三张表,或者说建一个角中间表,然后在中间表中表示他们的关系,也就是说菜单跟角色建个第三张表,然后你这个就是。角色跟用户再建个第三张表啊,所以我们现在需要这么来做到,那这个给大家画一下啊,第一个菜单跟角色表,其实就是这张表。
10:10
我小这个位置啊。他就是菜单角色。关系表,也就是咱们在里边的这张表叫acl,这个叫肉permission。这是啊,我们说的这张表。然后除了他之外,咱们这个位置还有一张表,这张表它就是角色跟用户的关系表,或者说用户角色关系表。啊,角色用户关系表,然后这个表是a CL user用这是它的两张关系表,然后关系表中怎么存数据呢?给大家来画一下啊。比如说这里边我就画一下啊,这个关系咱为了明显啊,我多画。几条记录啊?这是一个,然后这里边我也是多画几条记录,为了他。
11:03
更明显点啊,比如就是这么多啊,然后里边怎么存,咱先存第一个啊,菜单和角色关系,那怎么做呢?其实就是把你菜单的ID跟角色ID他们的关系从到里面去,比如说我现在啊,在第一张表中,它至少两个字段,假如第一个字段咱就表示那个菜单ID,比如来一个。Cid啊,代表我们的菜单ID,然后第二个角色ID,比如叫这个。Rid就是肉ID啊,这是两个ID,那我们来进行存储,那咱们找个具体数据啊,比如我现在。这个管理员有讲师管理,这个就是菜单,那咱们表示呢,第一个是填你的菜单的ID,第二个填你的角色ID,角色角色ID就是幺幺,这是第一个,假如我现在管理员也能访问我的课程,那我来一个二。再来个幺幺,就管理员两个权限,比如我现在在里边测试人员也能去访课程,那我来个二,再来一个叫。
12:08
幺二,这就是第三张表,用这个表存量表的ID view,他的关系,比如说你看这里边幺幺有一和二的权限,幺二有二的权限,就是管理员两个都可以访问,然后测试人员只能访问我们的课程啊,这就是第三张表,所以咱们这么一个关系,然后角色跟用户跟他一样啊,我也快速写一下啊,比如在里边两个ID。第一个ID,第二个UID,比如叫UID。那咱们有关系啊。假如说我现在在这里边,管理员里边呢,比如说有这个Lucy和Mary,他们都属于管理员,那我来做个存储管理员,就是幺幺,里边有个Lucy,就是100,然后管理员里边还有这个Mary,那我们存一个叫101。比如现在在我这过程中,测试人员也是Mary,就是Mary也是测试人员,那我们来写个幺二,再来个叫101,这个就是他们这个角色跟用户关系,所以咱们在权限管理中五张表这么一个结构,有三张最基本表,菜单、角色和用户,然后他们之间都是多对多,多对多,按照咱的进表方式,那我就建个第三张表,用第三张表有关系,所以有两个第三张表。
13:28
第一个是菜单角色关系存他们ID,第二个是角色用户的这么一个关系表,存这两表ID,这个啊是关于表的关系,也就是咱们五张表就是这么一个结构啊,所以把这个给大家做个介绍,然后包括啊各位看我的课件中第二课件。大家看我里边这位置,我这里边就标注到了五张表,包括他们这个关联关系啊,就是我刚才画的过程。所以大家把这个要特别清晰啊,五张表分别都是干什么的,包括每个表都是什么样的关系,以及他们的关系中这表该怎么创建,希望各位在头脑中这种思路要特别清楚啊,因为咱们写代码就按照这个过程把这个实现出来。
14:14
这个啊,我们做了一个介绍,关于。权限管理中表示什么,以及他们之间的关系的一个介绍。这个啊,咱们就说完了啊,所以大家把这个好好给他看一看,去记记,因为在面试中这种问题会经常问到类似这种东西,比如说你怎么设计的表,结构怎么样,包括你的关系怎么样,那当给别人讲的,就是讲这个东西。
我来说两句