Database Design Best Practice (2)

标题里虽然是将Database Designbest practice 但下面内容并不仅限于design阶段的良好习惯。

1 Should binary files (such as word, pdf, image, video) be stored in database?

(1) performance. 根据[2], blob column并不是储存在datarow中,datarow中只是包含了一个指向真正数据的指针,因此,性能并不会收到影响。

(2) full text search. 如果把word, pdf等文件存放在文件系统中,有许多工具支持对这些文档进行全文搜索,但是如果放在数据库中,这种支持可能就没这么多了(利用PDF  IFilter可以对数据库里的pdf进行FTS)。

(3) 原则上讲,数据库里面存放的应该是“数据”。而wordpdf则混杂了数据和格式。

(4) 如果把binary files存放在文件系统上,而在数据库中维护这些文件的路径,那么程序中就要维护数据库中文件路径和文件系统上文件的一致性。

2 insert语句中应该要写清楚要插入的column的名字,否则当这张表的column发生变化时,这个语句就会不成立。

3 数据库设计的目标

(1) 最少的数据冗余。normalization这个过程就是用来实现这个目标的,但要注意过度normalization的问题(在这种情况下,有时候执行一个比较简单的查询就要join好几张表,sql语句比较复杂,这样就得不偿失了)因此有时候为了使数据库关系简单,应该允许redundancy的存在。这里必须达成一个compromise

(2) 占用较小的空间。

(3) 预防错误发生的措施(foreign key, unique key等)。

 Reference

[1]Best Practices in Database Design

http://www.interaktonline.com/Support/Articles/Details/Design+Your+Database-Best+Practices+in+Database+Design.html?id_art=24&id_asc=220

[2] http://www.aspcode.net/blogs/archive/2006/09/04/2.aspx

posted @ 2007-01-19 13:59  玉泉老博  阅读(641)  评论(0编辑  收藏  举报
Free counter and web stats