• 设计表结构规范及三范式


    编写规范:

    表名以及字段名用英文单词表示,多个单词之间用下划线(_)连接,最多3个英文单词,下划线的方式映射到实体类,属性会自动驼峰;如果命名直接以驼峰命名,映射到实体类中属性会全部变成小写。

    首先遵从数据库三范式:

    第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 

    第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。 

    第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。

    第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

    范式的优点:

    1)范式化的数据库更新起来更加快;
    2)范式化之后,只有很少的重复数据,只需要修改更少的数据;
    3)范式化的表更小,可以在内存中执行;
    4)很少的冗余数据,在查询的时候需要更少的distinct或者group by语句。
     
    范式的缺点:
    1)范式化的表,在查询的时候经常需要很多的关联,因为单独一个表内不存在冗余和重复数据。这导致,稍微复杂一些的查询语句在查询范式的schema上都可能需要较多次的关联。这会增加让查询的代价,也可能使一些索引策略无效。因为范式化将列存放在不同的表中,而这些列在一个表中本可以属于同一个索引。
     
    反范式的优点:
    1)可以避免关联,因为所有的数据几乎都可以在一张表上显示;
    2)可以设计有效的索引;
    反范式的缺点:
    3)表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失。
    所以在设计数据库时,要注意混用范式化和反范式化。
     
    冗余是空间换时间,重点在于权衡空间和时间
    如果数据量一样,但数据类型更小的话,数据存放同样的数据就会占用更少的空间,这样检索同样的数据所带来的IO消耗自然会降低,性能也就很自然的得到提升

    一、数据库命名规范

           可以采用26个英文字母 (区分大小写) 和0-9的自然数 (一般不需要) 加上下划线 ‘_’ 组成,命名简介明确 (Student_Union),多个单词用下划线 ‘_’ 分隔,一个项目一个数据库,多个项目慎用同一个数据库

    二、表命名规范

           1)采用26字母和0-9的自然数(一般不使用)加上下互相 ‘_’ 组成,命名简洁明确,多个单词用下划线 ‘_’ 隔开

           2)全部小写命名,尽量避免出现大写(因为在我目前使用过的数据库里都不区分大小写)

           3)禁止使用关键字,如:select、table、show 等等

      4)表名称不要取得太长(一般不超过三个英文单词)

      5)表的名称一般使用名词或者东滨短语(实在不行就用拼音吧起码自己能看懂。。。)

      6)也要注意单词形式,列如:使用 user ,而不是 users(因为用户表是一个的而不是多个)

      7)表必须填写描述信息(建表时可以用注释详细写出表细节的作用,不同数据库的注释都不一样)

    三、字段命名规范

      1)采用26字母和0-9的自然数(一般不使用)加上下互相 ‘_’ 组成,命名简洁明确,多个单词用下划线 ‘_’ 隔开

      2)全部小写命名,尽量避免出现大写

      3)字段必须填写描述信息

      4)禁止使用数据库关键字

      5)字段名称一般采用名词或动宾短语

      6)采用字段的名字必须是易于理解,一般不超过三个英文单词

      7)在命名表的列时,不要重复表的名称(如:在 user 表中,出现 user_name 字段)

      8)字段命名使用完整名称

    四、SQL语言编码规范

      1)所有关键字最好大写,如:DELETE、UPDATE、INSERT等等

      2)多有函数及其参数中除用户变量以外的部分大写

      3)在定义变量时用到的数据类型小写

  • 相关阅读:
    蓝桥杯之递归算法基本框架

    Dubbo是什么
    java
    java
    java
    java
    java
    负载均衡的理解
    设计模式学习
  • 原文地址:https://www.cnblogs.com/coderxiaobai/p/13494420.html
Copyright © 2020-2023  润新知