我想写程序#3 之 「简单地设计自己的数据表(Table)」
http://www.dotblogs.com.tw/mis2000lab/archive/2008/09/08/5316.aspx
前两篇文章,有跟大家分享过,我是怎么建议初学者「该不该事事都靠自己写程序?」
也分享过「我是怎么引导初学者开始写程序的」
- 我想写程序#1 之 「先确立志向」 (2010-10-22 09:32)
- 我想写程序#2 之 「两招(三支程序)就可以出师」 (2010-10-22 09:35)
这一次,要跟大家分享,「初学者怎么依照实际需求,设计自己的数据表(Table)」
这一点非常非常困难,要靠经验累积才能达到。因此,先用别人设计好的 Table玩一阵子,玩透了,自然就会自己开规格。
当客户提出要求,自己可以开TableSchema、自己写程序来解决问题,这样才是一个稍有资格出道的 Web程序设计师。
不会自己开Table,程序就不知道该怎么写。
目前的商用软件、Web系统,背后都跟数据库息息相关。
相关文章可以参考 Allen Kuo这两篇文章,
网络上很多人在问「购物车要怎么做?会员管理系统要怎么做?购物网站怎么做?留言版要怎么做?」
绝大部分是他们不会依照需求,来开Table。 倒不是他们不会写程序。
要破除这种困境,最简单的方式,就是玩一个「万用Table」。
所谓的万用Table,就是我在我的书本里面附上的 「Test 资料表(Table)」
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
这个Table,可以帮你做一个公告栏、也可以当成购物网站、也可以当成在线媒体(例如:联合新闻网、中时电子报)......
数据可以捞出来(Output),也可以回写(Input)新文章、点阅率、转寄率等等。
一个资料表,就能做到 Master-Detail(中国大陆 内地称为主细表)的功能。
从单一Table下手,是最简单的方式。
几乎有八成的范例,都在同一个Table上完成。所以我才称「它」是我上课用的「万用Table」。
并不是这个 Table 真的天下无敌啦~就如同以前大家常引用微软的北风(NorthWind)数据库来教学一样,只不过北风数据库的关联,其实比我这个范例复杂多了。
当初学者发现,原来开一个好用的 Table之后,相同的程序,就可以写出网站的许多功能。
他们就会发现,Table开得好,程序也会好写。
在商用系统上,核心还是数据库。
然后,可以加入另外一个 Table,做关连式数据。两个 Table会有字段(例如:主索引键),将彼此两者变成相关连。
我在这里,是用另外一个 Test_Talk资料表,来作留言版。
另外一个Table,是简单的会员数据表。
我只用了简单的三个Table,就能做出「大部分」网站常见的功能。
课程结束后,初学者大概都会依照自己的需求,开立简单的 Table了。
不过,设计 Table与写出漂亮的SQL指令,都是一件不简单的事情。
上面的方法,当然是快速入门、无痛入门的起步。
但在数据库方面要变成高手,要有耐心、要有「十年磨一剑」的心理准备,跟它长期抗战。
但,写程序要写的好,不也是如此? 都要靠经验累积。
抱歉,这样讲还是不太清楚,毕竟在讲台上口沫横飞,会比平面的BLOG文字要生动一点。
"单一Table" 有几个好处----
1. 可以透过工具(VS 2005/2008)快速完成「新增、删除、修改、展示」,
初学者会被吸引,写起来有趣,就会有信心继续学下去。
2. 过份复杂的数据库,例如:北风数据库,拿来搭配、写程序。
学生常常会被搞乱,忘记自己是在学数据库?还是学写程序(ASP.NET)?
这也是我简化「单一Table」的另一个用意。
让学生的关注力,85%~95%放在「程序」上。毕竟,他们要学的是ASP.NET程序。
完成后,就能「骗」他们继续写一些ADO.NET程序...........用手写,不是透过精灵、DataSource去设定的ADO.NET程序
没错!我善用「骗术」,不断地欺骗学生继续「快乐地」学下去,
等他们发觉、惊醒的时候,课程都快结束了。许多「基础的功夫」也不知不觉地学好了
电影「倚天屠龙记 之 魔教教主(李连杰主演)」,里面的魔头就提到---- 「哈哈~你已经学会九阳神功,功力在体内流窜,这辈子想逃都逃不掉」
学程序,一点都不难。 要有方法,要能激起学生的信心与乐趣。
2008/9/11补充:
每个人设计数据表,都各有方法。而不同的数据表架构,写出的程序都会各异。
如果您想要找一个范例,可以到微软的下载区,找一下北风数据库(NorthWind),他有Access与MS SQLServer的范例可以下载。
北风数据库的范例:Orders(订单) => Order Details(订单的细项)。一份订单里面,总会有好几项商品(一对多)。这个就是很基础的 Master-Detail的关连式数据表设计。
或是参考 Topcat写的这篇文章:巢状GridView范例(多笔订单、订单明细设计范例)录像
如果您(初学者)这里搞不懂,或是想不通。那么,直接去硬干程序,写出的东西往往不太有用。或是很快就会遇见瓶颈。
如果你的数据表设计的好,那么跟着规格去写程序,就会顺利很多。
写一阵子后,自己就会有概念,自己就会开数据表的规格。
以后接到客户需求时,会把「数据表的设计 与 程序」做一个整体的规划,那时就会发现,写程序真是水到渠成的小事而已。
=======================================================================
回想当年在学校,大部分的老师没办法教好「程序设计」的原因有两个:
第一,老师太聪明。
第二,范例太抽象。
学校(大学院校)的老师太聪明了,各个都是博士,他们的「求学生涯」中,没有学不会的课程。说不定也没有被当、重修过...
上了几次课,学生还是听不懂,他们(老师)还觉得奇怪「这么简单,你们怎么学不会?」「人家台大的课程,是不会上课教你写程序的,要回家自己看书」
再来,程序设计太抽象,找不到好的范例,导致上课时的范例都很无趣。
所以,每次上课都在写九九表、最大公因子、计算一些数学问题、用 *号画一个直角三角形或是菱形。
上面这两点,不光是我的求学经验,在台湾的大学院校里面,学程序设计,99%的人都遇见过,对吧!
这不能怪大学院校的老师啊。我以前的老师说的有理,「我虽然是博士,但学术能力好,未必(写程序)专业技巧就好啊」
大学院校的老师,很难「感同身受」。以「同理心」改变自己,去指导大部分资质普通的一般学生。
因为对他们来说,他们一辈子在学校都是名列前茅,课程从来没有听不懂、学不会、考不好的。
他们怎么能体会一般学生的学习困境在哪里?哪里会遇见瓶颈?
而我不一样,「吾少也贱,故多能鄙事」。
我出身不好,写程序也是出社会被逼的。
教我学会写程序的,是「以前人家留下的程序」。
严格的说,我第一次去修改系统时,没有人带。
我是在实战中,一行一行程序代码,被磨出来的。 更生动地说,我不是学院派的,我是「打架派」的。
我学到的功夫与招式,都是被人家毒打一顿,(没被打死)才学到的。
因为出了社会、领了薪水,两三个月没成绩,我就死定了。
我能有点领悟,都是从 "实战" 中获得的。
所以我特别能了解:从哪里着手,会减少磨合?会让初学者快速上手?会让他们有信心度过第一个月「无趣」的学习低潮?
这些故事,以前也跟大家分享过了,请看这两篇文章 --
故事一:
我毕业后,进了一家半官方的公司。老板一看我是资管毕业,就说:「去写程序!」
那时的国防役,没现在这么多选择。没办法像现在这么率性,稍稍不如意,就放弃、就回去当兵。
那时民风纯朴,我也有心要跟它干到底(学经验)。
我就真的接下了一个Web Project。用ASP撰写的,之前的三个工程师早就离开了,而.....文件呢?
......对不起...... 长官说:「什么文件?你不就是写程序的吗?"改"就对啦!」「你不是资管毕业的吗?一定会的啦!」
也算运气好。ASP这东西不难,我第一个月就写了一些小程序。(感谢以前的工程师,他们遗留的程序还算简单,或是有规律可循,能让我快速模仿)
第三个月结束,我已经写出几支自己会偷笑的东西出来了。(那时颇自得意满,号称自己「看见人家网站的功能,就能写出一样的」。......但程序效能未必跟人家一样好,不过功能雷同~)
故事二:
2001年,那时候我写了一段时间的Web程序,被调去资策会的教育训练中心当讲师。
虽然我在学校当过两年讲师,但我心里也毛毛的。尤其是前一位老师,听班主任说:上第一节课就被学生抗议 ,轰下台。(因为500小时的就业辅导班,学费很贵,要价十几万。学生很认真的~)
我那时候,基本程序只谈 IF判别式 与 循环。SQL指令只谈基本语法(因为有其它专任老师教过数据库与SQL了)
第一、二个范例,就是Master-Detail。
第三个范例,就是数据新增。
....然后是简单的搜寻引擎、会员注册与功能(Session & Cookie)、留言版、关连式数据库、其它常见的网站功能。
那时的班主任也很怕,我下这种猛药(前三个范例,前三节课的内容)。学生一旦学不会立刻又抗议了
没想到情况出奇的好!因为这些范例,每个网站都有,都用的到。所以学生学习兴致高。
我又刻意把范例的难度降低。 日后慢慢加入新功能,最后补齐。学生学起来都不错,回家作业都能完成。
最后,要毕业前的专题,竟然通通都选Web专案来作。可见他们对于Web Programming有兴趣、也有信心能做好。
最后............................................................
又是广告时间了,如果你没上过我的课,又嫌资策会就业辅导班的学费太贵(十几万起跳),那就赌一下,买一下我的书吧。
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)
....................................................................................................寄信给我 mis2000lab (at)雅虎.com.台湾 ........
ASP.NET案例精编(清华大学出版社 / 作者MIS2000Lab)
http://www.china-pub.com/46063
2009/5/15上市
市场价 :¥59.80 RMB(人民幣)