我们平时开发一个互联网项目的流程是:需求设计、数据库设计、功能设计、项目架构、技术选型、项目开发。数据库设计是我们项目的基石,一个中大型项目,要有一个良好的数据库设计,才能走得更远。一个项目如果数据库设计的不好,后期开发不仅任务量大,而且伴随项目越来越大,项目的可维护性会越来越差。数据库设计对于整个项目,就像盖一栋房子的地基和承重柱。良好的数据库设计可以让我们项目开发很清晰,项目可持续开发,项目可维护性高。
目前比较流行nosql存储,但是nosql存储只支持key-value形式,即便像redis这种支持集合类型,但是他们的数据模型仍然比较简单,很难支持复杂的实体之间的关联关系。nosql存储的底层一般都是hash索引,hash索引查询速度比较快,但是hash索引只能判断相等和不等,不支持范围查询(大于小于)。数据库的索引常用的是b+树,支持相等不等和范围查询。数据库还支持其他类型的索引,如hash索引。
数据库设计有3大范式,目前虽然有反3大范式,但是也是基于3大范式的理念,再去反三大范式。比如:一个数据库基于3大范式去设计,在查询过程中,由于实体关联太多,多表查询时笛卡尔乘积过大,导致查询缓慢。为了提高查询性能,会特别为此建立一张包含多个实体信息的数据表,这样查询语句只需要查询这一张表就能得到想要的结果。这里的设计理念就是先基于3大范式,再去反3大范式。
现在十一国庆假期,系统看了一个PowerDesigner数据库设计与建模课程。老师上课只有ppt,我把老师上课内容作了详细笔记。笔记中包含具体操作、对老师课程的补充、和自己的经验总结。也能下面附上目录和地址,文档在导航窗格模式下跟更清晰。
课程笔记下载地址:链接:https://pan.baidu.com/s/1LLzsg5JQK6Okxq5B3KUueQ 提取码:8zyy