今天看萨师煊萨教授的《数据库系统概论》,头晕目眩。
一个关系通常是由赋予它的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。凡是该n目谓词为真的笛卡儿积中的元素(或者说凡符合元组语义的那部分元素)的全体构成了该关系模式的关系。
有谁能在读了一遍以后顺利地在脑海中反映出来这段话在说什么?我读了N遍,前前后后地翻术语定义,总算明白原来他要说的就是表结构和表中的数据。
联想到前段时间看Tom Kyte的Effective Oracle By Design,里面用引水机和需要喝水的人这样的比喻来阐述Free Lists以及Freelist Groups的关系,用在一个大房间里挑选配对跳舞的男孩儿女孩儿来比喻Nested Loop Join和Sort Merge Join,即使人家那是英语,看完一遍以后也会有心中透亮的感觉。
要说这教材和Tom的书定位不同,不能比较也不能苛求,象元组语义,n目谓词这种令人发指的词汇是作为一个教材必须要阐述的知识,但是难道就不能在叽里咕噜了这些之后多加个个深入浅出,浅显易懂的比喻或者解释?
总是觉得某些教科书一派术语的堆砌,冗长乏味,毫无生机,打开翻翻就满脑袋汗,翻到这章不想看是翻到那章也不想看,按照老罗的说法叫“装B”。或许因为这本《数据库系统概论》的抬头写着“面向21世纪课程教材”,所以才格外显得高科技吧。
当然看这本书也并非无所得,下面出个题目,有兴趣的可以先想一想再看答案。
一张表SC,两个字段,SNO和CNO,SNO表示学生学号,CNO表示学生选修的课程编号。表结构和数据构成通过下面的SQL生成。
insert into sc values(1000,1);
insert into sc values(1000,2);
insert into sc values(1000,3);
insert into sc values(1001,2);
insert into sc values(1001,3);
insert into sc values(1002,2);
insert into sc values(1002,3);
insert into sc values(1003,3);
commit;
要求通过一条SQL语句求出所有至少选了1002学生所选的全部课程的学生。也就是结果要出来1000和1001这两条记录。
答案在下面,告诉我们一个反向思考的方法,比较有趣。
from sc scx
where not exists (select *
from sc scy
where scy.sno = 1002
and not exists (select *
from sc scz
where scz.sno = scx.sno
and scz.cno = scy.cno))
and scx.sno <> 1002;
说话不要太刻薄。
理论书就是理论书, 要知道这些书最早出版的时候,市面上还没有特别成熟的关系数据库产品呢,联系实际也没处联系。
就像图灵的自动机理论,诞生于计算机诞生之前,你想让他把自动机理论写成”教你21天学会xxxx”的书一样,搞得图文并茂、老少皆宜,可能吗?
你可以尊敬搞实际工作的。搞科普工作的,对搞理论研究的你可以不尊敬,但也不必太刻薄。
哈哈,Kamus 估计也是随便说说,表搞的太严肃了
老o,或许你是因为我的那句老罗的装B才有此感慨的吧。
我想说的是教科书,而不是理论研究,你觉得教科书该是研究理论的人去学的还是作实际工作的人去学的?恐怕大部分都是作实际工作的吧,既然你是面向21世纪的教科书,那就有点儿21世纪的样子。没错,这本是八三年写的,一版再版赚钱的同时难道不能加点儿新内容进去?Thinking in Java写了多少版了?不加就算了,还非要说面向21世纪?
图文并茂,老少咸宜?老o你觉得Tom的书是老少咸宜的那种吗?我想看到国内能有那样的教材并不觉得自己过份,我知道萨教授是牛人,我没有贬低他的意思,那个时候他是先驱,那个时候出这样的书是值得尊敬,但是作为今天的教材是否该改进些了?就像我们大学的时候,学tm那个什么gp名字叫大学日语的,老的不能再老的课文句型,连人民公社这样得词汇都有,学完了跟别人说,人家笑,早就不这么说了,丢脸!简直tm浪费生命!
中国现在这个样子的教科书,这个样子的教育目标,有什么值得尊敬的地方!
to sopher
我不是随便说的。
教科书的问题是由来已久了,我觉得大多数人都会觉得学校的书本里面根本学不到东西。
唉…俺没理解Kamus 的心思啊…
呵呵,没错,教科书的问题由来已久,其实我也就是想到的时候怒不可遏一下,平时基本上是麻木的。。。
我支持kamus。本来就是很让人不容易看不懂。我想TAOCP也是很牛的书吧,而且也很让人看不懂,但是高先生确实已经做到了他所能做到的一切,目的就是让最笨的读者以最容易的方式看懂。就连题目都分了级别,很细。要么就不要把大名写在书上,要写上了,读者看起来费劲且没有最最大的努力那就是可以批评的。看看那些教课书,除了获奖之类的话,除了是一些牛XX的教授,除了是深什么的带头人之类的话。靠!!可是书怎么就那么深奥呢,怎么比亚里士多德的“政治学”都难以让我看懂呢。就连黑格尔的“逻辑学”,“小逻辑”那么复杂的东西我也能看,可是教课书怎么就是苦涩而无味,有的名词我都不知道他在说什么。
还有那些国外技术书籍的翻译,我只想说,妈的你们TDD地,想混口饭吃,也得要花些本钱吧。语句都不通顺,还害得我怀疑我中文水平差呢!
我喜欢苏运霖,贺麟等这些花心思的翻译者,IT书籍还是要看英文的,虽说我英文不好。我远离这帮“教授”,语言干瘪的要死了。
明明在说着你感兴趣的东西,但是就是让你感到厌烦,这就是当今在用的大多数教科书的特点。
最伟大的思想家总是能够以最浅白的文字表达最深刻的见解。
这样的说法有道理吗?没有吗?有吗?
以前大二还是大三的时候买过一本人民邮电出版社出版的国外著名高等院校课程丛书的中的一本os的书,英文版的
http://www.dearbook.com.cn/book/14655
当时读了真是震撼阿,原来教科书可以写的那么生动。那时候我就觉悟了,看计算机类的书要看英文的
对于数据库原理,我看的一本还不错,就是不知道有没有的卖了
清华大学出的红皮的第三版英文影印版,我很早前在上海书城看到的
还有一本名字不记得了,上次在书城看到翻译版的,惨不忍睹,但是看的出来内容不错,没买,后来到amazon上一查原版要100多美刀(原版已经是第五版了,翻译的还是第二版还是第三版),想想还是算了,下了些大学讲课的ppt来看
想想这个教材上的差距国内外就蛮大的,更不要说其他什么试验设备,教学经费方面的差距了
幸运的是大学很多课程老师都使用了一些国外的教材做辅助教材:)
像清华大学出的那本数据结构的教科书基本上就是翻译国外的教材,竟然都不写明是翻译别人的,不过翻译的还可以
书名怎么没出来?
database management system
database management system那本红皮书很不错,虽然没有an introduction to database systems那本那么强调基础理论,但是内容就新多了。
呵呵,说起来国外的书因为太厚,我读书的时候很多人都抱怨‘里面废话太多‘,很多学生只看附带的powerpoint再听教授讲,没搞懂的再去细看书本。而国内的书直接就写得像大纲一样,上课教授再扩充,娃哈哈。国内这样干直接结果就是教材没法通用,大学都尽量用自己教授写的方便上课。
中国写书就是这样,非要把你当成什么都会,将看似简单的基本概念含糊其辞或一笔带过,能将读者当白纸来写书的,在中国很少。楼上两位可能已经习惯了,呵呵!受毒害已经很深了,呵呵