数据库设计的最佳实践

标签: 数据库 设计 最佳实践 | 发表时间:2013-04-22 05:28 | 作者:lg831229
分享到:
出处:http://blog.csdn.net
1、使用定义明确的表或列名,并保持一致(例如,School、StudentCourse、CourseID)。

2、使用单数形式的表名(即,用StudentCourse而非StudentCourses)。表代表了实体的合集,不需要复数形式。

3、不要在表名中使用空格。否则你将在定义表时不得不使用“{”、“[”等字符(即为了访问表Student Course,你须得书写“Student Course”。使用StudentCourse足够了)。

4、不要在表名中加入不必要的前缀或后缀(即,命名School即可,不必为TblSchool、SchoolTable等)。

5、加密密码,保证安全性。需要时可在应用中解密它们。

6、在所有的表中使用整型ID字段。即便眼下ID还用不着,将来也会有用到的时候(例如在关联表中、索引等)。

7、使用整数(或相关)类型的数据列来创建索引。Varchar列索引会导致性能问题。

8、对布尔值使用bit字段。使用Integer或Varchar类型存储毫无必要。同时,在这些列名中加入Is描述。

9、对数据库访问进行验证。任何用户都不应给予admin角色。

10、若非必要的话,避免使用“select *”查询语句。为了更好的性能,请使用“select [required_columns_list]”。

11、若程序代码很大,可使用ORM(对象关系映射)框架(如Hibernate、iBatis)工具。关于其性能问题可通过详细配置参数来应付。

12、将那些不使用或不常用而又较大的表(table parts)区隔到不同的物理存储空间,以便提供更好地查询性能。

13、对重要的数据库系统,使用灾难恢复方案和安全服务,比如故障切换集群(failover clustering)、自动备份、复制等。

14、为了保证数据完整性,请使用约束(如外键、Check、Not null约束等)。不要给予对应用代码的完整控制权。

15、缺乏数据库文档的习惯非常不好(evil)。用ER图对数据库设计模型进行描述。同时记得编写触发器、存储过程等脚本的代码。

16、对频繁进行的查询使用索引。Analyser工具可用于决定index在何处定义。对于查询获取大量列,聚簇索引(clustered index)通常更好。而对于点查询,可使用非聚簇索引。

17、将数据库服务器与Web服务器放置在不同的计算机中。这可以提供更好的安全性能(攻击者不能直接访问数据),而且由于可以限制访问请求数及进程量,服务器也能获得更的CPU及内存性能。

18、图像和Blob列一定不要定义在查询频繁的表中,这也是出于性能考虑。可将这些数据放在单独的表中,并在查询表中建立指向它们的指针。

19、规范化(Normalization)是必须的,以进一步优化应用性能。否则可能面临过多的数据副本,当然过渡规范化(over-normalization)则会导致大量跨太多表的连接。这两者都会影响到性能。

20、同样也要在数据库建模及设计上花些功夫。若为此省下时间,则很可能面临10倍乃至100/1000倍的维护/重新设计成本。
作者:lg831229 发表于2013-4-22 13:28:12 原文链接
阅读:75 评论:0 查看评论

相关 [数据库 设计 最佳实践] 推荐:

数据库设计的最佳实践

- - CSDN博客数据库推荐文章
1、使用定义明确的表或列名,并保持一致(例如,School、StudentCourse、CourseID). 2、使用单数形式的表名(即,用StudentCourse而非StudentCourses). 表代表了实体的合集,不需要复数形式. 否则你将在定义表时不得不使用“{”、“[”等字符(即为了访问表Student Course,你须得书写“Student Course”.

20个数据库设计的最佳实践

- - ITeye资讯频道
1、使用定义明确的表或列名,并保持一致(例如,School、StudentCourse、CourseID). 2、使用单数形式的表名(即,用StudentCourse而非StudentCourses). 表代表了实体的合集,不需要复数形式. 否则你将在定义表时不得不使用“{”、“[”等字符(即为了访问表Student Course,你须得书写“Student Course”.

数据库优化的最佳实践

- - ITeye博客
  选择合理的索引(前缀性及可选性)、删除没有用的索引.    2)使用规范化,但不要使用过头.   规范化(至少是第三范式)是一个易于理解且标准的方法. 然而,在有些情况下,你可能希望违反这些规则. 查询表通常是规范化的产物,也就是说,你创建了一个特殊的表,这个表包含了在其他表中被频繁使用的相关信息的列表.

ActiveMQ架构设计与最佳实践

- - 深入一点,你会更加快乐
    ActiveMQ是最常用、特性最丰富的消息中间件,通常用于消息异步通信、调用解耦等多种场景,是JMS规范的实现者之一.     ActiveMQ提供两种可供实施的架构模型:“M-S”和“network bridge”;其中“M-S”是HA方案,“网络转发桥”用于实现“分布式队列”.     Master-Slave模型下,通常需要2+个ActiveMQ实例,任何时候只有一个实例为Master,向Client提供"生产"、“消费”服务,Slaves用于做backup或者等待Failover时角色接管.

RESTful API 设计最佳实践

- - 文章 – 伯乐在线
项目资源的URL应该如何设计. 用哪种HTTP方法来创建一个新的资源. 实现分页和版本控制的最好方法是什么. 因为有太多的疑问,设计RESTful API变得很棘手. 在这篇文章中,我们来看一下RESTful API设计,并给出一个最佳实践方案. 资源集合用一个URL,具体某个资源用一个URL:. #资源集合的URL /employees/56.

5大移动网页设计之最佳实践

- everfly - 互联网的那点事
本文来自SocialBeta内容贡献者wisp,原文译自Mobile Web Design: Best Practices,更多移动产品设计方面的资料,请查看SocialBeta移动互联网栏目. 移动设备的兴起正在给互联网带来一场新的革命,虽然说移动网页设计原则不会有多大变化,但是却有着明显的区别.

响应设计的技巧、秘诀与最佳实践

- - ITeye资讯频道
Web设计者间广泛流行着一个概念,即响应设计(Responsive Design). 它是一种采用流体布局和Media queries(媒介查询)技术来创建网站,使其能够适应各种尺寸大小屏幕的技术,Ethan Marcotte使用 responsive design 这一术语描述它. 如果你之前从未听说过响应设计,那么你可以好好读读Marcotte的介绍文章.

名片设计最佳实践和技巧分享

- - 译言-精品外文翻译 - 最新译作
日期:2012-9-22  来源: GBin1.com. 名片设计在现代设计中占有非常重要的地位,最大的问题在于使得名片设计与众不同. 不一样的名片设计往往能够让你的客户或者朋友更加容易的认出你的公司和品牌. 在以往的文章中,我们也曾经分享了很多名片设计实例,在今天的文章中,我们将按照不同的设计类别来介绍更多优秀的名片设计技巧和实践,帮助大家了解如何能够设计出不同一般的名片.

Dropbox可伸缩性设计最佳实践分享

- - InfoQ cn
  Dropbox的运维工程师 Rajiv,跟大家分享了可伸缩性设计的 最佳实践第一讲. 众所周知, Dropbox是一款非常易用的网络存储云端产品,现已达到40,000,000的用户. 令人惊奇的是, Dropbox公司对于服务器集群的运维人员投入在一到三个人. Rajiv就系统的可伸缩性设计,尤其在资源有限、流量快速增长的情况下,将最佳实践分享给大家.

海尔电商峰值系统架构设计最佳实践

- - 博客园_知识库
  多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模、全方位的系统检阅,例如双11、周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚至几十倍,产生的峰值对平台形成极其强烈的冲击,对电商平台的架构带来巨大的考验. 因此,对电商平台的规划和架构工作不仅要高瞻远瞩,而且要细致入微,否则将导致平台无法满足高速增长的业务发展,细微处的失误也可能造成严重后果,不仅影响业务指标的实现,还可能导致对系统进行重新架构,劳时费力又伤钱.