精华内容
下载资源
问答
  • 例:已知关系模式R(U,F),其中U={A,B,C,D,E,G}, F={BE→G,BD→G,CD→A,CE→G,CDE→AB,BC→A,B→D} 求(1)F的最小函数依赖集: ①右边单一化 F1={BE→G,BD→G,CD→A,CE→G, CDE→A,CDE→B ,BC→A,B→D} ②...

    跨考复试准备中,一道关系模式的练习题,个人积累

    例:已知关系模式R(U,F),其中U={A,B,C,D,E,G},
    F={BE→G,BD→G,CD→A,CE→G,CDE→AB,BC→A,B→D}
    求(1)F的最小函数依赖集:
    ①右边单一化
    F1={BE→G,BD→G,CD→A,CE→G,CDE→A,CDE→B,BC→A,B→D}
    ②分别求F1中各函数依赖的闭包
    对BE→G,(BE)+ = BDEG,闭包含有右边属性G,去掉该函数依赖
    ……
    /*如果从后到前求闭包,那么CDE→B会被去掉。说明最小依赖集不唯一 */
    所以有
    F2={BD→G,CD→A,CE→G,CDE→B,B→D}
    ③左边单一化,判断冗余,若冗余则代替
    对于BD→G :
    { B→G,(B)+ =BD,闭包含属性D,所以D冗余 ;
    D→G, (D)+ = D, 闭包不含属性B,B不冗余 ;
    所以B→G 代替BD→G }
    ……
    所以有
    Fm={B→G,CD→A,CE→G,CDE→B,B→D}
    (2)求R的候选码
    解:①首先用LRN法区分各属性

    L: C, E R: A, G
    N: none LR: B, D

    ②求闭包:
    C闭包 != U , E闭包 != U
    BC闭包 != U , CD闭包 != U , BE闭包 != U , DE闭包 != U , BD闭包 != U
    BCE闭包 = U , CDE闭包 = U ;
    所以,候选码为: BCE, CDE
    主属性:B,C,D,E
    (3)判断R的最高规范化程度,说明理由
    答:R是第一范式。因为有CD→A,所以(C,D,E)→A,存在非主属性对主属性的部分函数依赖。
    (4)判定分解p ={ABD,DGE,AG,CE}是否保持无损连接性;
    答:没有保持无损连接性。因为分解p的各个子模式里面都没有包含候选码。
    (5)将关系模式R分解为3NF,并且保持函数依赖和无损连接性。
    解:已求得最小依赖集Fm={B→G,CD→A,CE→G,CDE→B,B→D} ;
    左部相同原则分组,再将各属性并起来:
    U1(=B并DG)=BDG, U2=ACD, U3=CEG, U4=BCDE
    将R分解为p= {
    R1( {B,D,G}, { B→G, B→D } ),
    R2( {A,C,D}, { CD→A } ),
    R3( {C,E,G}, { CE→G } ),
    R4( {B,C,D,E}, { CDE→B } )
    }
    因为候选码BCE,CDE在R4中,所以所求的分解p具有无损连接性,且保持函数依赖,且每
    个子模式为3NF。

    展开全文
  • 关系数据库理论之最小函数依赖集

    万次阅读 多人点赞 2019-04-06 23:38:53
    在实际生活中,我们可以根据语义来定义关系中属性的依赖关系,例如学号可以唯一确定一位学生的姓名、性别等等。但是,有时候给出的函数依赖并不是最简的,这有时会拖累我们对关系的后续处理,例如关系的分...

    前言

    在本文中,会介绍为什么要引入最小函数依赖集,最小函数依赖集是什么,以及如何求最小函数依赖集。

    为什么需要最小函数依赖集

    在关系数据模型中,一个关系通常由R(U,F)构成,U为属性的全集,F为函数依赖集。在实际生活中,我们可以根据语义来定义关系中属性的依赖关系,例如学号可以唯一确定一位学生的姓名、性别等等。但是,有时候给出的函数依赖集并不是最简的,这有时会拖累我们对关系的后续处理,例如关系的分解、判断是否为无损分解等。所以,我们在必要时,需要对函数依赖集进行化简,这就是需要最小函数依赖集的原因。
    在正式介绍最小函数依赖集之前,还需要了解一个概念,那就是闭包。准确的说是属性集X关于函数依赖集F的闭包

    闭包

    闭包分为两种,一种是函数依赖集F的闭包,另外一种是属性集X关于函数依赖集F的闭包。前者不做讨论,重点说说后者。先来看定义

    F为属性集U上的一组函数依赖集,XY \inUXF+X_F^+= {A|X\rightarrowA能由F根据Armstrong公理导出},XF+X_F^+称为属性集X关于函数依赖集F的闭包。

    说白了,就是给定属性集X,根据现有的函数依赖集,看其能推出什么属性。
    这里的Armstrong公理系统不用深究,想具体了解的可以点击查看百度百科。
    举例:

    已知关系模式R<U,F>,其中:
    U = {A,B,C,D,E},
    F = {AB \rightarrow C,B\rightarrowD,C\rightarrowE,EC\rightarrowB,AC\rightarrowB}
    (AB)F+(AB)_F^+

    解:

    从AB出发,此时我们的集合里已经包含了{A,B}。
    我们从现有的函数依赖集中可知,
    AB可以推出C,于是C加入集合,
    B可以推出D,于是D加入集合,
    C可以推出E,于是E加入集合,
    EC可以推出B,因为C、E、B都在集合中,于是不加入,
    AC可以推出B,因为A、B、C都在集合中,于是不加入
    至此,可求得(AB)F+(AB)_F^+ ={A、B、C、D、E}。

    最小函数依赖集

    定义

    如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集,亦称为最小依赖集最小覆盖
    (1)、F中任一函数依赖右部仅含有一个属性。
    (2)、F中不存在这样的函数依赖 X\rightarrowA,使得FF-{X\rightarrowA} 等价。
    (3)、F中不存在这样的函数依赖X\rightarrowAX有真子集Z使得F-{X\rightarrowA}\bigcup{Z\rightarrowA}F等价。

    解释

    以上定义翻译成大白话就是,一个函数依赖集F要想称为最小函数依赖集,要满足以下三点:
    1、F中任一函数依赖的右边只有一个属性。
    2、F中不存在这样的函数依赖:从现有的函数依赖集中删除一个函数依赖X\rightarrowA,删除后所得的函数依赖集与原来的函数依赖集等价,这样的函数依赖是不允许存在的。
    3、F中不存在这样的函数依赖:假设函数依赖集中存在AB\rightarrowY,现对该依赖的左部进行化简,即删除A,得B\rightarrowY;或删除B,得A\rightarrowY,若经过化简后的函数依赖集与没有化简前的函数依赖集等价,那么这样的函数依赖是不允许存在的。

    算法

    1、首先,先利用函数依赖的分解性,将函数依赖集中右部不为单个属性的分解为单属性。

    2、对于经过第1步筛选后的函数依赖集F中的每一个函数依赖X\rightarrowA,进行以下操作:

    • 2.1、将X\rightarrowA从函数依赖中剔除
    • 2.2、基于剔除后的函数依赖,计算属性X的闭包,看其是否包含了A,若是,则该函数依赖是多余的(这里体现出前面说的等价,因为如果基于化简后的函数依赖依赖,计算X的闭包依然包含A,则说明A可以由其他依赖推出,X\rightarrowA不是必须的),可以删除,否则不能删除

    3、对于经过第2步筛选后的函数依赖集F中每个左部不为单个属性的函数依赖AB\rightarrowY,进行以下操作:
    我们约定,经过第二步筛选后的函数依赖集记为F1,经过第三步处理后的函数依赖集为F2。

    • 3.1、去除A,得B\rightarrowY,得F2,基于F1和F2计算属性B的闭包,如果二者相等,则说明它们是等价的,A可以去除;如果不相等,则A不能去除。
    • 3.2、去除B,得A\rightarrowY,得F2,基于F1和F2计算属性A的闭包,如果二者相等则说明它们是等价的,B可以去除;如果不相等,则B不能去除。

    知识链接:函数依赖的分解性
    若X\rightarrowYZ,则X\rightarrowY 且 X\rightarrowZ。

    举例

    关系模式R(U,F)中,U={A,B,C,D,E,G},F={B\rightarrowD,DG\rightarrowC,BD\rightarrowE,AG\rightarrowB,ADG\rightarrowBC};求F的最小函数依赖集。

    解:
    1、首先根据函数依赖的分解性,对F进行第一次筛选,需要变动的有:
    ADG\rightarrowBC拆解成ADG\rightarrowB、ADG\rightarrowC
    得新函数依赖集:
    F = {B\rightarrowD,DG\rightarrowC,BD\rightarrowE,AG\rightarrowB,ADG\rightarrowB,ADG\rightarrowC}

    2、筛选多余的函数依赖

    • 2.1:去除B\rightarrowD,得F = {DG\rightarrowC,BD\rightarrowE,AG\rightarrowB,ADG\rightarrowB,ADG\rightarrowC},BF+B_F^+ = {B},不包含D,故B\rightarrowD不删除。
    • 2.2:去除DG\rightarrowC,得F = {B\rightarrowD、BD\rightarrowE,AG\rightarrowB,ADG\rightarrowB,ADG\rightarrowC},(DG)F+(DG)_F^+={D,G},不包含C,故DG\rightarrowC不删除。
    • 2.3:去除BD\rightarrowE,得F = {B\rightarrowD,DG\rightarrowC,AG\rightarrowB,ADG\rightarrowB,ADG\rightarrowC},(BD)F+(BD)_F^+ = {B,D},不包含E,故BD\rightarrowE不删除。
    • 2.4:去除AG\rightarrowB,得F = {B\rightarrowD,DG\rightarrowC,BD\rightarrowE,ADG\rightarrowB,ADG\rightarrowC},(AG)F+(AG)_F^+ = {A,G},不包含B,故AG\rightarrowB不删除。
    • 2.5:去除ADG\rightarrowB,得F = {B\rightarrowD,DG\rightarrowC,BD\rightarrowE,AG\rightarrowB,ADG\rightarrowC},(ADG)F+(ADG)_F^+ = {A,D,G,C,B,E},包含B,故ADG\rightarrowB去除
    • 2.6:去除ADG\rightarrowC,得F = {B\rightarrowD,DG\rightarrowC,BD\rightarrowE,AG\rightarrowB,ADG\rightarrowB},(ADG)F+(ADG)_F^+ = {A,D,G,C,B,E},包含C,故ADG\rightarrowC去除
      经过第二部筛选后,函数依赖集F变为{B\rightarrowD,DG\rightarrowC,BD\rightarrowE,AG\rightarrowB}。

    3、化简函数依赖左侧不为单个属性的函数依赖

    • 3.1:先看DG\rightarrowC
      • 3.1.1:去除D,得G\rightarrowC,得函数依赖集F1 = {B\rightarrowD,G\rightarrowC,BD\rightarrowE,AG\rightarrowB}。
        基于F1,可求得GF+G_F^+ = {G,C}。
        基于F(第二步求出的,下同),可求得GF+G_F^+ = {G}
        可见二者并不相同,所以D不去除。
      • 3.1.2:去除G,得D\rightarrowC,得函数依赖集F1 = {B\rightarrowD,D\rightarrowC,BD\rightarrowE,AG\rightarrowB}
        基于F1,可求得DF+D_F^+ = {D,C}
        基于F,可求得DF+D_F^+ ={D}
        可见二者并不相同,所以G不去除。

    综上,DG\rightarrowC,已是最简。

    • 3.2:再看BD\rightarrowE
      • 3.2.1:去除B,得D\rightarrowE,得函数依赖集F1 = {B\rightarrowD,DG\rightarrowC,D\rightarrowE,AG\rightarrowB}
        基于F1,可求得DF+D_F^+ = {D,E}
        基于F,可求得DF+D_F^+ = {D}
        可见二者并不相同,所以B不去除。
      • 3.2.2:去除D,得B\rightarrowE,得函数依赖集F1 = {B\rightarrowD,DG\rightarrowC,B\rightarrowE,AG\rightarrowB}
        基于F1,可求得BF+B_F^+ = {B,E,D}
        基于F,可求得BF+B_F^+ = {B,D,E}
        可见二者相同,所以D可以去除

    综上,BD\rightarrowE,可化简为B\rightarrowE。

    • 3.3:最后看AG\rightarrowB
      • 3.3.1:去除A,得G\rightarrowB,得函数依赖集F1 = {B\rightarrowD,DG\rightarrowC,B\rightarrowE,G\rightarrowB}
        基于F1,可求得GF+G_F^+ = {G,B}
        基于F,可求得 GF+G_F^+ = {G}
        可见二者并不相同,所以A不可去除。
      • 3.3.2:去除G,得A\rightarrowB,得函数依赖F1 = {B\rightarrowD,DG\rightarrowC,B\rightarrowE,A\rightarrowB}
        基于F1,可求得AF+A_F^+ = {A,B}
        基于F,可求得AF+A_F^+ = {A}
        可见二者并不相同,所以G不可去除。

    综上,AG\rightarrowB,已是最简。
    综上,R的最小函数依赖集为F = {B\rightarrowD,DG\rightarrowC,B\rightarrowE,AG\rightarrowB}

    写在最后

    这个问题是我在考研复试的时候复习过程中遇到的,主要的纠结点在于第三步的判断上,查资料的时候发现网上很多都没有写清,最后还是在度娘的文库里找到了比较清楚的解释,在此做一下思路的整理。
    本文定义以及例子参考自:

    展开全文
  • 根据函数依赖求最小依赖集

    万次阅读 多人点赞 2019-06-26 13:37:36
    【例1】关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。 第一步:F右边单一化 得到F1={A→B,A→C,ABD→C,ABD→E,E→D} 第二步:逐个去掉X→A依赖后,设剩下函数依赖...

    【例1】关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。

    第一步:F右边单一化
    得到F1={A→B,A→C,ABD→C,ABD→E,E→D}

    第二步:逐个去掉X→A依赖后,设剩下函数依赖集为G,求属性集X关于G的闭包,如果闭包包含右边属性A,则去掉该函数依赖。

    A→B:(A)+=AC,不包含B,保留。

    A→C:(A)+=AB,不包含C,保留。

    ABD→C:(ABD)+=ABCDE,包含C,去掉。

    ABD→E:(ABD)+=ABCD,不包含E,保留。

    E→D:(E)+=E,不包含D,保留。
    (在这里,求闭包的时候,不能再用前面去掉的函数依赖了,所以最小依赖集不唯一,写出一个即可。)

    所以F2={A→B,A→C,ABD→E,E→D}

    第三步:对左边属性单一化,X=B1B2...Bi,逐个用B1→A替代原依赖X→A,判断属性集(X-B1)关于F的闭包,如果包含A则用X-B1代替X。

    ABD→E:A→E,求(BD)+=BD,不包含E,不冗余
                     B→E,求(AD)+=ABCDE,包含E,存在冗余则使用AD→E替换ABD→E
                     D→E,求(AB)+=ABC,不包含E,不冗余

    所以F3={A→B,A→C,AD→E,E→D}
    继续第三步
    AD→E:A→E,求(D)+=D,不包含E,不冗余
                   D→E,求(A)+=ABC,不包含E,不冗余

    所以最小依赖集Fm={A→B,A→C,AD→E,E→D}

     

    展开全文
  • 最小依赖集

    千次阅读 2020-04-28 09:27:07
    【例1】关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。 第一步:F右边单一化 得到F1={A→B,A→C,ABD→C,ABD→E,E→D} 第二步:逐个去掉X→A依赖后,设剩下函数依赖...

    【例1】关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。

    第一步:F右边单一化
    得到F1={A→B,A→C,ABD→C,ABD→E,E→D}

    第二步:逐个去掉X→A依赖后,设剩下函数依赖集为G,求属性集X关于G的闭包,如果闭包包含右边属性A,则去掉该函数依赖。

    A→B:(A)+=AC,不包含B,保留。

    A→C:(A)+=AB,不包含C,保留。

    ABD→C:(ABD)+=ABCDE,包含C,去掉。

    ABD→E:(ABD)+=ABCD,不包含B,保留。

    E→D:(E)+=E,不包含D,保留。
    (在这里,求闭包的时候,不能再用前面去掉的函数依赖了,所以最小依赖集不唯一,写出一个即可。)

    所以F2={A→B,A→C,ABD→E,E→D}

    第三步:对左边属性单一化,X=B1B2...Bi,逐个用B1→A替代原依赖X→A,判断属性集(X-B1)关于F的闭包,如果包含A则用X-B1代替X。

    ABD→E:A→E,求(BD)+=BD,不包含E,不冗余
                     B→E,求(AD)+=ABCDE,包含E,存在冗余则使用AD→E替换ABD→E
                     D→E,求(AB)+=ABC,不包含E,不冗余

    所以F3={A→B,A→C,AD→E,E→D}
    继续第三步
    AD→E:A→E,求(D)+=D,不包含E,不冗余
                   D→E,求(A)+=ABC,不包含E,不冗余

    所以最小依赖集Fm={A→B,A→C,AD→E,E→D}

    原文链接:https://blog.csdn.net/Long_H_Zhu/article/details/93725797

    https://blog.csdn.net/breathN/article/details/88432401

    展开全文
  • R,F>,U={W,X,Y,Z,T,V},F={W->XY,XY->W,WZ->TV,XYZ->TV} (1)求F的最小依赖集。 (2)求R的所有候选码。 (3)根据函数依赖关系,确定R最高能到第几范式。
  • 关系规范化之求最小函数依赖集最小覆盖)

    万次阅读 多人点赞 2016-04-25 10:02:53
     定义:关系模式R上的两个依赖集F和G,如果F+=G+,则称F和G是等价的,记做F≡G。若F≡G,则称G是F的一个覆盖,反之亦然。两个等价的函数依赖集在表达能力上是完全相同的。   二、最小函数依赖集  定义:如果函数...
  • 如果函数依赖F满足下列3个条件,则称F为最小依赖集: (1)F中任一函数依赖的右部仅含有一个属性 (2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价 (3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X...
  • 【例1】关系模式R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D},求F的最小依赖集。 第一步:F右边单一化 得到F1={A→B,A→C,ABD→C,ABD→E,E→D} 第二步:逐个去掉X→A依赖后,设剩下函数依赖...
  • 不满足第一范式(1NF)的数据库就不是关系数据库。(即能写成R(A,B,C,D)的都满足1NF) 第一范式是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值...
  • 模式分解、最小函数依赖集

    千次阅读 2010-06-28 18:29:00
    <br />函数依赖的公理系统:  设有关系模式R(U),X,Y,Z,W均是U的子集,F是R上只涉及到U中属性的函数依赖集,推理规则如下: 自反律:如果YXU,则X→Y在R上成立。 增广律:如果X→Y为F所蕴涵...
  • 最小依赖集 (解法+例题)

    千次阅读 多人点赞 2020-12-01 14:36:25
    最小依赖集 (解法+例题) 网上看了很多最小依赖集的解法和例题,许多都存在错误,故自己参考总结写了一篇,如果有错误,感谢指正。 一、求最小依赖集的算法 ①根据推理规则的分解性,右部最小化 ②消除左边的冗余...
  • 一个是最小依赖函数,一个是求候选码,一个是求闭包,一个是要把关系模式分解成3NF且保持函数依赖,一个是分解成3NF且保持函数依赖和无损连接。 记录一下我对这几个问题的求法。可能会有哪里有漏洞,希望可以指...
  • 关系模式R(U,D,DOM,F) R:关系名,符号化的元组定义 U:一组属性 D:属性组U中的属性所来自的域 DOM:属性到域的映射 F:属性组U上的一组数据依赖 函数依赖集的闭包 F:FD(Functional Dependency)的集合...
  • 数据库关系模式中函数依赖的理论涉及不少算法,此次根据课程需要将求属性闭包(closure)和函数最小依赖集(basis)用代码实现。 思路 两个算法已有理论支撑,因此第一步是设计合适的数据结构,存储算法过程需要的...
  • 步骤:① 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;  ② 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y...
  • 最小函数依赖集

    2020-05-11 17:15:36
    例1:关系模式R(U,F)中,U=ABCDEG,F={B->D,DG->C,BD->E,AG->B,ADG->BC};求F的最小函数依赖集 (1)用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;得到:F={B->D,DG->C,BD...
  • 多说无益,直接看题。 已知关系模式R
  • 一、函数依赖:在关系R中,若属性或者属性 A 中 两个元祖的值相等,如果这两个元祖中对应的属性或者属性B中的值也相同,则记作A——>B。 A函数决定B; 或者 B函数依赖于A。例1:...
  • 一、函数依赖:在关系R中,若属性或者属性 A 中 两个元祖的值相等,如果这两个元祖中对应的属性或者属性B中的值也相同,则记作A——&gt;B。 A函数决定B; 或者 B函数依赖于A。例1:下表就是问题领域, 则存在...
  • 假设A→B是冗余依赖关系,去除后F1’={A→C,ABD→C,ABD→E,E→D},我们求A对F1’的闭包(算法详见闭包算法)得:A(F1)+ =AC,不包含B,所以A→B不是冗余依赖关系,不能删除。一次判断F1中得所
  • 数据库候选码和最小依赖集的求解

    千次阅读 2019-05-13 22:34:57
    数据库 函数依赖 属性 候选码 范式定义例子求候选码合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 设U 是R 的属性,F 是R 上成立的只涉及U 中属性的函数依赖集,函数依赖的推理规则有以下三条: 自反律:若属性Y包含于属性X,属性X 包含于U,则X→Y 在R 上成立 增广律:若X→Y 在R 上成立,且属性Z ...
  • 例:已知关系模式R(U,F),其中U={A,B,C,D,E,G}, F={BE→G,BD→G,CD→A,CE→G,CDE→AB,BC→A,B→D} 求(1)F的最小函数依赖集: ①右边单一化 F1={BE→G,BD→G,CD→A,CE→G,CDE→A,CDE→B,BC→A,B→D} ②分别求F1...
  • 关系模式R中的属性U=ABC…,有N个属性,判断U中属性在FD中出现的位置 (1)左右出现; (2)只在左部出现; (3)只在右部出现; (4)不出现; 方法:按以下几步来求候选键 1.只在FD右部出现的属性,不属于候选码; 2.只在FD...
  • 数据库求闭包,最小函数依赖集

    万次阅读 多人点赞 2018-07-08 19:56:16
     例(1): 设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)+ 解: (1) 令X={AE},X(0)=AE (2)在F中寻找尚未使用过的左边是AE的子集的函数依赖,结果是: A→D, ...
  • 2.在保证F是最小函数依赖集的前提下,将关系模式转为3NF且保持函数依赖:①按左部相同原则分组;②将具有包含关系依赖集进行合并;③判断最后的依赖集是否包含候选键,不包含的话为3NF且保持函数依赖 3.不包含的话...
  • 设有关系模式R(A,B,C,D),其上的函数依赖集: F={A→C,C→A,B→AC,D→AC} (1).计算(AD)+。 (2).求F的最小等价依赖集Fm。 (3).求R的关键字。 (4).将R分解使其满足BCNF且无损连接性。 (5).将R分解成满足3NF并...
  • ①先拆右边,假如依赖集F中的右边项包含不止一个属性,那么将这些项都拆为单个项。例如A->BC,拆分为A->B和A->C ②去除冗余依赖项,例如A->C和AB->C,那么就要去除AB->C这个冗余项 ③拆左边,假如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 56,240
精华内容 22,496
关键字:

关系模式r的最小依赖集