实际项目开发中数据库设计那些事

1、表与表之间的逻辑关系分为:

    一对一关系:相应约束为A表主键,B表主键同时该列也为A表外键

    一对多关系:相应约束为A表主键,B表非主键列为A表外键且该列不可为空

    零或一对多关系:相应约束为A表主键,B表非主键列为A表外键且该列可为空,权限表中的父ID,一级模块父ID为NULL。

    多对多关系:相应约束为角色表主键roleid,权限表主键powerId,授权表rid为角色表外键,pid 为权限表外键,rid与pid复合主键。

    注意:创建外键时,应创建相应索引。建立数据库约束在某种程度上可以防止并发造成数据错误,

    比如:删除模块时,验证此模块是否被授权,若授权则不可删除模块,服务端查询验证,此模块未被授权,在执行删除前,客户端将其授权,此时外键约束,删除失败,倘若没有外键约束则授权成功,但模块被删除,造成数据混乱。

2、设计工具:

  powerdesigner、mysql  Nacivate 自带的ER图表,Sqlserver 自带的数据库关系图。

3、ORM 框架优缺点:

4、实际开发项目时设计数据库与创建索引

  创建数据表时, 只创建主键,其他索引或包含列均不创建,项目上线后哪里慢优化哪里或统一优化。

  创建数据表时,创建主键及其外键所对应的索引,其他索引或包含列均不创建,项目上线后哪里慢优化哪里或统一优化。

  创建数据表时,创建主键及其外键所对应的索引,创建常用分组、排序字段索引以及常用查询字段所对应的索引,项目上线后哪里慢优化哪里或统一优化,此条前方说法有误,不是分组、排序、 查询条件被索引覆盖就能够使用索引的查找或扫描的,也不是说外键被索引覆盖,链表时候就一定能够有效的使用索引的,具体情况得看具体的SQL语句,合理的创建索引、复合索引、包含列从而提高SQL的执行性能。

  最优方式:

  创建数据表时,只创建主键及其外键所对应的索引

  编写SQL语句,根据SQL语句的需要创建索引,根据经验创建索引,力求SQL可以按最优方案执行,且与其他SQL不冲突

  项目上线后,随着数据量增长的不同阶段,根据执行计划,对常用SQL进行优化。

       应定期重组或重建索引,以防止索引碎片降低系统性能。

  索引可以增加查询性能,但同时会在不同程度上降低增、删、改性能,但多数增删改操作对象为单条语句且多数项目查多改少(修改和删除也得先查后改),所以个人认为一个数据表的索引个数不应受几个或百分之几这样的数子约束,但也不能将所有字段都创建成索引,具体情况应该按需创建,查询、分组、排序、链表等使用频率越高的字段越应创建索引。

  

  

  

posted on 2018-04-09 13:05  无缘沙漠雨  阅读(266)  评论(0)    收藏  举报

导航