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