• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
fly_zj
博客园    首页    新随笔    联系   管理    订阅  订阅

数据库设计三范式

当应用规范化设计数据库时,前提是:

1.表中的行应是唯一的,及必存在主键

2.表必须只描述一个实体,不能顺带描述其它实体

 

范式一:保证列为原子性,即列不可再拆分,看如下的表(员工编号为主键)

 

图像 3

列【城市】,【行政区】,【电话号码】,【内部分机号码】等不能再拆分了,保持了原子性。

从理论上讲,列【地址】是可以在分的,比如再分为【省名】,【市名】,【县名】等,但很少见。

中文的姓名一般不需要再分的,但英文的名字有FirstName和MiddleName和LastName之别。

结论:根据实际需要和常规,某列能不分就不分。

 

范式二:第一范式+一行中除主键的列一定要依赖主键,即主键决定其它列

 

员工编号决定了员工的姓名,职称,所居住的地址,他所属的电话号码等,员工编号保证为一独立的实体,而其它的列则为该实体的属性,是为实体拥有的

那好,如果添加两列为【分数】,【网站】的,算不算打破了第二范式?

结论:也是根据实际需要和常规,在某个项目中,如每个员工有评比的分数来决定奖金的多少,每个员工最爱上哪个网站等都可以与员工编号关联起来的

 

范式三:第二范式+一行的键不能与非主键列有任何的依赖关系,即非主键列不能决定其它列+不能有派生的数据

 

姓名为王大德的不能决定编号为14的该员工地址,职称不能决定姓名,城市等。

 

最后的总结:第三范式最终目的是把数据分开为逻辑的,不可重复的形式,这种形式也非常容易重新组合在一起。规范化是数据库设计的一部分,根据需要可以规范化,也可以

非规范化,规范化只是一种理论,这就是它的全部,无论无何,你都要设计一个数据库,不管好坏!

posted @ 2010-07-25 23:13  fly_zj  阅读(461)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3