有很多可以讲授数据库中的交易(我在这里真的是在谈论关系数据库,因为这就是我目前正在教授的内容),但我相信这很容易教错误的事情。鉴于学生很可能会在离开讲堂之前忘记你所说的大部分内容,重点应放在哪里?
教科书和演讲幻灯片中经常出现的一些关键主题是(以Ramakrishnan and Gehrke作为主要指南) - 但不要受到他们的限制:
我知道哪些主题最值得,哪些不是最有价值。我也对你在回答的地方感兴趣。您是否在工作中找到了一些宝贵的洞察力,或者您是否对新毕业的员工不了解某些基本细节感到沮丧?
背景:我正在向一年级IT硕士课程的学生讲授DBMS入门课程。这些学生都是计算机知识(大多数是CS)毕业生。
答案 0 :(得分:4)
首先:您的重点是使用交易还是实施它们?学生的背景是什么 - 特别是,他们是否理解并发性?
我作为非数据库专家的意见,但仍然需要一直使用它们:
背景:我在工作和其他东西上写webapps以获得乐趣。
答案 1 :(得分:2)
我总是在“交易”的背景下提到的一点是,这个概念并不仅限于数据库。
获取交易中包含的打印机资源,其中打印了“确认单”,以及此类交易的ACID属性如何暗示:
另外,我没有看到任何提及两阶段提交等事情。也许你认为这是“等等”的一部分,但我认为它本身就值得一提。
答案 2 :(得分:1)
在我看来,这正是不能教的东西,我可以听到学生在阅读时打鼾。
交易的重要性 - 数据完整性。演示如何为多个语句设置显式事务,并在没有显式事务的情况下编写相同的语句。向他们展示当您不使用显式事务时数据可能会非常混乱。在你的例子的过程中涵盖像ACID这样的东西,但是在一个如何做的实际例子的上下文中使用它以便它可以工作,并且更重要的是,当你做错了会发生什么。
然后了解不同用户的交易如何相互冲突以及为什么会成为问题。讨论人们如何通过使用脏读来解决锁定问题以及为什么这是一件坏事。使用实际数据示例而不仅仅是无聊的讲座。让他们努力得到答案,而不是告诉他们。
但总是回到数据库中的数据并且它的完整性。教导实际的例子而不是讲义和Power Point,并让学生在查询数据后告诉你坏问题的问题是什么,而不是告诉他们(根据我的经验,当你强迫他们弄清楚时,他们会学到更多东西)。
顺便说一下,在你查询技巧之前,你不是在教这个吗?在查询技巧之前,不应该教授关于数据库操作(包括规范化)技术的数据库讲座,直到他们可以查询他们没有装备的数据库来理解其他任何东西,如果你从一些深奥的东西开始他们将停止听,而不是听到所有学期的事情。他们比任何其他单一事物都更需要查询技能,它应该是第一次讲座之前的事情。遗憾的是教科书不是这样编写的,这是我的想法(是的,我教过数据库)是学生离开学校对数据库一无所知的最重要因素。对于这个讲座感到抱歉,你对我的问题感到很紧张。