师:大家好,今天我们共同探讨高中信息技术,广东教育出版社高一年级必修第五章第三节剖析数据库。论语有云:“有朋自远方来,不亦乐乎。”当向好友介绍家乡时,免不了推荐当地特色美食。餐厅里,我们能拿到纸质菜单方便点餐,点餐完毕后,服务员会给我们一张点餐单,方便核对菜品。现在不少餐厅还提供 Pad 点餐,甚至能用自己手机自助点餐。那手机点餐和使用纸质菜单有什么区别呢?下面我们一起来看看如何使用手机点餐。
首先扫描餐台二维码,进入点餐系统后选择就餐人数,这时就可以添加心仪菜品。系统还能选择菜品规格和口味,选好菜品后再次核对已点菜品,这里也可设置菜品口味或备注,核对无误后确认下单,输入手机号和验证码即可下单成功。
菜单中的这些菜品如何存储到 Pad 和手机内呢?手机又是如何把这些点餐信息保存下来的呢?这就涉及到我们马上要学习的数据库知识。要解决刚才的问题,首先要对菜单和点餐单这两个研究对象进行分析,从菜单和点餐单中我们能获得哪些信息呢?请同学们思考一下。
从菜单研究对象中,我们可获取菜品名称、分类、价格、图片等信息。从点餐单中,我们能收集到顾客桌号、人数、顾客点菜的菜品名称及份数、价格,还能知道点餐时间、有无忌口等特殊需求。我们利用生活经验对实际问题进行需求分析,将现实世界中计算机不能直接处理的事物信息化,进而转化成计算机能够处理的数据。
对收集到的菜单和点餐单信息简单分析后,能发现餐厅里的菜单是固定的,每位顾客看到的都一样,这体现了第一章学习的信息共享性,共享也是数据库管理信息资源的优势之一。根据经验,不同顾客的点餐单很少完全一样。另外,点餐单中有很多重复性数据,比如存储点餐单菜品信息时,除了菜品名称和份数,还会存储顾客桌号、人数和点餐时间,这些通常是一样的,这就是重复数据。而且所有顾客点餐单中的菜品价格在菜单中都能查到,这也是数据重复。
数据的重复即数据库中的数据冗余,会极大浪费计算机存储资源,所以我们重新确定研究对象,把点餐单中的顾客研究对象和点餐研究对象独立出来分别研究。在数据库分析中,我们把菜单和顾客这样具体的研究对象称为实体,把点餐称为它们之间的联系。大家思考一下,菜单、点餐和顾客有哪些特征呢?也就是说我们需要存储哪些信息到计算机中呢?
实体菜单需存储的信息有菜品名称、价格、分类、图片等。顾客需存储的信息有桌号、人数以及是否结账等。点餐研究对象需存储的信息则有点餐桌号、菜品及份数、点餐时间以及是否完成等。这些存储的信息是实体或联系各自具有的特征,我们称之为属性。为方便整理和理解实体、联系和它们属性之间的关系,我们可设计概念模型帮助描述。设计概念模型时,一般习惯用矩形表示实体,用菱形表示联系,用椭圆形表示属性。那么菜单实体的概念模型如何设计呢?
根据刚才分析,菜单具有菜名、分类、价格及图片等属性。我们可通过菜名属性将菜单中所有菜品区分开来,所以把菜名这种在研究对象中能把当前对象和其他对象区分开的一个或多个属性称之为主属性,一般用下划线表示。下面请同学们来设计顾客和点餐对象的概念模型。
老师设计的顾客和点餐的概念模型是这样的,顾客具有的属性是桌号、人数以及是否结账。其中很明显主属性可设置为桌号。点餐具有的属性有菜名、份数、桌号、点餐时间以及是否完成。但在点餐的概念模型中,很难选一个属性作为主属性确保数据唯一性。比如选桌号作为主属性,每个顾客点餐信息很多,不能保证数据唯一性;用菜品作为主属性,同一道菜可能被不同顾客选择,同一个顾客也可能多次点同一道菜。所以这里我们需联合桌号、菜名、点餐时间共同作为点餐的主属性。
到这里同学们会发现我们设计的这三个模型还是相互独立的,下一步就需将顾客、点餐和菜单关联起来。仔细观察菜单和点餐信息后,会发现它们有一个共同属性叫菜名。点餐信息中的菜名,可在菜单中查到相应分类、价格、图片等信息。所以菜名可作为菜单和点餐的关系属性。
同样,我们能找到顾客和点餐之间的关系,它们有一个共同属性是桌号,这样我们通过分析特征之间的关系,将菜单、点餐和顾客关联起来,共同构成了点餐数据库的实体联系模型,也称为 E - R 模型。确定好信息特征之间的关系后,就需选择合适软件存储数据库。现在可能有同学想到以前学的表格加工工具 Excel,可将这些信息存储起来,但很难建立起联系,所以我们需要专门的数据库管理软件。常见的数据库管理系统有 Oracle、MySQL 和 SQL Server,以及 Access、OceanBase 等等。前三款软件常年占据数据库排行榜前三名。OceanBase 是由淘宝开发完成的,大家能在双 11 畅快购物,多亏它的助力。而 Access 作为微软办公软件之一,和之前学的 Word、Excel、PowerPoint 的操作有很多类似之处,所以今天借助 Access 帮助我们创建点餐数据库。
一般创建数据库时,我们要把每个研究对象都建立一张数据表来存储信息。这里以实体菜单研究对象为例,看看实体的概念模型和数据表之间有什么关系。我们通常以研究对象名称作为数据表名称,研究对象的属性写在数据表列标位置,在数据库中称之为字段。
向数据表中增加一条信息,其实就是在数据表中增加了一条记录。一个数据表可能有很多条记录,将这些记录区分开来的主属性,在数据库中称为主键。下面我们一起来观看微课,使用 Access 建立数据库,了解并熟悉使用 Access 建立数据库的一般过程。
在桌面上双击左键打开微软 Access,单击文件菜单新建选项,这里我们新建空数据库,将文件保存在指定位置并命名。下面开始创建数据表,在设计视图中点击新建按钮,选择设计视图,系统会提示我们输入字段名称及数据类型。通过刚才分析,字段就是对象的属性,现在建立的是菜单数据表,字段有菜名,数据类型是文本类型。菜品的分类数据类型也是文本类型。价格数据类型,我们可设置为数字型或者货币型。菜品图片一般保存在系统中,所以图片可设置为 Ole 对象类型或者超链接类型。
字段设置好后一般还会要求设置一个主键,主键标识着实体的唯一性,菜单数据表的主键是菜名,点击菜名字段,单击工具栏中的主键按钮,这时会发现前面多了一个钥匙形状,这就标志着主键设置好了。单击保存按钮,设置数据表名称为菜单,单击确定关闭数据表设计视图。这时就能看到刚才设置的菜单数据表了,用户若想向菜单数据表中添加数据,可双击打开菜单数据表。能发现字段名称在表的列标位置,依次添加信息即可,例如菜名添加“酸辣土豆丝”,分类写“炒菜”,价格输入相应价格,图片选择相应图片链接复制进去,这样就输入了一条关于酸辣土豆丝的信息,即向菜单数据表中添加了一条记录,可用相同方式添加其他菜品。
添加好这些菜品后,可在数据表视图的状态栏中看到当前光标在第几条记录,例如“干煸花菜”是第 8 条记录,数据表中一共有 19 条记录,也就是说菜单数据表中有 19 道菜品。可用同样方式创建点餐数据表和顾客数据表。例如在点餐数据表中,通过之前分析,点餐数据表由桌号、菜名以及点菜时间共同构成主键。多个字段构成的主键如何设置呢?我们可先选中这些字段,然后点击主键按钮即可。
