DB: 20 个数据库设计最佳实践

摘要:
DB:20个数据库设计最佳实践code使用明确、统一的标明和列名,例如School,SchoolCourse,CourceID。数据表名不要使用空格。要经过认证才能访问数据库,不要给每一个用户管理员权限。缺乏数据库文档是致命的。你应该为你的数据库设计写文档,包括触发器、存储过程和其他脚本。Normalization做的不够会导致数据冗余,而过度Normalization会导致太多的join和数据表,这两种情况都会影响性能。多花点时间在数据库设计上,否则你将来会付出加倍的时间来偿还。

DB: 20 个数据库设计最佳实践

DB: 20 个数据库设计最佳实践第1张

code

  1. 使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。
  2. 数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。
  3. 数据表名不要使用空格。
  4. 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。
  5. 数据库中的密码要加密,到应用中再解密。 (其实就是散列存储、单向加密)
  6. 使用整数作为ID字段,也许现在没有这个必要,但是将来需要,例如关联表,索引等等。
  7. 使用整数字段做索引,否则会带来很大的性能问题 。
  8. 使用 bit 作为布尔字段,使用整数或者varcha是浪费。同时,这类字段应该以“Is”开头。
  9. 要经过认证才能访问数据库,不要给每一个用户管理员权限。
  10. 尽量避免使用“select *”,而使用“select [required_column_list]”以获得更好的性能。
  11. 假如程序代码比较复杂,使用ORM框架,例如hibernate,iBatis。ORM框架的性能问题可以通过详细的配置去解决。
  12. 分割不常使用的数据表到不同的物理存储以获得更好的性能。
  13. 对于关键数据库,使用安全备份系统,例如集群,同步等等。
  14. 使用外键,非空等限制来保证数据的完整性,不要把所有的东西都扔给程序。
  15. 缺乏数据库文档是致命的。你应该为你的数据库设计写文档,包括触发器、存储过程和其他脚本。
  16. 对于经常使用的查询和大型数据表,要使用索引。数据分析工具可以帮助你决定如何建立索引。
  17. 数据库服务器和网页服务器应该放在不同的机器上。这回提高安全性,并减轻CPU压力。
  18. Image和blob字段不应该定义在常用的数据表中,否则会影响性能。
  19. 范式(Normalization)要按照要求使用以提高性能。Normalization做的不够会导致数据冗余,而过度Normalization 会导致太多的join和数据表,这两种情况都会影响性能。
  20. 多花点时间在数据库设计上,否则你将来会付出加倍的时间来偿还。

. 原文链接:http://www.javacodegeeks.com/2012/02/20-database-design-best-practices.html

免责声明:文章转载自《DB: 20 个数据库设计最佳实践》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用 yo 命令行向导创建 SAP UI5 应用centos7 搭建bitcoin/usdt 节点服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

oracle11g 连接问题

一、TheNetworkAdaptercouldnotestablishtheconnection 状态:失败-测试失败:IO错误:TheNetworkAdaptercouldnotestablishtheconnection 解决: (①、检查防火墙,可能是端口号1521防火墙拦截,把1521加入可允许访问即可。) 这个异常的出现一般与数据库和你的PC...

当ORACLE归档日志满后如何正确删除归档日志

当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入ORACLE。 一、首先删除归档日志物理文件,归档日志一般都是位于archive目录下,AIX系统下文件格式为“1_17884_667758186.dbf”,建议操作前先对数据库进行备份,删除时至少保留最近几天的日志用于数据库恢复。 二、把归档日志的物理文件删除后...

spring源码 — 五、事务

spring提供了可配置、易扩展的事务处理框架,本文主要从一下几个方面说明spring事务的原理 基本概念 事务配置解析 事务处理过程 基本概念 事务隔离级别 在同时进行多个事务的时候,可能会出现脏读、不可重复读、幻读四种情况,数据库分别有四种隔离级别处理这些情况。Spring中TransactionDefinition定义了事务的隔离级别和传播属性,...

[MyBatis]五分钟向MySql数据库插入一千万条数据 批量插入 用时5分左右

本例代码下载:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的数据库环境是mysql Ver 14.14 Distrib 5.6.45, for Linux (x86_64) using EditLine wrapper 这个数据库是安装...

error connecting: Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

【参考】Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置 【参考】【数据库-MySql】 MySqlConnection error connecting: Timeout expired. 【参考】查看mysql数据库连接数、并发数相关信息的命令 解决方案: 1、如果是操作同一个数据库,建议只创建一次...

DataSet——合二为一,合并两个数据集的数据内容

在ASP.NET中,一个数据集可以包含多个数据表,本实例要实现的是两个数据表合并到一个数据集中,即该数据集中包含原来两个数据集中的所有表。 关键技术: 通过数据集的Merge方法可以将另外一个数据集、表集合或行数组的内容合并到当前数据集中。表的主键、表名称、约束等因素都会影响合并数据集的效果。 Merge方法主要用于将指定的DataSet及其架构合并到当前...