您的位置:首页 > 数据库

数据库应用-NF^2 Modell(Non First Normal Form)

2015-10-31 03:38 323 查看
关系数据模型一方面很简单,直观,但另一方面它的表现力也因此受到限制。

它的属性与值之间不具备结构化关系。//是指不能属性嵌套吗??

1NF(erst Normalform)

1NF的要求是:关系的所有属性都是原子属性(Alle Attributwerte atomar)

NF2ModellNF^2 Modell

NF2modellNF^2 modell就是嵌套关系模型(geschachtelte Relationen)

嵌套关系刚好与1NF规则相反,他包含以下两层意思:

1.一个属性可以是另外一个属性的一员

2.属性值本身可以是另外一个关系

//只会输入一般图表,含嵌套属性的图表不知道怎么输入,就先跳了

NF2ModellNF^2 Modell有更强的表现力,但相对的它的定义的难度也同时增加了

Schema

Schema就是一连串的属性(Schema ist Liste von Attributen)

每一个属性都有各自的值域

元组(Tupel)就是用来表示值的向量

当R=(A1,...,An)且Ai∈U,1≤i≤n:dom(R)=dom(A1)∗...∗dom(An)R=(A_1,...,A_n)且A_i \in U, 1 \le i \le n:dom(R)=dom(A_1)*...*dom(A_n)

当R=(A1,...,An,R1,...,Rn):R=(A_1,...,A_n,R_1,...,R_n):

dom(R)=dom(A1)∗...∗dom(An)∗2dom(R1)∗...2dom(Rn)dom(R)=dom(A_1)*...*dom(A_n)*2^{dom(R_1)}*...2^{dom(R_n)}//???

//U是何物至今未明??

问题:顺序决定值的意义

比如有两个R

R1=(Vorname,Nachname)

R2=(Nachname,Vorname)

当我们拿到一个Tupel(Stephan,Heinrich)时并不能很好的区分出姓和名

换句话说,我们能够把Tupel写得很模糊

Algebra of NF2NF^2

包括两部分:

1.与relation algebra相似的operation

//虽然作用相同,但在具体实施上差别还是很大的,比如projection一个内部属性

2.一些特有的operation,如:Nest,Unnest

nest就是生成子属性,比如nB=(C,D)(r)n_{B=(C,D)}(r)就表示把C和D作为B的子属性

A11122C11122D34433E33434
\begin{array}{c|c|c|c}
\text{A} & \text{C}& \text{D}&\text{E}\\
\hline
1&1&3&3\\
1&1&4&3\\
1&1&4&4\\
2&2&3&3\\
2&2&3&4
\end{array}

但应注意当其他属性值相同的项会发生合并,例如上表nest操作后B的一个值是(1,3,1,4)而不是(1,3)。换句话当使用操作:σB=(1,4)(r1): \sigma_{B=(1,4)}(r1)时,不能获得第一个项

另外nest的顺序不同,得到的结果也可能不同

unnest与nest的作用刚好相反,但是并非所有nest都是可逆的,比如

A11BC111D344
\begin {array}{c|cc}
\text{A}&\text{B}\\
\text{}&\text{C}&\text{D}\\
\hline
1&1&3\\
&1&4\\
\hline
1&1&4
\end{array}

当他使用unnest时因为重复最终结果只剩下两项

我们把上面情况归为非PNF(Partitioned Normal Form)

从上面我们也可以知道光看Schema得话是没法分辨一个Relation是不是PNF

PNF(Partitioned Normal Form)

定义PNF:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: