数据库系统原理与实践——第十次作业

This commit is contained in:
423A35C7 2024-12-15 15:51:17 +08:00
parent 26c56c0f17
commit 4837f40651

View File

@ -0,0 +1,86 @@
\documentclass[全部作业]{subfiles}
\input{mysubpreamble}
\begin{document}
\setcounter{chapter}{9}
\chapter{第十次作业}
\begin{enumerate}
\questionandanswerProof[]{
(简答题) 令主( prime)属性为至少在一个候选码中出现的属性。令$\alpha$$\beta$为属性集,使得$\alpha \to \beta$成立但$\beta \to \alpha$不成立。令A为一个既不属于$\alpha$也不属于$\beta$的属性,并且$\beta \to A$成立。我们称A传递依赖( transitively dependent) 于$\alpha$。我们可以按如下方式重新定义3NF :关系模式R是关于函数依赖集F的3NF的条件是R中没有非主属性A传递依赖于R的一个码。请证明这个新定义等价于原始定义。
}{
原始定义 $\implies $ 新定义:
如果新定义不满足即存在一个非主属性A传递依赖于R的一个码设为$\alpha$),即$\alpha \to \beta \to A$$\beta \not \to \alpha$。那么$\alpha \to A$不是一个平凡的函数依赖,且$\alpha$不是R的一个超码$\beta - \alpha$中存在至少一个属性不包含在R的候选码中所以不满足原始定义。
新定义 $\implies $原始定义:
如果新定义满足即R中没有非主属性A传递依赖于R的一个码那么设R的函数依赖集为$F$,对$F^{+}$中所有形如$\alpha \to \beta$的函数依赖中:
\mycircle{1}:如果$\alpha \to \beta$是一个平凡的函数依赖,那么自然满足原始定义;
\mycircle{2}:如果$\alpha$是R的一个超码那么也满足原始定义
\mycircle{3}:如果不满足\mycircle{1}\mycircle{2},那么$\beta - \alpha$中的每个属性都包含在R的候选码中。
}
\questionandanswerSolution[]{
(简答题)
8.21 请给出实践习题 8.1中模式R的一个无损的BCNF分解
8.1 模式R=(A, B, C, D, E) 函数依赖集F为
{A->BCCD->EB->DE->A}
}{
$R_1 = (B, D)$, $R_2 = (A, B, C, E)$
$R_1 \cap R_2 = (B, )$$(B, )$$R_1$的主码,所以是无损分解。
}
\questionandanswerProof[]{
(简答题) 8.27 请用阿姆斯特朗公理来证明分解律的有效性。
}{
证明分解律即:若有$a \to \beta \gamma$,则有$\alpha \to \beta$$\alpha \to \gamma$
$$
\begin{aligned}
&\because \beta \subseteq \beta \gamma, \gamma \subseteq \beta \gamma \\
&\therefore 根据自反律,\beta \gamma \to \beta, \beta \gamma \to \gamma \\
&\because a \to \beta \gamma \\
&\therefore 根据传递律,\alpha \to \beta, \alpha \to \gamma \\
\end{aligned}
$$
}
\questionandanswerSolution[]{
(简答题)
8.34 请考虑模式R=(A, B, C, D, E, G, H)和函数依赖集F:
AB→CD
D→C
DE→B
DEH→AB
AC→DC
请使用3NF分解算法来生成R的3NF分解并展示你的工作。这意味着:
a.所有候选码的列表。
b.F的一个正则覆盖。
c.算法的步骤及其解释。
d.最终的分解。
}{
所有候选码的列表为
(A, B, E, H), (A, C, E, H), (D, E, H)。
F的一个正则覆盖是
$AB \to D, D \to C, DE \to B, DEH \to A, AC \to D$
最终的分解为$R_1 = (A, B, C), \quad R_2 = (C, D), \quad R_3 = (A, B, D, E, H)$
}
\end{enumerate}
\end{document}