您的位置:首页 > 其它

存储解决方案的行业特色

2006-01-12 15:56 211 查看
第七章[/b] [/b]多张表的设计[/b][/b]
很多时候,单单的一张表已经不能满足业务的需要,这个时候,我们需要在数据库中设计多张表,并通过主键外键的关系,将他们连接起来。
表应该是为了节省精力而设计,别为了克服设计不良的表而执意改善查询。[/b]
一.外键[/b]
[/b]外键[/b]是表中的某一列,它引用到另一个表的主键。[/b][/b]
[/b]外键可能与他引用的主键名称不同。
外键使用的主键也被称为父键,主键所在的表也被称为父表。
外键能用于确认一张表中的行与另外一张表中的行对应。
外键的值可以使NULL,及时主键值不可为NULL。
外键的值不需要唯一,事实上,外键都没有唯一性。
外键为NULL,表示在父表中没有相符的主键。
可以使用外键来引用父表中某一个唯一的值。
外键不一定必须是父表中的主键,但必须有唯一性。
二.表关系
1.一对一
定义:A表中的某条记录在B表中最多只能有一条相对应的记录。
使用一对一表的时机:
a. 抽出数据或许能让你写出更快的查询。
b. 如果有列包含还不知道的值,可以单独存储这一列,以避免主要表中NULL的出现。
c. 我们把不需要经常被访问到的数据单独存储。
d. 比较大块的数据,例如BLOB类型,这类数据或许存储为另一张表会更好。
2.一对多
定义:A表中的某一条记录可以对应到B表中的多条记录,但是B表中的某一条记录,只能对应到A表中的某一条记录。
3.多对多
定义:A表中的某一条记录可以对应到B表中的多条记录,B表中的某一条记录也可以对应到A表中的多条记录。
通常,我们需要使用连接表(junction table),用它来存储两个相关的主键,使得两张多对多的表,分开成两个多对一和一对多的模式。
三.规范化设计
当某列的数据必须随着另一列数据的改变而改变时,表示第一列函数依赖于第二例。
非主键的列依赖于组合主键的某个部分,称为部分函数依赖。
如果改变任何非键列可能造成其他列的改变,即为传递依赖。
1. 第二范式:2NF
规则:a.先符合1NF
b.没有部分函数依赖
2.第三范式:3NF
规则:a.符合2NF
b.没有传递函数依赖

[align=center]第七章多张表的设计[/align]
很多时候,单单的一张表已经不能满足业务的需要,这个时候,我们需要在数据库中设计多张表,并通过主键外键的关系,将他们连接起来。
表应该是为了节省精力而设计,别为了克服设计不良的表而执意改善查询。
一.外键
外键是表中的某一列,它引用到另一个表的主键
外键可能与他引用的主键名称不同。
外键使用的主键也被称为父键,主键所在的表也被称为父表。
外键能用于确认一张表中的行与另外一张表中的行对应。
外键的值可以使NULL,及时主键值不可为NULL。
外键的值不需要唯一,事实上,外键都没有唯一性。
外键为NULL,表示在父表中没有相符的主键。
可以使用外键来引用父表中某一个唯一的值。
外键不一定必须是父表中的主键,但必须有唯一性。
二.表关系
1.一对一
定义:A表中的某条记录在B表中最多只能有一条相对应的记录。
使用一对一表的时机:
a. 抽出数据或许能让你写出更快的查询。
b. 如果有列包含还不知道的值,可以单独存储这一列,以避免主要表中NULL的出现。
c. 我们把不需要经常被访问到的数据单独存储。
d. 比较大块的数据,例如BLOB类型,这类数据或许存储为另一张表会更好。
2.一对多
定义:A表中的某一条记录可以对应到B表中的多条记录,但是B表中的某一条记录,只能对应到A表中的某一条记录。
3.多对多
定义:A表中的某一条记录可以对应到B表中的多条记录,B表中的某一条记录也可以对应到A表中的多条记录。
通常,我们需要使用连接表(junction table),用它来存储两个相关的主键,使得两张多对多的表,分开成两个多对一和一对多的模式。
三.规范化设计
当某列的数据必须随着另一列数据的改变而改变时,表示第一列函数依赖于第二例。
非主键的列依赖于组合主键的某个部分,称为部分函数依赖。
如果改变任何非键列可能造成其他列的改变,即为传递依赖。
1. 第二范式:2NF
规则:a.先符合1NF
b.没有部分函数依赖
2.第三范式:3NF
规则:a.符合2NF
b.没有传递函数依赖

本文出自 “墨痕” 博客,转载请与作者联系!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: