数据库正规化和设计技巧(2)

数据库正规化和设计技巧(2),第1张

数据库正规化和设计技巧(2),第2张

二阶规范化形式

1.为应用于多个记录的字段建立独立的表。

2.使用外键来关联这些表的值。


我们将url的值放在一个单独的表中,这样我们可以在将来添加更多的数据,而不用担心重复的值。我们还通过主键值关联这些字段:

用户

用户名公司公司地址

1乔ABC 1工作车道

吉尔·XYZ街1号

资源定位符

urlId relUserId url

11 abc.com

21 xyz.com

3 2 abc.com

4 2 xyz.com

如上所示,我们已经创建了一个独立的表,users表中的主键userid现在与url表中的外键relUserId相关联。目前的情况似乎已经有了明显改善。但是,如果我们想为ABC公司添加一条员工记录,该怎么办呢?或者更多,200?这样我们就要重用公司名称和地址
,显然不够冗余。因此,我们将应用第三级标准化方法:

三阶规范化形式

1.消除不依赖于该键的字段。

公司名称和地址与用户Id无关,所以它们应该有自己的公司Id:

用户

用户Id名称relCompId

1乔1

吉尔2

公司

compId company公司_地址

1 ABC 1工作车道

XYZ 2号,就业街1号

资源定位符

urlId relUserId url

11 abc.com

21 xyz.com

3 2 abc.com

2 xyz.com这样,我们将把companies表中的主键comId与users表中名为relCompId的外键关联起来。即使我们加入ABC公司的200名员工,公司中也只有一个记录。我们的用户和URL表可以不断扩展,而不用担心插入不必要的数据。大多数
开发者认为三步形式化就足够了,这个数据库的设计可以轻松处理整个企业的负担。这种观点在大多数情况下是正确的。

我们可以关注一下url字段——有没有注意到数据的冗余?如果用户输入这些url数据的HTML页面是一个文本框,可以任意输入,这不是问题。两个用户输入同一个收藏夹的可能性较小。但如果是通过下拉菜单,用户只能选择两个网址输入,或者多一点。在这种情况下,我们的数据库可以进行下一级优化——第四步,这一步被大多数开发人员所忽略,因为它依赖于一种非常特殊的关系——多对多关系,这种关系在我们的应用中从未遇到过。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 数据库正规化和设计技巧(2)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情