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

重新再来love

重新再来love

2016-01-29 16:34

数据库正规化和设计技巧(2),数据库正规化和设计技巧(2)
  第二级正规化形式

  1.为应用在多条记录的字段建立独立的表格

  2.通过一个foreign key来关联这些表格的值


  我们将url的值放在一个独立的表格中,这样我们就可以在以后加入更多的数据,而无需担心产生重复的值。我们还通过主键值来关联这些字段:

  users

  userId name company company_address

  1 Joe ABC 1 Work Lane

  2 Jill XYZ 1 Job Street

  urls

  urlId relUserId url

  1 1 abc.com

  2 1 xyz.com

  3 2 abc.com

  4 2 xyz.com

  如上所示,我们创建了独立的表格,users表中的主键userid现在与url表中的foreign key relUserId关联。现在的情况好象已经得到了明显的改善。不过,如果我们要为ABC公司加入一个员工记录呢?或者更多,200个?这样我们就必须重
复使用公司名和地址,这明显不够冗余。因此我们将应用第三级正规化方法:

  第三级正规化形式

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

  公司名及地址与User Id都是没有关系的,因此它们应用拥有自己的公司Id:

  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 relUserId url

  1 1 abc.com

  2 1 xyz.com

  3 2 abc.com

  4 2 xyz.com

  这样我们就将companies表中的主键comId和users表中名字为relCompId的foreign key关联起来,就算为ABC公司加入200个员工,在companies中也只有一条记录。我们的users和urls表可以不断地扩大,而无需担心插入不必要的数据。大部
分的开发者都认为经过三步的正规化就足够了,这个数据库的设计已经可以很方便地处理整个企业的负担,此看法在大多数的情况下是正确的。

  我们可以留意一下url的字段--你注意到数据的冗余了吗?如果给用户用户输入这些url数据的HTML页面是一个文本框,可任意输入的话,这并没有问题,两个用户输入同样收藏夹的概率较少,不过,如果是通过一个下拉式的菜单,只让用户选择两个url输入,或者更多一点。这种情况下,我们的数据库还可以进行下一级别的优化--第四步,对于大多数的开发者来说,这一步都是忽略的,因为它要依赖一个很特别的关系--一个多对多的关系,这在我们的应用中是还没有遇到过的

 
展开更多 50%)
分享

猜你喜欢

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

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

数据库正规化和设计技巧

SQLServer
数据库正规化和设计技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

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

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

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

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

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

数据库规范化技巧

编程语言 网络编程
数据库规范化技巧

数据库设计技巧(二)

PHP
数据库设计技巧(二)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

七种非常快捷的人物美白方法

七种非常快捷的人物美白方法

SQL Server:安全设计从头起

SQL Server:安全设计从头起
下拉加载更多内容 ↓