解读数据库设计正规化的五大范式(2)_Mssql数据库教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:数据库用SQL语法大全
1、建表格: createtabletable_name(column1datatype[notnull][notnullprimarykey],column2datatype[notnull],...) 说明: datatype--是资料的格式,详见表。 nutnull--可不可以允许资料有空的(尚未有资料填入)。 primarykey--是本表的主键。 2、更改表


users 
userId name relCompId 
1 Joe 1 
2 Jill 2 

companies 
compId company company_address 
1 ABC 1 Work Lane 
2 XYZ 1 Job Street 


urls 
urlId url 
1 abc.com 
2 xyz.com 


url_relations 
relationId relatedUrlId relatedUserId 
1 1 1 
2 1 2 
3 2 1 
4 2 2 


  为了进一步减低数据的冗余,我们运用第四级正规化形式。我们创建了一个颇奇怪的url_relations表,里面的字段均为主键或者foreign key。通过这个表,我们就可以消除urls表中的重复项目。以下是第四个正规化形式的具体要求: 

第四个正规化形式 

1.在一个多对多的关系中,独立的实体不能存放在同一个表格中 

  由于它仅应用于多对多的关系,因此大多数的开发者可以忽略这条规定。不过在某些情况下,它是非常实用的,这个例子就是这样,我们通过将相同的实体分离出来,并且将关系移到它们自己的表格中,从而改进了urls表格。 

为了令你更容易明白,我们举个具体的例子,以下将用一个SQL语句选择出所有属于joe的urls: 

SELECT name, url FROM users, urls, url_relations WHERE url_relations.relatedUserId = 1 AND users.userId = 1 AND urls.urlId = url_relations.relatedUrlId 

如果我们想要遍历每个人的个人信息和url信息,我们可以这样做: 

SELECT name, url FROM users, urls, url_relations WHERE users.userId = url_relations.relatedUserId AND urls.urlId = url_relations.relatedUrlId 

第五级正规化形式 

还有一级正规化的形式,它并不常见,有点深奥,并且在大部分的情况下都是不必要的。它的原则是: 

1.原来的表格必须可以通过由它分离出去的表格重新构建 

  使用这个规定的好处是,你可以确保不会在分离的表格中引入多余的列,所有你创建的表格结构都与它们的实际需要一样大。应用这条规定是一个好习惯,不过除非你要处理一个非常大型的数据,否则你将不需要用到它。 

  希望这篇文章对你有用,并且可以帮助你在所有的项目中应用这些正规化的规定。你可能想知道这些方法是从哪来的,我可以告诉你,前面三个正规化的规定是1972年,Dr. E.F. Codd在他的论文“进一步正规化数据库的关系模型中”提出的,其余的规定是经过后来的集合理论和关系数学家理论化的。 评论:正所谓物级必反,将表格分得过细有时并不好,因为这样需要将各表进行各种的关联,这会令查询时变得复杂,而且效率也可能降低,这些正规化的规定可以参考,在实际应用时,要根据项目的大小,必要时可以进行一些测试,以设计出更合理的表格结构。 

分享:解决SQLServer2000因登陆失败无法启动服务的方法
解决方法: 1、开始--设置--控制面板--管理工具--服务 (Run --键入 services.msc) 。 2、选择MSSQLSERVER服务,右键“属性”--“登录”,选择登录选项。将登录帐户改为本地系统帐户。 3、重启MSSQLSERVER服务。

共2页上一页12下一页
来源:模板无忧//所属分类:Mssql数据库教程/更新时间:2010-03-16
相关Mssql数据库教程

Mssql数据库教程Rss订阅编程教程搜索