数据库系统及应用(金培权) 2020春 2019春 2018春 2005秋  课程号:01114701
2020春 2019春 2018春 2005秋  课程号:01114701
9.6(12人评价)
  • 课程难度:中等
  • 作业多少:中等
  • 给分好坏:超好
  • 收获大小:很多
选课类别:计划 教学类型:理论实验课
课程类别:本科计划内课程 开课单位:计算机科学与技术系
课程层次:学科群 学分:4
课程主页:暂无(如果你知道,劳烦告诉我们!)
点评 写点评
secon 2019春

本学期MVP,从上课到PPT到给分,都是一流。

金老师上课能够把复杂、抽象的例子用简单易懂的样例解释的非常清楚,上课气氛非常轻松,听课不累,而且收获非常大,即使是周二周四早上第一节课我也丝毫不困。

作业都是老师自己出的,非常有特色,与上课内容高度一致,知识点考察也比较全面,而且找不到答案。由于PPT做的非常好,附带思维导图,所以期末复习的时候PPT+习题课+作业题+小测题+往年试卷就足够了。

考试部分是两个老师联合命题的,有选择、判断、问答,问答题中有比较生硬的名词解释题(两阶段锁的定义等),有写SQL语句的题目、也有判断范式的题目。具体楼上说的比较详细,按照惯例回忆版试卷应该也出来了,这里就不用多说了,欢迎到gayhub上查询。

实验的话,前两个实验都不算难而且个人感觉意义不大,最后一个lab3工作量比较大,需要自己写一个银行管理系统(然后换一下前端就可以变成软工的综合教务系统了),可以采用C/S或者B/S架构,最多三人组队。

我们组的框架是python+flask+peewee+mysql的B/S架构,前端使用了bootstrap的模板。实际上本次实验只要框架搭起来了,真正的难度并不大,大部分模块的需求都是重复的,纯粹是复制粘贴的工作量比较大(特别是bug也被一起复制粘贴的时候)。助教的检查也不是特别细致,但是报告的工作量就真的high到不行了,堪比软工。(老师上课也说到了,希望能够合并软工的课程实验,让同学们体验更加完整的设计——开发的实验过程,同时不增加同学负担)

写完实验才发现,lab3的代码框架可以参考本评课社区的开源代码23333

金老师似乎会特别关照的把88,89等卡绩分数向上提一档,作为一个一大堆学分被卡绩的蓝人,我在金老师手上的两门课(另一门是Web)都没有被卡绩,表示非常开心。


本门课唯一的缺点就是:

傻逼ORACLE

不过听说明年的课程要换mysql教学了,事实上mysql用于教学确实比Oracle好,我们lab3用的就是mysql,上手即用,比oracle舒服多了。


名言:“毕竟我们也不是什么文科”

隔壁dlf出来挨打

马老师:“出来单挑”

2019-07-11 02:11 8 1
TheLitFire 2020春

2020春,疫情线上

从我听过的为数不多的课堂里,金老师的逻辑和热情算是很不错的,讲课水平应该算上等,可惜我最开始躺在床上听课到后来躺在床上挂上课后就接着睡了(

课程实验:

  1. SQL编程基础,可能是你唯一的写一两个触发器和过程的体验
  2. 实现一个银行系统的概念模型
  3. 实现上述银行,前端加后端或者各种操作,软件工程预定

在我了解的人里面,貌似没写实验三的也不少,这些大多数都是3.0,写了实验的基本都有3.3和3.7;给分应该还算不错。

关于课程材料,除了金老师的ppt以外,本课程有几个教材/参考书:

  • T1:数据库系统导论 第八版 绝版
  • T2:数据库系统概念 第六版
  • C3:数据库系统概论 第五版

本课程材料最大的问题(但不一定是老师的问题)在于材料论述与概念的矛盾、迷惑与不清;我考前异步预习了以上三本所有教材+ppt,所以应该还算有发言权:

  • 概念矛盾:
    • T2和C3以及ppt都认为,数据库的属性值必须是原子的,“不能表里有表”,“不能同时有多个属性值”。T2和C3甚至将原子性等效为数据库的规范性,并将其等价于第一范式。而T1则用了半页的篇幅阐述:“数据库的概念定义与其实现无关”,“我们只是不允许多重值的出现,就是它或者可以取A或者可以取B的情况是不允许的”;但诸如某个属性是表类型,元组类型等等从概念上都是允许的,“只是目前的数据库产品还不支持”。
    • 助教判作业时认为,如果insert、delete、update内有where子查询,则子查询不能引用被更新的表。但T2在第三章清楚表述可以,并给出了例子,以及它工作的原理:先完成全部where选择,然后一次性更新/删除/插入。MySQL确实不支持这种写法,但数据库产品什么时候完整支持过SQL标准呢(这句话在T1T2C3里都多次吐槽过)
  • 复习时容易感到迷惑但这其实是你看书不到位:
    • 在UNDO/REDO日志恢复算法里,T1和ppt都表示要先UNDO再REDO,ppt也给出了调换顺序会产生的问题的例子。而在T2里,给出的算法就是先REDO再UNDO,之所以这样写,是因为在这个算法的前面,第407页最底下一段假设了“如果一个数据项被一个事务修改了,那么在该事务提交或终止前不允许其他事务修改该数据项”
  • 复习时感到迷惑然后你发现老师的ppt或许存在一些疏漏
    • 在规范化部分,2NF或3NF分解那里,T2的表述与 T1和ppt 有些微的不同,这里符号太多不给细节,但是明显T2的部分表述更为精准,推荐看。
  • 令人迷惑于不清:
    • “两阶段锁保证冲突可串”,“冲突可串保证可串”,“可串保证正确”或许是你学完并发控制的第一印象,然后ppt告诉你两阶段存在脏读等等各种问题,并不保证正确。实际上冲突可串在考虑“正确性”时只考虑了commit没有考虑rollback。
    • 什么是脏读,什么是不一致分析,什么是未提交依赖,巴拉巴拉,有没有精确的定论?老师的课堂习题和助教的解释或许并不能一致。两阶段、严格两阶段、强两阶段锁分别能避免什么不能避免什么?我和群友在考前那个晚上聊了好久,获得了一个不错的结论,然而考试没有考。

或许在我看来,这是一门粗略地学起来(看ppt)比较轻松的课程,因为老师的ppt确实精炼而十分有效。但如果你多看一些材料,试图深挖一步时,或许就感觉困难很多了。

2020-09-07 12:06 2 2
silence 2019春

好评的地方:

  • PPT做得很好,对复习十分友好。
  • 上课风格很好。
  • 作业内容对考试有一定的帮助。
  • 在教学会议中,我们反映“各门课的实验加在一起负担过重”,于是就砍了一个实验。
  • 期末考卷难度较为合适。

必须吐槽的地方:

  • 辣鸡Oracle。安装不便,卸载困难。吃我资源,费我时间。用MySQL岂不美哉?
  • 各位都说给分好,结果我被卡了84。但其实我也不知道卡84是给分好还是给分不好。

给各位的提示:

  • 本学期这门课的最后一个实验是让三人一组实现一个带GUI的银行管理系统。建议在写代码之前调研一下有哪些包可以直接且方便地对数据库进行增删改查操作(比如我们都造完轮子了才知道有peewee这玩意)。如果用MySQL提供的MySQL-Connector驱动,就得自行构造SQL语句并手撸接近1k行的轮子,效率很低。

2019-07-20 19:50 2 5
yuxguo 2020春

好评,金老师讲课水平和给分情况可以参考其他答案,我就随便唠点其他的。

- 这学期线上上课,而且是两节早课,每次课前金老师都会在课程群里面发红包,但我每次都是在睡梦中的,完美错亿

- 老师不仅会在课前发红包,还会在课前放歌,虽然大部分放歌的时候我还在睡梦中,但就我听过的为数不多的几次,金老师的90年代歌单跟我的个人喜好完美符合,尤其是最后一次课放的是李宗盛的《山丘》,这是我最喜欢的歌之一,放完后老师还借这首歌鼓励我们翻越人生中的山丘

2020-09-26 15:39 1 0
Lotdhh 2019春

来说说其它答案没有提到的地方:

  1. 教材有两本,金老师的课件基本是按照绝版的那本的顺序来做的,对于使用另一本教材《数据库系统概论》的同学来说不是很友好,有几个地方似乎和老师讲的有一些矛盾(也有可能是我理解错了)。但是《数据库系统概论》确实是本优秀的教材,所以推荐使用《数据库系统概论》这本教材,能够买到正版书,比复印的养眼。
  2. 老师PPT讲SQL那部分个人感觉不如直接看书(这里单指数据库系统概论),能学到的东西也比较多一点。感觉这学期的助教在SQL上水平不怎么样。
  3. 目前了解到的最适合拿来写实验三的框架是Python的Django。主要考虑两点:附带优秀的模板渲染引擎以及模板语言,能够很方便的渲染HTML网页;封装得很好,可以做到all in python,不用去写SQL代码,这个比需要字符串拼接出SQL查询语句要好很多。
  4. 实验三学不到很多东西的,大概也就能了解某个框架而已,实验占比也不是很多,所以使用自己最拿手的语言最强大的框架三人组队在最短时间内解决掉它是最好的。
  5. 如果后面实验一和实验二还是基于Oracle,一开始可能会在介绍实验的时候会介绍怎么安装破解版的powerdesigner等工具,其实没有必要安装破解版,安装正版在试用期把实验弄完就好了。powerdesigner甚至都不需要安装,Oracle自带的SQLDeveloper已经能满足开发需要了。
  6. 隔壁班董兰芳老师出的题是妥妥的文科属性,建议在期中座谈会投诉她,不然期末就准备像写政治一样答她的题目吧。对比金老师的题目,真有种老鼠屎掉进一锅粥的感觉。

 

2019-07-23 15:55 1 0
GEoURO 2019春

金老师的PPT是我认为大三下学期的所有课中做的最清楚,条理最清晰的。老师上课讲的非常的详细,而且也会补充一些例子,虽然最终考试好像并没有怎么涉及23333。讲课的风格个人感觉也很好,不是那种纯念ppt搞得你听都不想听的那种。

开学的时候说会有两次小测,结果最后只测了一次,然后点了一次还是两次名。小测是在刚讲完SQL语法测的(开卷),结果四道题三道都是写SQL查询语句,剩下一道概念题。期末复习时再看小测题好像也没觉得有多么难,当时觉得爆炸大概只是因为作业也还没写,实验也还没做,所以对SQL太陌生了。这种东西理解了就应该都能会写了。

这学期的期末考试画风稍有不同,概念大题多考了一道,总体题型为选择题,判断题,概念简答题,综合题(SQL,范式,还有一个忘了),最后考了一道莫名其妙的题,关系数据库有什么缺点(这个大概是最后一章涉及的内容,然而考前明确说了最后一章不考hhhh,所以都在瞎扯)。选择题、判断题、概念题都会考的比较细,所以概念一定要非常清晰,最好能有往年试卷作为参考,题型和考点非常相似,范式那道题甚至是原题(其实作业也做过基本一致的题,只不过变化了一点,但不细心的话找超码还是会被坑的)。

 

本学期的实验总共三次,第四次是一个额外实验(没有布置也没有人打算去做),第一个是一个常规的写各种SQL和Py/SQL;第二个使用PowerDesigner设计数据库画E-R图并导出物理模型;第三个则是在第二个设计的数据库的基础上(稍有改动,改的简单了点),写前端,讲道理有点和课程内容脱节,反倒有点像软工该干的活,然而软工则天天在那里写文档。最后的实验报告也是写一份和软工类似的设计文档(严重重合,再次要求删除软工23333)。实验三是最多3人一组组队完成,我在的组仨人也没啥前端经验,最终用的PyQt做的废柴前端。有时间一定要提前开始做,挺费时间的,要不是这学期助教心慈手软把原定的在考试前的DDL延后到考试后,就凉透了~

 

可能是因为卷面比较高吧,最终总评挺高的,这波给分很满意。至于另一边DLF的数据库,他们的习题课的课件给的答案都一坨错,我也不想说啥了,讲个往年考试题结果把答案快给错了1/3 hhhhh

2019-07-10 15:56 1 0

我是大二时上这门课的,想着学不动了随时可以退课,不过因为疫情在家上的课,好像比较容易,最后坚持上完了。

 

金老师的这门课是我上大学后第一门每一节都想听的课,因为老师用腾讯课堂上直播课,没有回放,我作息黑白颠倒,所以还是漏了好几次课。金老师声音很好听,PPT做的也很好,讲课思路也清晰,作业不多,每次只有两三道题。课件和作业实验在这里自取。数据库系统及应用课件.zip

 

关于考试,试卷大部分内容和https://github.com/Lyncien/USTC-CS-Exam中2019春的差不多,今年最后一题换成了用E-R模型设计数据库,和实验2类似给出了一个用户需求。我复习时忽略了这一块,导致我连E-R图的符号都忘记了(不过我前面写的慢,也没多少时间写了)。如果只想考试拿个好分数的话,考前好好复习PPT完全足够了。

2020-09-24 10:17 0 0
长者 2018春

很好的一门课,基本掌握了SQL语句和数据库原理,实验也比较简单,第一个是搞几个sql语句,第二个是用sap powerdesigner设计数据库的logic model,这个稍稍有点奇葩,不过可以胡乱糊弄过去。 第三个实验要实现一个银行管理系统,这是最麻烦的,我在win10上开发,用了sqlserver+wpf,全部用存储过程,结果参数传递比较麻烦,最麻烦的是UI的设计,费了老半天设计了一个合理的界面,结果跟我说要实现所有的“增删改查”功能,还不如一开始就用最简单的填表的UI,坑死了,扣了2分 最后有个加分实验(+5分),就是实现S,X锁以及update操作,需要注意顺序的一些问题。 考试比较基础,结果当时居然忘了“两阶段锁”含义 最后给了4.0

2018-09-06 16:42 0 0
ustc小老弟 2018春

老师可以说是特别好了!ppt做的好,讲课也很赞,实验检查略水。。还有平时两次小测要好好准备下,有个附加实验大部分人都会写,不建议在附加实验耗时很多,最后给了90

2018-08-15 15:53 0 0
santa 2018春

感觉数据库真的挺有意思的,挺喜欢老师上课风格的。作业不多,实验就三次加一个附加。意想不到的收获是通过这门课的实验入门了网页前端,不过最后一次实验写了好久啊,导致附加实验都没来得及写(其实是因为仗着ddl在期末就拖延QAQ),其实不算难,主要还是比较麻烦吧。

2018-07-30 22:24 0 0

   课程包括两次小测(小测分数很关键,不是很难,建议认真复习),三次实验(一次基本的SQL语句,一次powerdisigner设计模型,一次GUI的数据库系统,还有一次附加的实验是用C++模拟锁系统,附加实验据说可以直接加分),还有期末考试,金老师讲课讲得非常好,人也很耐心,经常耐心解答我很傻逼的问题。上课最好还是去一下,我每次迟到都很后悔,因为自己去理解那些ppt比听他上课讲效率低太多了。考试感觉不难,考的就是最基本的ppt上面的知识,基本上如果把PPT好好理解一遍分数都应该OK。但是最后期末莫名其妙地炸了,拿了个84真难受。

2018-07-19 14:21 0 0
Nemo. 2018春

老师讲课真的很好,每次都会听的很认真,不过一周两次都是早上一二节,可能是老天不想让我多听吧。

ppt也很好很利于复习,考试题很多概念,反正我模糊不清考前改了好多题。。

实验有点小坑,做一个数据库客户端,问题是要做很多重复的工作,写了那么多代码基本都是一样的模块在那里改来改去。。弄一个简单点的让学生掌握核心方法不就行了么。。

之前听说给分不好,不过我们这届给分应该还挺好吧,我也混了个很给力的分数,嚯嚯嚯。

2018-07-12 17:27 0 0

其他老师的「数据库系统及应用」课

谢希科 8.0 (1) 2020春
未知 4.0 (1) 2017春
岳丽华, 金培权 5.0 (4) 2017春 2016春...
董兰芳 1.0 (2) 2019春
岳丽华 2014春 2010春...

金培权老师的其他课

高级数据库系统 10.0 (1) 2020秋 2019秋...
Web信息处理与应用 6.8 (12) 2018秋 2017秋...
数据库系统及应用 5.0 (4) 2017春 2016春...
数据库概论 2016春 2015春...
数据库原理 2003春
数据库基础 2010秋 2009秋...
数据库安全 2012春 2010春...
数据库概论 2002秋
数据库系统及应用(A) 2004春 2003春
数据库概论 2017春