您的位置:首页 > 其它

我想写程序#3 之 「简单地设计自己的数据表(Table)」

2010-10-22 09:45 260 查看
我想写程序#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

http://www.allenkuo.com/genericArticle/view419.aspx

网络上很多人在问「购物车要怎么做?会员管理系统要怎么做?购物网站怎么做?留言版要怎么做?」

绝大部分是他们不会依照需求,来开Table倒不是他们不会写程序。

要破除这种困境,最简单的方式,就是玩一个「万用Table」。

所谓的万用Table,就是我在我的书本里面附上的Test 资料表(Table)

[b]ASP.NET案例精编[/b](清华大学出版社 / 作者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范例(多笔订单、订单明细设计范例)录像

如果您(初学者)这里搞不懂,或是想不通。那么,直接去硬干程序,写出的东西往往不太有用。或是很快就会遇见瓶颈。

如果你的数据表设计的好,那么跟着规格去写程序,就会顺利很多。

写一阵子后,自己就会有概念,自己就会开数据表的规格。

以后接到客户需求时,会把「数据表的设计 与 程序」做一个整体的规划,那时就会发现,写程序真是水到渠成的小事而已。

=======================================================================

回想当年在学校,大部分的老师没办法教好「程序设计」的原因有两个:

[b]第一,老师太聪明。[/b]

[b]第二,范例太抽象。[/b]

学校(大学院校)的老师太聪明了,各个都是博士,他们的「求学生涯」中,没有学不会的课程。说不定也没有被当、重修过...

上了几次课,学生还是听不懂,他们(老师)还觉得奇怪「这么简单,你们怎么学不会?」「人家台大的课程,是不会上课教你写程序的,要回家自己看书」

再来,程序设计太抽象,找不到好的范例,导致上课时的范例都很无趣。

所以,每次上课都在写九九表、最大公因子、计算一些数学问题、用 *号画一个直角三角形或是菱形。

上面这两点,不光是我的求学经验,在台湾的大学院校里面,学程序设计,99%的人都遇见过,对吧!

这不能怪大学院校的老师啊。我以前的老师说的有理,「我虽然是博士,但学术能力好,未必(写程序)专业技巧就好啊」

大学院校的老师,很难「感同身受」。以「同理心」改变自己,去指导大部分资质普通的一般学生

因为对他们来说,他们一辈子在学校都是名列前茅,课程从来没有听不懂、学不会、考不好的。

他们怎么能体会一般学生的学习困境在哪里?哪里会遇见瓶颈?

而我不一样,「吾少也贱,故多能鄙事」。

我出身不好,写程序也是出社会被逼的。

教我学会写程序的,是「以前人家留下的[b]程序[/b]」。

严格的说,我第一次去修改系统时,没有人带。

我是在实战中,一行一行程序代码,被磨出来的。 更生动地说,我不是学院派的,我是「打架派」的。

我学到的功夫与招式,都是被人家毒打一顿,(没被打死)才学到的。

因为出了社会、领了薪水,两三个月没成绩,我就死定了。

我能有点领悟,都是从 "实战" 中获得的。

所以我特别能了解:从哪里着手,会减少磨合?会让初学者快速上手?会让他们有信心度过第一个月「无趣」的学习低潮?

这些故事,以前也跟大家分享过了,请看这两篇文章 --

[回忆]我是怎么落进「写程序」这个大火坑的?

[入门]如何挑一本好书,学习ASP.NET。个人观点,非战文。

故事一:

我毕业后,进了一家半官方的公司。老板一看我是资管毕业,就说:「去写程序!」

那时的国防役,没现在这么多选择。没办法像现在这么率性,稍稍不如意,就放弃、就回去当兵。

那时民风纯朴,我也有心要跟它干到底(学经验)。

我就真的接下了一个Web Project。用ASP撰写的,之前的三个工程师早就离开了,而.....文件呢?

......对不起...... 长官说:「什么文件?你不就是写程序的吗?"改"就对啦!」「你不是资管毕业的吗?一定会的啦!」

也算运气好。ASP这东西不难,我第一个月就写了一些小程序。(感谢以前的工程师,他们遗留的程序还算简单,或是有规律可循,能让我快速模仿)

第三个月结束,我已经写出几支自己会偷笑的东西出来了。(那时颇自得意满,号称自己「看见人家网站的功能,就能写出一样的」。......但程序效能未必跟人家一样好,不过功能雷同~)

故事二:

2001年,那时候我写了一段时间的Web程序,被调去资策会的教育训练中心当讲师。

虽然我在学校当过两年讲师,但我心里也毛毛的。尤其是前一位老师,听班主任说:上第一节课就被学生抗议 ,轰下台。(因为500小时的就业辅导班,学费很贵,要价十几万。学生很认真的~)

我那时候,基本程序只谈 IF判别式循环。SQL指令只谈基本语法(因为有其它专任老师教过数据库与SQL了)

第一、二个范例,就是Master-Detail

第三个范例,就是数据新增。

....然后是简单的搜寻引擎、会员注册与功能(Session & Cookie)、留言版、关连式数据库、其它常见的网站功能。

那时的班主任也很怕,我下这种猛药(前三个范例,前三节课的内容)。学生一旦学不会立刻又抗议了

没想到情况出奇的好!因为这些范例,每个网站都有,都用的到。所以学生学习兴致高。

我又刻意把范例的难度降低。日后慢慢加入新功能,最后补齐。学生学起来都不错,回家作业都能完成。

最后,要毕业前的专题,竟然通通都选Web专案来作。可见他们对于Web Programming有兴趣、也有信心能做好。

最后............................................................

又是广告时间了,如果你没上过我的课,又嫌资策会就业辅导班的学费太贵(十几万起跳),那就赌一下,买一下我的书吧。

[b]ASP.NET案例精编[/b](清华大学出版社 / 作者MIS2000Lab)

http://www.china-pub.com/46063

2009/5/15上市

市场价 :¥59.80 RMB(人民幣)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐