孔祥盛MySQL数据库基础与实例教程之资源说明1234本书的特点说在前面的话本书的提供的资源浅谈学习方法5解决问题方法6小结内容一览教师教学好比导演拍摄一部电影,不仅需要演员(学生)的配合,还需要挑选好的剧本(书籍)。好的剧本可以让导演(教师)、所有演员(学生)更顺利地融入剧情,不仅可以节省导演(教师)的精力,缩短拍摄周期,节省拍摄成本,还可以让所有演员(学生)真正地成为“剧情”中的主角。1.说在前面的话本书使用量身定制的案例全面讲解MySQL基础知识以及MySQL5.6新特性,InnoDB全文检索、触发器、存储过程、函数、事务、锁等概念,全部融入该案例。本书尽量将抽象问题形象化、图形化,复杂问题简单化。即便读者没有任何数据库基础,也丝毫不会影响数据库知识的学习。2.本书的特点曾经看到有一种极端的说法:中国不缺好的导演、好的演员,而是缺少好的剧本,对于学习亦是如此。笔者一直认为:中国不缺乏好的导演(教师),也不缺乏好的演员(学生),缺乏的是能够让导演(教师)和演员(学生)快速地融入剧情的剧本(教材)。1.说在前面的话对于学习,亦是如此。学习数据库,尤其是学习MySQL,笔者试图编写这样一部“剧本”:让教师、学生快速地融入“剧情”,并且变“学生被动学习”为“学生主动学习”。笔者相信:《MySQL数据库基础与实例教程》就是一本能够满足导演(教师)、演员(学生)拍摄要求(教学要求)的剧本(教材)。1.说在前面的话本书选择的案例易于理解、开发,非常适合教学。本书使用该案例,通过10个章节的内容,贯穿MySQL所有知识点,内容编排一气呵成,章节之间循序渐进,内容不冲突、不重复、不矛盾。2.本书的特点为了能让读者将所有的时间、精力放在MySQL知识点的学习上,本书使用尽可能少的数据库表讲解MySQL的所有知识点。本书所使用的表不超过10张,经常使用的表不超过5张,使用5张表讲解MySQL几乎所有的知识点,很大程度上可以减轻教师、学生的负担。但同时也为笔者构思本书的知识框架带来不少挑战,也希望读者理解笔者一片苦心。2.本书的特点本书注重软件工程在数据库开发过程中的应用。数据库初学者通常存在致命的缺陷:重开发,轻设计。开发出来的数据库往往成了倒立的金字塔,头重脚轻。真正的数据库开发,首先强调的是设计,其次是开发。正因为如此,本书将数据库设计的内容进行详细地讲解,并且在本书第一章进行了详细讲解。2.本书的特点撰写本书时,为了向读者还原笔者真实的开发过程,本书在内容组织上使用、保留了一定数量的截图显示执行结果,有些截图至关重要,读者甚至必须从截图中得到一些结论。当然这些截图无疑增加了本书的版面,希望读者谅解。2.本书的特点截至目前,本书提供的资源都是免费资源其中包括:所有安装程序、PPT课件、教学大纲、MySQL源代码、PHP源代码。其它资源(例如教学计划、视频等)正在开发中,根据需要,这些资源也将免费向读者提供。读者也可以时刻关注本书资源更新情况。3.本书提供的资源本书提供的资源可以到人民邮电出版社教学服务与资源网下载。出版社网址:另外,还可以通过百度网盘下载。百度网盘网址:本书提供的资源浅谈学习方法安装本书提供的软件按照章节顺序学习、预习仔细观看老师讲解、操作课后翻看教科书自己上机操作“善待”本书资源4.浅谈学习方法如果SQL代码运行出错,首先试图在书中找到答案;如果书中没有答案,建议通过通过百度知道、谷歌搜索引擎找到问题所在(意在锻炼学生的自学能力、自己解决问题的能力);如果问题依旧没有解决,首先考虑与其他同学协商解决(意在锻炼协同能力),直至请教老师,解决该问题。5.解决问题方法个人观点1:因为遗忘,学会自学比学会知识更重要,会学知识比学会知识更重要。“学会知识”层次较低。即学会了某个具体的知识。“会学知识”层次较高。意在强调自学能力。5.解决问题方法个人观点2:学会如何找到知识比掌握知识细节更重要。我们遇到问题时,我们往往不是第一个发现该问题的人!更不是第一个解决该问题的人!记住:我们往往不是第一个吃螃蟹的人!要学会使用搜索引擎解决问题。5.解决问题方法6.小结孔祥盛MySQL数据库基础与实例教程之数据库设计概述123本章抛开MySQL讲解关系数据库设计的相关知识,以“选课系统”为例,讲解“选课系统”数据库的设计流程。4内容一览数据库设计的相关知识数据库概述E-R图关系数据库设计123简单地说:数据库(Database或DB)是存储、管理数据的容器;严格地说:数据库是“按照某种数据结构对数据进行组织、存储和管理的容器”。总结:数据永远是数据库的核心。关系数据库关系数据库管理系统结构化查询语言SQL1.1数据库概述1.1.1关系数据库管理系统通过“数据库管理系统”,数据库用户可以轻松地实现数据库容器中各种数据库对象的访问(增、删、改、查等操作),并可以轻松地完成数据库的维护工作(备份、恢复、修复等操作)数据库用户无法直接通过操作系统获取数据库文件中的具体内容;数据库管理系统通过调用操作系统的进程管理、内存管理、设备管理以及文件管理等服务,为数据库用户提供管理、控制数据库容器中各种数据库对象、数据库文件的接口。1.1.1关系数据库管理系统添加标题添加标题表视图索引数据库容器数据库容器中的数据库对象都是以文件为单位存储在外存数据库用户不能直接通过操作系统,访问数据库文件中的数据数据库管理系统操作系统的进程管理、内存管理、文件管理、设备管理等服务数据库用户可以通过DBMS访问数据库文件中的数据数据库用户调用层次模型面向对象模型网状模型关系模型数据库管理系统常用的数学模型添加标题基于“关系模型”的数据库管理系统称为关系数据库管理系统(简称为RDBMS)。随着关系数据库管理系统的日臻完善,目前关系数据库管理系统已占据主导地位。1.1.1关系数据库管理系统年2月数据库流行度排行榜截至目前,MySQL已经成功逆袭!1.1.1关系数据库管理系统2014年3月数据库流行度排行榜1.1.1关系数据库管理系统2014年4月数据库流行度排行榜1.1.1关系数据库管理系统开源MySQL源代码免费下载简单MySQL体积小,便于安装MySQL性能足够与商业数据库媲美功能强大MySQL提供的功能足够与商业数据库媲美逆袭原因性能优越1.1.1关系数据库管理系统关系数据库中所谓的“关系”,实质上是一张二维表。请看下面的课程表。课程号课程名人数上限任课教师1java语言程序设计60张老师2MySQL数据库150李老师3c语言程序设计60王老师4英语230马老师5数学230田老师字段名(列名)第1个字段(列)第1条记录第2条记录第3条记录第4条记录第5条记录第3个字段(列)第2个字段(列)第4个字段(列)1.1.2关系数据库作为数据库中最为重要的数据库对象,数据库表的设计过程并非一蹴而就,上述课程表根本无法满足“选课系统”的功能需求。事实上,数据库表的设计过程并非如此简单,本章的重点就是讨论如何设计结构良好的数据库表。1.1.2关系数据库结构化查询语言(StructuredQueryLanguage或简称为SQL)是一种应用最为广泛的关系数据库语言,该语言定义了操作关系数据库的标准语法,几乎所有的关系数据库管理系统都支持SQL。1.1.3结构化查询语言SQL学习重点123数据库设计是一个“系统工程”,要求数据库开发人员:熟悉“商业领域”的商业知识。利用“管理学”的知识与其他开发人员进行有效沟通。掌握一些数据库设计辅助工具。数据库设计辅助工具商业知识和沟通技能“选课系统”概述45定义问题域编码规范1.2数据库设计的相关知识数据库技术解决的是“商业领域”的“商业问题”。数据库开发人员有必要成为该“商业领域”的专家,与其他开发人员(包括最终用户)一起工作,继而使用数据库技术解决该“商业领域”的“商业问题”。1.2.1商业知识和沟通技能1.2.2数据库设计辅助工具工具模型技术业务模型面向对象分析和设计技术结构化分析和设计技术软件测试技术关系数据库设计技术ErwinPowerDesignerRationalRoseVisioVC++6.0VisualstudioEclipseNetBeans单元测试工具功能测试工具性能测试工具程序流程图DFD时序图状态图CASE工具IDE工具测试工具数据模型类图E-R图教师学生课程删除添加班级查看课程学生列表课程查询用户信息维护课程审核管理员选课调课退课审核课程信息申报课程MICROSOFTCORPORATION课程详细信息提交课程信息限于篇幅,在不影响“选课系统”核心功能的基础上,适当地对该系统进行“定制”、“扩展”以及“瘦身”。1.2.3“选课系统”概述定义问题域是数据库设计过程中重要的活动,它的目标是准确定义要解决的商业问题。“选课系统”亟需解决的“商业”问题有哪些?1.2.4定义问题域在编程的时候会考虑代码的可读性吗?你觉得代码可读性是需要考虑的问题吗?1.代码不仅要自己能读懂,还要别人也能看懂?2.尽量做到可读,但时间紧任务重的时候就顾不上了?3.代码只要自己能读懂就可以了?4.代码写完就完了,不用管以后是否能读懂?5.不知道,没有想过这个问题?1.2.5编码规范请记住:尽最大努力把方便留给别人和将来的自己。建议大家遵循本书罗列的常用编程规范!123关系实体和属性E-R图的设计原则E-R图设计的质量直接决定了关系数据库设计的质量。1.3E-R图0,n0,n选修包含学生学号姓名联系方式...班级班级名所属院系教师工号姓名联系方式...课程课程名人数上限课程描述状态...选修成绩选修时间...实体不是某一个具体事物,而是某一种类别所有事物的统称。属性通常用于表示实体的某种特征,也可以使用属性表示实体间关系的特征实体属性属性1.3.1实体和属性0,n0,n选修包含学生学号姓名联系方式...班级班级名所属院系教师工号姓名联系方式...课程课程名人数上限课程描述状态...选修成绩选修时间...E-R图中的关系用于表示实体间存在的联系,在E-R图中,实体间的关系通常使用一条线段表示。E-R图中实体间的关系是双向的。关系关系1.3.2关系0,n0,n选修包含学生学号姓名联系方式...班级班级名所属院系教师工号姓名联系方式...课程课程名人数上限课程描述状态...选修成绩选修时间...基数表示一个实体到另一个实体之间关联的数目,基数是针对关系之间的某个方向提出的概念,基数可以是一个取值范围,也可以是某个具体数值基数可选基数强制1.3.2关系0,n0,n选修包含学生学号姓名联系方式...班级班级名所属院系教师工号姓名联系方式...课程课程名人数上限课程描述状态...选修成绩选修时间...元表示关系所关联的实体个数。二元关系二元关系夫妻人身份证号姓名性别...一元关系1.3.2关系0,n0,n选修包含学生学号姓名联系方式...班级班级名所属院系教师工号姓名联系方式...课程课程名人数上限课程描述状态...选修成绩选修时间...使用关联(Association)表示实体间关系的属性。关联0,10,1人身份证号姓名性别...夫妻登记时间关联1.3.2关系123实体是一个单独的个体,不能存在于另一个实体中,成为另一个实体的属性。属性应该存在于、且只存在于某一个地方(实体或者关联)。同一个实体在同一个E-R图内,仅出现一次。数据库开发人员通常采用“一事一地”的原则从系统的功能描述中抽象出来E-R图。1.3.3E-R图的设计原则1.为E-R图中的每个实体建立一张表。2.为每张表定义一个主键(如果需要,可以向表添加一个没有实际意义的字段作为该表的主键)3.增加外键表示一对多关系。4.建立新表表示多对多关系。5.为字段选择合适的数据类型。6.定义约束条件(如果需要)。