数据库的设计原则:建议设计的表尽量遵守三大范式 1.第一范式 要求表的每个字段必须是不可分割的独立单元 Student表:    name       -- 违反了第一范式             张三/二狗子  3 应改为: 4 Student表:    name      oldName   -- 符合第一范式                张三      二狗子 解析:如上所示,当name这个字段有两种属性值的时候,就应当再加一个字段,将其分开 2.第二范式 在第一范式的基础上,要求每张表…
为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的总结.要想设计一个结构合理的关系型数据库,必须满足一定的范式. 在实际开发中最为常见的设计范式有三个: 1.第一范式 第一范式是最基本的范式.如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式. 第一范式的合理遵循需要根据系统的实际需求来定.比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行.但…
MySQL数据库设计总结   规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎. 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节.另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然在一般情况下,查询性能比InnoDB高,但InnoDB的以主键为条件的查询性能是非常高的. 规则2:…
2 MySQL 数据库设计的"奥秘" [主题]逻辑设计:数据类型与 Schema 所谓"万丈高楼平地起",一个稳固的建筑离不开扎实的基础.同样,良好的的「逻辑设计」和「物理设计」是数据库高性能的基石. 本文的主要内容总结了一张图,你可以点击查看. 我们需要根据系统需要执行的 SQL 语句设计 schema,这往往权衡各种因素. [idea]瞧!权衡和取舍不仅仅在系统设计.方案设计时处处体现其价值,在数据库表设计也同样如此. 举个例子,反范式设计可以加快某些类型查询,…
mysql数据库设计原则: 必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源利用率更高 禁止使用存储过程.视图.触发器.Event 解读:高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”.数据库擅长存储与索引,CPU计算还是上移吧 表必须有主键,例如自增主键 解读:a)主键递增,数据行写入可以提高插入性…
一.什么是范式 1.1.范式:Normal Format,是离散数学的知识,是为了解决数据的存储与优化而提出来的.要求存储数据后,凡是能够通过关系寻找出来的数据,坚决不再重复存储,终极目标是为了减少数据的冗余. 1.2.范式是一种分层的规范,分为6层,每一层都比上一层更加严格,若要满足下一层范式,前提是满足上一层范式.6层范式:1NF,2NF...6NF:1NF是最底层,要求最低,6NF最高层,要求最严格. 1.3.mysql属于关系型数据库,有空间浪费,表设计时也要致力于节省存储空间.这与范式…
>>>>  为什么需要规范的数据库设计 在实际的项目开发中,如果系统的数据存储量较大,设计的表比较多,表和表之间的关系比较复杂,就需要首先考虑规范的数据库设计,然后进行创建库,创建表的工作. 如果设计不当,会存在数据操作异常,修改复杂,数据冗余等问题,程序性能会受到影响,通过进行规范化的数据库设计,可以消除不必要的数据冗余,获得合理的数据库设计,提高项目的应用性能. >>>>设计数据库的步骤 1.收集信息 需要了解数据库需要存储哪些信息(数据),实现哪些功能…
本规范适用于mysql 5.1或以上版本使用 数据库范式 第一范式(1NF)确保每列保持原子性 第一范式(1NF):数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项. 例如: 体重是每个学生的属性,在数据库设计的时候,不会将“体重”拆分成两个字段保存,所以建立一个“学生表”(学生ID.姓名.身高.体重): 第二范式(2NF)确保表中的每列都和主键相关 满足第二范式(2NF)必须先满足第一范式(1NF),第二范式(2NF)要求实体的属性完全依赖于主关键字.如果存在不…
最近手头上有3个项目开动,其他2个都是从底层开始的,一个已经开始了一段时间的了,在小城市小团队开发的条件下,都没有专门的DBA来做数据库的设计和维护,往往都是开发人员顶上,可是看了很多的数据库的设计,感觉很多设计都不是很完美,包括DZ的Ucenter和UcenterHome的数据库,所以这段时间话了近5个小时的时间好好的整理了下数据库方面的基本内容,配合现有的框架来实现快捷的数据库设计,来满足目前项目的需求 参考的数据库文档主要有:目前国内的常见的PHP系统的数据库 DZ6.0的数据库 ECSH…
1.过分的反范式化为表建立太多的列 我们在设计数据库的结构时,比较容易犯的第一个错误就是对表进行了过分的反范式化的设计,这就容易造成了表中的列过多,虽然说Mysql允许为一个表建立很多的列,但是由于Mysql的插件式架构的原因,前面博客已经有介绍,Mysql的服务器层和存储引擎层是分离的,Mysql的存储引擎API工作时需要把服务器层和存储引擎层之间通过缓冲格式来拷贝数据,然后在服务器层将缓冲层的数据解析成各个列,这个操作过程成本是非常高的,特别是对于MyISAM的变长结构,和Innodb这种行…