1、3.3 数据与系统数据与系统 【教学目标】 Access表间关系及查询。 认识数据库系统,体验数据库管理系 统的应用。 【教学重点】旅行小助手功能、界面、 代码设计。 【教学难点】Access表间关系及查询; 旅行小助手代码设计。 一一、案例案例引入引入 阅读第71页“ 探究订票系统功能”之“活动1 查询换乘 方案”,尝试在Access中建立表之间的“关系”,利用“关 系”解决问题。 在查找换乘方案时,“厦门至武汉车次”表中的字段“到达站” 与“武 汉至成都车次”表中的“出发站”是有对应关系的。请你打开教科书 配套资源中的“厦门至成都.mdb”文件,利用“关系”菜单创建如图 3.3.5所示的表
2、间关系: 二、表间关联与二、表间关联与“查询设计查询设计” 关系就像绳子将两个“表”联结在一起,我们可以利用“查询” 面板中的“查询设计”选项按照提示创建选择查询。 双击 ,弹出对话框。 选中选中2个表,单击个表,单击“添加添加” 按钮,再单击按钮,再单击“关闭关闭”按钮。按钮。 再分别选中再分别选中2个表的全部个表的全部 字段,保存为字段,保存为“查询查询1”。 双击双击“查询查询1”,即可看到,即可看到 查询结果(一个新的表),查询结果(一个新的表), 共有共有44条记录。可以看出,条记录。可以看出, 查询结果正是两表中的数据查询结果正是两表中的数据 通过关系(厦门至武汉车次通过关系(厦门
3、至武汉车次. 到达站到达站=武汉至成都车次武汉至成都车次.出出 发站)进行关联的结果。发站)进行关联的结果。 该结果存大的问题: 一是时间上不合理,没有考虑换乘时间的合理性。 例如:在图3.3.6第1条记录中,从厦门北到达武汉 的时间是14:53,而从武汉前往成都东的出发时间 是11:32,时间错位。 二是中转地点不合理。表“厦门至武汉车次”与 表“武汉至成都车次”中录入的都是以武汉(含 汉口、武昌、武汉三个车站)为中转站的车次数 据,武汉三站之间地铁换乘,也仅需半小时,因 此,以“厦门至武汉车次.到达站=武汉至成都车 次.出发站”为关系建立的查询是不可取的,它将 许多可能合理的换乘方案排除了
4、,如坐D2232从 厦门北到武汉站,然后坐武汉市内地铁到武昌站, 再换乘T246次从武昌到成都东,这条可行方案被 排除在外了。 将将关系(厦门至武汉车次关系(厦门至武汉车次.到达站到达站=武汉至成都车次武汉至成都车次.出发站)出发站) 修改为关系(厦门至武汉车次修改为关系(厦门至武汉车次.到达时间到达时间+0.05 武汉至成都武汉至成都 车次车次.出发时间),式中出发时间),式中0.05单位为天,即单位为天,即0.05*24小时小时=1.2 小时,预留了武汉三站之间的换乘时间及出站、进站时间。小时,预留了武汉三站之间的换乘时间及出站、进站时间。 打开“查询1”的设计视图,在空白处点鼠 标右键,
5、单击“SQL视图”: 直接在里面修改SQL查询语句为: 保存修改退出查询设计视图,双击保存修改退出查询设计视图,双击“查询查询1”, 结果如下:结果如下: 改进:改进: 共有共有20条记录。条记录。 这个结果基本上这个结果基本上 都可作为换乘方都可作为换乘方 案。案。 三、查询三、查询准则准则 如果只是简单地查找某个字段为特定值的记录,只要在该字段对应 的“条件”栏中输入该值即可;如果不仅是查找某个特定值,在准则 中可以使用表达式。在表达式中可通过操作符设置查询范围 某同学想乘坐高铁或动车出行,他还希望乘坐7:008:00的火车出 发,只需在查询表达式中追加条件: WHERE (厦门至武汉车次
6、.车次编号 LIKE G% OR 厦门至武汉车次.车次编号 LIKE D*) AND (厦门至武汉车次.出发时间 BETWEEN #7:00# AND #8:00#); 查询执行结果如下:查询执行结果如下: 数据库的建立、使用和维护等工作仅靠数据库管理系统还远数据库的建立、使用和维护等工作仅靠数据库管理系统还远 远不够,还要有专门的人员来完成,这些人被称为数据库管远不够,还要有专门的人员来完成,这些人被称为数据库管 理员。数据库管理员通过数据库管理系统可以对数据库进行理员。数据库管理员通过数据库管理系统可以对数据库进行 操作和维护。但对于广大普通用户来说,很难像专业的数据操作和维护。但对于广大
7、普通用户来说,很难像专业的数据 库管理员那样操作数据库,而具有良好交互性的数据库应用库管理员那样操作数据库,而具有良好交互性的数据库应用 系统可以满足人们简单、方便地使用数据的需求。系统可以满足人们简单、方便地使用数据的需求。 四、数据库系统四、数据库系统 数据库系统是由数据库、数据库管理系统(及其应用开发工具)、数据库、数据库管理系统(及其应用开发工具)、 数据库应用系统、数据库管理员和用户数据库应用系统、数据库管理员和用户组成的存储、管理、处理和 维护数据的系统。数据库主要用于存储数据,需要足够大的内存储 器和外存储器等硬件平台的支持。软件部分除了操作系统和数据库 管理系统外, 还包括支持
8、特定应用环境开发的软件工具以及开发完 成的数据库应用系统。12306网站是一个大型数据库应用系统,其 他如各类财务管理系统、人事管理系统、图书管理系统等软件也都 是数据库应用系统。 练一练练一练: 请在“体验个性化出行”查询基础上,增加一列,显示旅行 总票价。效果如下: 【附】查询表达式如下: SELECT 厦门至武汉车次.*, 武汉至成都车次.*, 厦门至武汉车次.最低票价+武 汉至成都车次.最低票价 AS 总票价 FROM 厦门至武汉车次 INNER JOIN 武汉至成都车次 ON 厦门至武汉车次.到 达时间+0.05武汉至成都车次.出发时间 WHERE (厦门至武汉车次.车次编号 Lik
9、e G% Or 厦门至武汉车次.车次编号 Like D*) And (厦门至武汉车次.出发时间 Between #7:00# And #8:00#); 五、设计系统五、设计系统数据库数据库 阅读阅读第第73页页“设计设计 “旅行小助手系统旅行小助手系统”之之“活动活动1 设计设计 系统功能和应用程序界面系统功能和应用程序界面”,填写,填写下下表。表。 对象类别对象类别对应的功能对应的功能 “成员信息管理成员信息管理”单选钮单选钮单击选中单击选中“成员信息表成员信息表”,并查看其内容,并查看其内容 对象类别对象类别对应的功能对应的功能 “成员信息管理成员信息管理”单选钮单选钮单击选中单击选中“成
10、员信息表成员信息表”,并查看其内容,并查看其内容 “旅行线路管理”单选钮单击选中“旅行线路表”,并查看其内容 “旅行记录管理”单选钮单击选中“旅行记录表”,并查看其内容 “增加”按钮单击在选中的数据表中增加记录 “修改”按钮单击修改选中的数据表中选中的记录 “删除”按钮单击删除选中的数据表中选中的记录 “查询”按钮单击创建查询 “旅行组团”按钮单击创建旅行组团 2、设计系统数据库,了解、设计系统数据库,了解Python 访问访问Access数据库的数据库的步骤步骤 “旅行小助手系统旅行小助手系统”数据库(旅行小助手数据库(旅行小助手.mdb):): 内有内有3个数据表:成员信息表、旅行线路表、
11、旅行记录表个数据表:成员信息表、旅行线路表、旅行记录表 数据库应用系统的设计一般包括系统总体结构设计、代码设计、数据库应用系统的设计一般包括系统总体结构设计、代码设计、 数据库(文件)设计、输入数据库(文件)设计、输入/输出(输出(I/O)设计、模块功能与处)设计、模块功能与处 理过程设计等步骤。理过程设计等步骤。“旅行小助手系统旅行小助手系统”在完成了系统界面设计在完成了系统界面设计 和数据库设计之后,还需要经过编写应用程序、调试等环节才和数据库设计之后,还需要经过编写应用程序、调试等环节才 能成为真正的应用系统。能成为真正的应用系统。 创建了数据库之后,我们可以利用数据库及数据库管理系统创
12、建了数据库之后,我们可以利用数据库及数据库管理系统 对数据进行计算和分析,解决一些简单问题。但如果我们想对数据进行计算和分析,解决一些简单问题。但如果我们想 要更高效、更便捷地对数据进行管理和使用,还需要专业人要更高效、更便捷地对数据进行管理和使用,还需要专业人 员用程序设计语言编写应用程序,实现更复杂的自动计算和员用程序设计语言编写应用程序,实现更复杂的自动计算和 分析。数据库应用系统可以提供简单、方便的操作界面,让分析。数据库应用系统可以提供简单、方便的操作界面,让 我们能够利用系统解决更多的问题。我们能够利用系统解决更多的问题。 【做一做】请打开【做一做】请打开 “Python访问访问m
13、db.py”文件,运行程序,文件,运行程序, 观察运行结果;阅读程序代码,体会观察运行结果;阅读程序代码,体会Python访问访问mdb数据数据 库的基本步骤。库的基本步骤。 用Python访问Access数据库一般可 分为5个步骤: (1)建立与数据库的连接 利用win32com.client模块的COM组件访问功能,通过ADODB访问 Access的mdb文件,因此先要安装与Python和操作系统匹配的 pywin32安装包。 import win32com.client conn = win32com.client.Dispatch(rADODB.Connection) #DSN = P
14、ROVIDER = Microsoft.Jet.OLEDB.4.0;DATA SOURCE = 旅行 小助手.mdb #Access2007以前 DSN = PROVIDER = Microsoft.ACE.OLEDB.12.0;DATA SOURCE = 旅行 小助手.mdb #Access2007及以后 conn.Open(DSN) (2)根据需要产生记录集)根据需要产生记录集; rs = win32com.client.Dispatch(rADODB.Recordset) tablename = 旅行线路表 rs.Open( + tablename + , conn, 1, 3) (3)
15、访问记录集,处理数据;)访问记录集,处理数据; #rs.MoveFirst() #光标移到首条记录 while not rs.EOF: for i in range(rs.Fields.Count): print(rs.Fieldsi.Name, :, rs.Fieldsi.Value) #字段名: 字段内容 print(end=n) rs.MoveNext() #光标移到下条记录 print(该表有+str(rs.Fields.Count)+个字段) print(该表有+str(rs.RecordCount)+条记录) (4)根据需要把处理好的数据更新到数据库中;)根据需要把处理好的数据更新到数据库中; (5)断开与数据库的连接)断开与数据库的连接。conn.Close() 练一练练一练 打开打开 “旅行小助手系统旅行小助手系统.py”文件,运行程序,观察运行结文件,运行程序,观察运行结 果;阅读程序代码,体会程序功能:查看数据表、增加记录、果;阅读程序代码,体会程序功能:查看数据表、增加记录、 修改记录、删除记录;尝试能否开发实现其他功能。(教师修改记录、删除记录;尝试能否开发实现其他功能。(教师 下发程序,有兴趣的同学去做)下发程序,有兴趣的同学去做) (提示:需要先下载并运行(提示:需要先下载并运行Pywin32安装包。)安装包。) 再见!再见!