• http://www.cnblogs.com/zhangs1986/p/4914520.html


    每次上新功能时都需要添加新表,这时就要涉及到表结构的设计,那就要提到三范式,对于三范式教科书上说得很绕口,那简单点的呢?

       三范式

    第一范式:属性不可分,不允许存在隐藏字段,属性保持“原子性”

    第二范式:要有主键。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

    第三范式:要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

    正规化范式(BCDF):所有表中的决定因素必须是一个候选键,如果只有一个候选键,那么就和第三范式是一样的。

    第四范式(4NF):消除多值依赖。

    第五范式(5NF):消除循环依赖。

    我们设计表结构往往都尊从简单的三范式,从其他元素中消除数据冗余问题, 从特定的表中最小化冗余意味着摆脱不必要的数据。

    先看看目的,消除数据冗余的影响如下:

    ❑物理空间需要存储的数据减少。

    ❑数据变得更有组织。

    ❑范式化允许修改少量的数据(即单记录)。换言之,一个表的具体字段记录更新时,会影响其他引用他的表。

    但是,设计表遵从范式越高则存在“过度设计“的问题,会增加多表间的查询开销,我们只能适度的设计,适度的反范式。如上图中3范式,若就想把楼栋一起查询出来,那从设计上可以分开,另用一个视图将楼栋名称一起查询出来即可。

    数据完整性

    数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。数据完整性因此而提出。

          数据完整性保证了在数据库中存储数据的一致性和正确性。

    1. 实体完整性:保证每一行都能被由称为主键的属性来标识
    2. 域完整性:保证在效范围内的值才能存储到相应列中
    3. 引用完整性:确保外键的值必须与相关的主键相匹配,禁止在从表中插入包含主表中不存在的关键字的数据行;
    4. 用户定义完整性:由用户指定的一组规则
      实现数据完整性的主要方式是约束
    1. 主键约束 primary key 确保字段值不重复不为NULL
    2. 唯一约束 unique 确保字段值不重复
    3. 外键约束 foreign key 确保字段值必须来自于指定表
    4. 检查约束 check 确保字段值的取值范围
    5. 缺省约束 default  给相应字段提供默认值
    6. 注:约束即可在创表时创建,也可在已存在的表上添加

    练习

          若想更深入了解可看一下园友的文章 你真的了解 “范式”吗?
  • 相关阅读:
    关于ListView
    Camera2
    线程池
    运输层
    计算机网络体系结构
    USACO 2016 US Open Contest Gold T2: Closing the Farm
    USACO 2016 US Open Contest Gold T1: Splitting the Field
    USACO 2016 February Contest Gold T3: Fenced In
    USACO 2016 February Contest Gold T2: Circular Barn Revisited
    USACO 2016 February Contest Gold: T1 Circular Barn
  • 原文地址:https://www.cnblogs.com/8080zl/p/8603079.html
Copyright © 2020-2023  润新知