数据库的重要性不言而喻。对于层序员来说跟数据库打交道更是家常便饭。数据库给开发带来了巨大的便利。我们或多或少的知道一些数据库设计规范,但并不全面,下面我就简单整理一下我自己平时的总结梳理。
1、 库名,表名,字段名禁止使用mySQL保留字
2、 库名 表名 字段使用常用英语而不要使用编码,常见名知意,命名与业务,产品线等相关联。
3、 库名 表名 字段名必须是名词的复数形式,并且使用小写字母,多个名词采用下划线,这些表名都是不可以超过32个字符的,是禁止超过。
数据库的三范式
第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式,第一范式的合理遵循需要根据系统的实际需求来定,比如某些数据库中需要用到地址 这个属性,本来直接将地址属性设计成一个数据库表字段就行了,但是如果系统经常会访问地址属性中的城市部分,那么就非要将地址这个属性重新拆分为省份 城市 详细地址等多个部分进行储存,这样在对地址中某一些部分操作的时候就将非常方便。这样设计才满足了数据库的第一范式。
第二范式在第一范式的基础上更进一层,第二范式需要确保数据库表中的每一列都和主键相关,而不能与主键的某一些部分相关,主要针对联合主键而言。
第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。
此图片来源于网络
在我们平时需要设计数据库的时候,以我们的设计经验都是先进行数据的分析,看看有哪些数据或者哪些表,我们经常会出现数据库异常这种情况,就是因为在设计数据库的时候没有把表设计规范,导致后面的项目无法使用数据库中的数据,我们先根据需求看看需要哪些表,建一个文档出来,然后再进行建表,这样就不会那么乱了,如果没有提前规划出来,你一边看一边建表就会很乱的,样式如下面图片
数据表的是基本性值
基本表与中间表、临时表不同,因为它具有如下四个特性
1原子性,基本表中的字段是不可再分解的。
2原始性,基本表中的记录是原始数据 基础数据 的记录
3演绎性,由基本表与代码表中的数据,可以派生出所有的输出数据
4稳定性,基本表的结构是相对稳定的,表中的记录是要长期保存的
理解基本表的性质后,在设计数据库时,就能将基本表与中间表,临时表区分开来。
防止数据库设计打补丁的方法是 三少原则
一个数据库中表的个数越少越好,只有表的个数少了,才能说明系统的图少而精,去掉了重复的多余的从,实体,形成了对客观世界的高度抽象,进行了系统的数据集成,防止了打补丁式的设计
一个表中组合主键的字段个数越少越好,因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段少了,不仅节省了运行时间,而且节省了索引存储空间
一个表中的字段越少越好,只有字段的个数少了,才能说明数据中不存在重复数据,且很少有数据沉余,更重要的是督促读者学会 列变行 这样就防止了将字表段拉入到主表中去,在主表中留下许多空余的字段,所谓 列变行,就是将主表中的一部分内容拉出去,另外单独建一个子表,这个方法简单,有的人就是不习惯。不采纳 不执行。
数据库设计的实用原则是:在数据沉余和处理速度之间找到合适的平衡点。 三少 是一个整体的概念,综合观点,不能孤力谋一个原理,该原则是相对的,不是绝对的,三多 原则肯定是错误的
提倡 三少 原则,是让你们学会利用数据库设计技术进行系统的数据集成,数据集成的步骤是将文件系统集成,为应用的数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。集成的程度越高,数据共享性就越强,信息孤岛现象就越少,整个企业信息系统的全局 图中实体的个数,主键的个数,属性的个数就会越来越少
提高数据库运行效率的办法
在给定的系统硬件和系统软件条件下,提高数据库系统的运行效率的办法是
1、 在数据库物理设计时,降低范式,增加沉余,少用触发器,多用存储过程
2、 当计算非常复杂,而且记录条数非常巨大时(例如一千万条时,这是电信计费系统设计的经验
3、 发现某个表记录太多,则要对该表进行水平分割。水平分割的做法是,以该表主键PK的某个值为界线,将该表的记录水平分割为两个表,即可以维护 表行数过大 手动分割为两个 建个两表。
4、 对数据库管理系统DBMS进行系统优化,即优化各种参数,如缓冲区个数
数据库命名规范
1、表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部大写或首字母大写,表名中包含的单词首字母大写
2、数据库表名应该有意义,并且易于理解,最好可以表达功能的英文单词或缩写,如果用英文单词表示,建议使用完整的英文单词。
3、表名不要太长,最好不超过三个英文单词长度
4、如果是后台表命名时应该在表名基础上加后缀
6、在创建完表之后,记得为表添加上注释