数据库应用-NF^2 Modell(Non First Normal Form)
2015-10-31 03:38
323 查看
关系数据模型一方面很简单,直观,但另一方面它的表现力也因此受到限制。
它的属性与值之间不具备结构化关系。//是指不能属性嵌套吗??
嵌套关系刚好与1NF规则相反,他包含以下两层意思:
1.一个属性可以是另外一个属性的一员
2.属性值本身可以是另外一个关系
//只会输入一般图表,含嵌套属性的图表不知道怎么输入,就先跳了
NF2ModellNF^2 Modell有更强的表现力,但相对的它的定义的难度也同时增加了
每一个属性都有各自的值域
元组(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写得很模糊
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
它的属性与值之间不具备结构化关系。//是指不能属性嵌套吗??
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:相关文章推荐
- MongoDB创建系统管理员账户和数据库管理员账户
- sql server锁的理解
- 利用ADO连接数据库时,Rs.recordcount总是返回-1,解决办法
- oracle数据库管理指南
- MySQL 5.7.9主从及Enhanced Multi-Threaded Slave配置
- springmvc整合redis架构搭建实例
- redis缓存的安装和使用
- Navicat for MySQL连接MYSQL出错,错误代码1045的解决方法
- mysql 创建库,创建表,创建索引
- mysql 查看客户端、服务端字符集
- mysql 逻辑备份
- oracle restart home
- MongoDB文档的主键_id
- mysql多实例的安装和管理(一台服务器上运行两个mysql实例)
- MySQL错误:Can't connect to(10060)
- mariadb 下载与安装编译
- Oracle to_date()函数的用法《转载》
- OL/SQL编程练习
- SQL exists not exists
- sqlplus/RMAN/lsnrctl 等工具连接缓慢