-
确定候选码:
候选码是关系中能够唯一确定一个元组的属性集合。为了找到候选码,我们需要分析给定的函数依赖集 ( F = { B \rightarrow D, AB \rightarrow C } )。
- 从 ( B \rightarrow D ) 可以看出,B可以确定D,所以B是D的候选码的一部分。
- 从 ( AB \rightarrow C ) 可以看出,AB可以确定C,所以AB是C的候选码的一部分。
由于B可以确定D,而AB可以确定C,我们需要找到一个最小的属性集合,它能够确定所有属性A、B、C、D。显然,AB能够确定C和D,而A和B本身是独立的,所以AB是关系R的候选码。
因此,候选码是 ( {AB} )。
-
确定关系R属于哪一范式:
范式是关系数据库中用来衡量关系模式设计质量的标准。我们需要检查关系R是否满足第一范式(1NF)、第二范式(2NF)、第三范式(3NF)或BCNF(Boyce-Codd范式)。
- 1NF: 关系R中的所有属性都是原子属性,即每个属性的值都是不可再分的。由于题目没有给出具体的数据,我们假设所有属性都是原子属性,所以关系R满足1NF。
- 2NF: 关系R满足1NF,并且所有非主属性都完全依赖于候选码。在关系R中,非主属性是C和D。C依赖于AB,D依赖于B,而B是候选码的一部分,所以C和D都完全依赖于候选码。因此,关系R满足2NF。
- 3NF: 关系R满足2NF,并且所有非主属性都不传递依赖于候选码。在关系R中,C依赖于AB,D依赖于B,而B和AB都是候选码的一部分,所以没有传递依赖。因此,关系R满足3NF。
- BCNF: 关系R满足3NF,并且所有属性都完全依赖于候选码。在关系R中,A和B是候选码的一部分,C依赖于AB,D依赖于B,所以所有属性都完全依赖于候选码。因此,关系R满足BCNF。
综上所述,关系R满足BCNF。
因此,关系R属于BCNF。
最终答案是:(\boxed{{AB}, BCNF})。
根据给定的关系模式 ( R(A, B, C, D) ) 和函数依赖集 ( F = {B \rightarrow D, AB \rightarrow C} ),我们可以逐步分析候选码和关系范式。
(1)候选码的求解
-
属性分类:
- L类属性:仅出现在函数依赖左部的属性。这里 ( A ) 和 ( B ) 都出现在左部,但 ( B ) 也出现在右部(( B \rightarrow D )),因此只有 ( A ) 是 L 类属性。
- R类属性:仅出现在函数依赖右部的属性。这里 ( C ) 和 ( D ) 是 R 类属性。
- LR类属性:既出现在左部又出现在右部的属性。这里 ( B ) 是 LR 类属性。
- N类属性:未出现在函数依赖中的属性。这里没有 N 类属性。
-
候选码的确定:
- L 类属性 ( A ) 必须包含在候选码中。
- 计算 ( A ) 的闭包 ( A^+ ):( A^+ = {A} ),不包含所有属性,因此 ( A ) 不是候选码。
- 尝试将 ( A ) 与 LR 类属性 ( B ) 组合,计算 ( AB ) 的闭包 ( (AB)^+ ):
- 根据 ( B \rightarrow D ),( (AB)^+ = {A, B, D} )。
- 根据 ( AB \rightarrow C ),( (AB)^+ = {A, B, C, D} ),包含了所有属性。
- 因此,( AB ) 是候选码。
结论:候选码是 ( AB )。
(2)关系范式的判定
-
第一范式(1NF):
- 关系 ( R ) 的每个属性都是不可再分的基本数据项,因此满足 1NF。
-
第二范式(2NF):
- 候选码是 ( AB ),非主属性为 ( C ) 和 ( D )。
- 检查非主属性是否完全依赖于候选码:
- ( AB \rightarrow C ) 是完全依赖。
- ( B \rightarrow D ) 是部分依赖,因为 ( D ) 仅依赖于候选码的一部分 ( B )。
- 由于存在部分依赖,关系 ( R ) 不满足 2NF。
结论:关系 ( R ) 属于第一范式(1NF)。
最终答案
(1)候选码是 ( AB );
(2)关系 ( R ) 属于第一范式(1NF)。