数据库技术:求候选关键字 A→D,E→D,D→B,BC→D,DC→A

数据库技术:求候选关键字 A→D,E→D,D→B,BC→D,DC→A,第1张

题目要补充完整,必须给出集合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的唯一候选码。

感觉你最好先搞个查询,别直接替换,风险太大。

代码如下(这个是查找库里所有记录中含“张三”的数据,替换里边的张三那个字符串就行):

declare @cloumns varchar(40)

declare @tablename varchar(40)

declare @str varchar(40)

declare @counts int

declare @sql nvarchar(2000)

declare MyCursor Cursor For 

Select a.name as Columns, b.name as TableName from syscolumns a,sysobjects b,systypes c 

where a.id = b.id

and b.type = 'U' 

and a.xtype=c.xtype

and c.name like '%char%'

set @str='张三'

Open MyCursor

Fetch next From MyCursor Into @cloumns,@tablename

While(@@Fetch_Status = 0)

Begin

 set @sql='select  @tmp_counts=count(*) from ' +@tablename+ ' where ' +@cloumns+' = ''' +@str+ ''''

execute sp_executesql  @sql,N'@tmp_counts int out',@counts out

 if @counts>0

 begin

 print '表名为:'+@tablename+',字段名为'+@cloumns

 end

Fetch next From MyCursor Into @cloumns,@tablename

End

Close MyCursor

Deallocate MyCursor


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9956979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存