ByVal发表于LeadBBS: 2004-11-20
原文网址:http://www.leadbbs.com/a/a.asp?B=230&ID=1525813
说得很对:)
酒后胡言一篇-关于项目设计思路(给刚刚涉猎WEB开发的朋友)
前几天接了个单,是朋友转过来的.
粗略看了一下他自己写的简略流程文档.简直怀疑这几年是不是白过了.或者是时光倒流10年了。一个简单的多权限用户实现,在他的设想中是需要[权限等级数+3]个表的.一个是未审核的表,一个是审核不通过的表.其他就是审核通过后各种权限的用户的表.看了这样的结构.我发现我已经无可避免地患上了一种疾病-吐血.
很奇怪他为什么就没想到把这N个表合为一个.这完全是可行也容易实现并易于开发的事情呀.其实这个现象在我们周围已经普遍得很了.很多时候,初学的朋友们对数据存储体完全没有一点认识,他们认为,数据库也就是多了一个可以划分出几个字段来分别存储一段数据.而对于构成整个项目数据库应该有多少个表,什么表,各表间有什么联系并没有考虑过.他们只是简单地考虑着如何生成一个表,来实现自己当前构想的整个项目中的某一个功能,却没有想过自己新建立这个表以前项目的数据容器中是不是已经存在可以利用的表.这也就造成了多个字段结构大体相同的表并存于数据库中的现状.这是对数据量控制的完全不负责任..同时也是对数据库的一种侮辱.在我们常用的数据库中,如ACCESS/MSSQL.里面的数据表,可以看成是一个个活生生的个体.在它里面,有着完美的多维结构来体现数据存储的特性.就像下面的: 字段1 字段2 字段3 第一条记录 ----- ----- ----- 第二条记录 ----- ----- ----- 第三条记录 ----- ----- -----
而其中的一维,即字段,又可以通过SQL语言来体现与其他表间数据的联系.就像下面的.数据表A 数据表B 字段1 字段1 字段2 字段2 字段3 字段3
A的字段1值是对应B的字段2的值.这样我们就可以根据A中已知的条件获取B中的数据.就像我们可以根据某个人的信息得知他岳父的信息,并从他岳父的信息中得知他岳母的娘家在哪的.
这是一种对应关系的体现,当然也还有其他的,比如如何从某个人的信息得知他的女婿的信息,因为这个人不一定就一个女儿,所以就形成了一个对应多个的关系.这些都是自己在以后的开发中所能体会到的
在设计一个项目的流程中,根据项目内容,设想数据库的主体结构,并把它勾画出来,这是在开始编写代码前应该做的事.而对数据库的多维结构理解,就是你进行数据库建立的最基本的条件.现在刚刚接触WEB开发的朋友,往往对数据库的理解很模糊,对查询数据库时某些基本的逻辑关系很混乱.例如最简单的:如何根据一篇文章的ID得出这篇文章的发表人相关资料.大部分朋友都会说简单到了极点.可有不少人却怎么也想不到如何实现.因为他们还不习惯从多维的角度审视数据库结构.他们眼中这时只存在一个文章ID,却怎么也不能把用户资料表和某条文章的ID对应起来.他们没有想过根据文章ID我们可以取得文章的信息,包括发表的用户名/用户ID,而根据取得的用户名/ID,我们又可以从用户表中取得对应这个用户的相关资料了.而最可怕的则是有某些朋友的文章表中根本没有记录用户名/ID,却又强要不改动数据表结构就实现这个功能.这个是能令所有人都颤抖的设想.
当然,这些都只是暂时的思路问题.在接触了WEB开发一段时间并接触数据库比较多后,自然认识也会慢慢加深.今天喝了酒,慢慢对自己一路走开时的心境有所回忆,有些有时不知道怎么表达的东西也一瞬间就能说出来.既然能说出来,就写下来了,博大家一笑.也免得自己又忘了,唉.露丑了。
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=259874
|
- 评论人:fgff
2005-10-10 11:02:26
|
|||
反对何必发好看发 大会可是豆腐干还是客观好看上深刻赶得上赶快上等兵感看病可是刮打扁感山豆根表示大概克格勃劳动后赶快三不管可是打边鼓 北戴河ぁ长 |
||||