
(1)求属性集的闭包,其实就是求各属性的闭包,然后整合去重复。
闭包就是由一个属性直接或间接推导出的所有属性的集合
A可以直接导出C A+={A,C}
D可以直接导出A C D+={A,C,D}
所以(AD)+={A,C,D}
B可以直接导出A,C B+={A,B,C}
(2)关键码的求解理论和算法对于给定的关系R(A1A2…An)和函数依赖集F ,可将其属性分为4类:L类:仅出现在F函数依赖左部的属性
R类:仅出现在F函数依赖右部的属性
N类:在F函数依赖的左右两部均未出现的属性
LR类:函数依赖的左右两部均出现的属性定理:
对于给定的关系模式R及其函数依赖集F,若X是R的L类属性,则X必为R的 任一关键码的成员。
所以可以看出BD是R的唯一关键码
(3)求最小函数依赖集
1根据分解性先分解所有依赖的右边为单属性
F={A->C,C->A,B->A,B->C,D->A,D->C}
2.对所有依赖的左边为多属性的情况,消除左侧冗余属性
3去除多余的函数依赖{A->C,C->A,B->A,D->A}
不知道对不对,对的话就继续。。
Hyperf 提供了创建模型的命令,您可以很方便的根据数据表创建对应模型。命令通过 AST 生成模型,所以当您增加了某些方法后,也可以使用脚本方便的重置模型。
hyperf模型中,默认的主键ID是小写的。这里和laravel不同,laravel是大写。一般查询不会有问题。但是如果使用到关联模型,如果你自己的表ID是大写ID,那么这里需要在你的模型中设置一个属性 protected $primaryKey = 'ID'; 否则会查不到关联数据
when 方法只有在第一个参数为 true 的时候才执行给的的闭包。如果第一个参数为 false ,那么这个闭包将不会被执行
你可以传递另一个闭包作为 when 方法的第三个参数。 该闭包会在第一个参数为 false 的情况下执行。为了说明如何使用这个特性,我们来配置一个查询的默认排序:
这里使用到三张表,一张是用户(users),一张是角色(roles),一张是用户角色关联表(users_roles)
首先创建用户模型、角色模型
1、其中 users_roles 是我关联表的表名
2、belongsToMany方法中,第一个参数,参数的与之关联的表模型;第二个参数是两个表的关联表(中间表);第三个参数是定义此关联的模型在连接表里的外键名;第四个参数是另一个模型在连接表里的外键名;
题目要补充完整,必须给出集合U
已知R(U,F),其中 U={A,B,C,D,E}, F={A→D,E→D,D→B,BC→D,DC→A},求候选关键字。
①取L类属性(仅出现在F的函数依赖左侧的)——E,C
②求EC关于F的闭包(即由EC可以推出哪些属性)——(EC)+ = ABCDE,包含了U的全部属性,故EC为候选关键字
注: 若U={A,B,C,D,E,P},P不在F中左侧或右侧,则P为N类属性,(ECP)+ =ABCDEP,同样包含了U的全部属性,那么候选关键字就为ECP
附:
定理一:对于给定的关系模式R(U,F),若X(X属于U)是L类属性,则X必为R的任一候选码的成员(组成部分)。
推论一:已知R(U,F),若X(X属于U)是L属性,且X+F包含了R的全部属性U,则X必为R的唯一候选码。
定理二:给定R(U,F),若X(X属于U)是R类属性,则X不在任何候选码中。
定理三:给定R(U,F),若X是R的N类属性,则X必包含在R的任一候选码中。
推论二:已知R(U,F),若X是R的N类和L类属性组成的属性集,且X+包含了R的全部属性U,则X是R的唯一候选码。
以上就是关于有关关系数据库理论的简答题全部的内容,包括:有关关系数据库理论的简答题、Hyperf之数据库模型、数据库技术:求候选关键字 A→D,E→D,D→B,BC→D,DC→A等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)