999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MySQL數(shù)據(jù)庫課程教學難點教學分析
——以數(shù)據(jù)庫設計為例

2017-12-05 03:37:15李德勝
長春大學學報 2017年10期
關鍵詞:引擎設置數(shù)據(jù)庫

李德勝

(安徽科技學院 信息與網(wǎng)絡工程學院,安徽 鳳陽 233100)

MySQL數(shù)據(jù)庫課程教學難點教學分析
——以數(shù)據(jù)庫設計為例

李德勝

(安徽科技學院 信息與網(wǎng)絡工程學院,安徽 鳳陽 233100)

近年來,由于MySQL的體積小、功能全和免費的特點,加上PHP+MySQL的Web開發(fā)架構(gòu)的興起,MySQL已經(jīng)成為了計算機、軟件工程等專業(yè)中承接“數(shù)據(jù)庫系統(tǒng)原理”和“PHP Web開發(fā)”的重要專業(yè)課程之一。然而,作為一門新興的專業(yè)課程,其課程、教材、資源、教學研究都還不夠充分。尤其是課程中學生容易混淆的一些教學難點,不僅使學生感到嚴重的挫敗感,而且影響了后續(xù)數(shù)據(jù)庫的進一步應用。本文結(jié)合Web開發(fā)應用,對MySQL中的一些教學難點進行分析,并提出一些教學實踐改革方法,擬形成一些最佳實踐的教學方法。

存儲引擎;環(huán)境配置;范式;數(shù)據(jù)庫設計;字符集;校對規(guī)則

MySQL是一款優(yōu)秀的DBMS軟件,是目前事實上的小型關系型數(shù)據(jù)庫范例之一。與其他關系型數(shù)據(jù)庫(Oracle、DB2、SQLServer、SQLite等)相比,它具有體積小、功能全、查詢快捷、完全免費等特點,加上目前廣泛流行的PHP+SQL Web開發(fā)架構(gòu),使得MySQL數(shù)據(jù)庫課程[1]逐漸走向了計算機科學與技術(shù)、網(wǎng)絡工程等專業(yè)的課堂,成為了承接“數(shù)據(jù)庫系統(tǒng)原理”[2]和“PHP Web開發(fā)”[3]的重要專業(yè)課程。

然而,作為一門新興的專業(yè)課程,其課程、教材、資源、教學研究都還不夠充分,尤其是課程中學生容易混淆的一些難點,不僅使學生感到嚴重的挫敗感,而且影響了后續(xù)數(shù)據(jù)庫的進一步應用和后續(xù)Web開發(fā)課程的教學。

下面就MySQL數(shù)據(jù)庫課程教學難點展開分析,并提出相關對策。

1 MySQL服務器環(huán)境配置

MySQL的配置相對于其他工具來說并不算特別復雜,但是對于剛剛接觸它的同學來說,也是一個比較繁瑣的事情,而且容易導致數(shù)據(jù)庫服務啟動失敗。它的配置涉及到安裝版和復制版,普通版和服務器版等不同版本,其主要配置文件是mysql.ini(Linux系統(tǒng)下是mysql.cnf),分為兩塊:客戶端區(qū)配置和服務器區(qū)配置。當mysql服務器啟動時會讀取該文件來設置相關的運行參數(shù)。

在PHP+MySQL的Web開發(fā)體系架構(gòu)中,MySQL對于性能的影響所占比例最大。MySQL的設置是否合理正確和最優(yōu)化,直接影響到Web應用的運行狀態(tài)、速度和吞吐量。另一方面,MySQL也是優(yōu)化難度最大的一個部分,不僅需要深入理解MySQL的原理,同時一定的經(jīng)驗判斷,才能夠設置好合理的參數(shù)。

在實際的教學過程中,對于初次接觸MySQL的學生來說,這部分內(nèi)容不僅失敗率高,影響學生的自信心,而且會拖延教學實踐的進度。因此,我們在實際的教學過程中采用了PhpStudy集成環(huán)境,它很好地集成了MySQL、PHP、Apache、IIS、Nginx,是真正的一站式開發(fā)環(huán)境。其中,關于MySQL,不僅包括了強大的客戶端工具,基于桌面的MySQL-Front與基于Web的phpMyAdmin,而且提供了MySQL配置工具(如圖1所示),可以輕松設置密碼、執(zhí)行MySQL命令、備份還原數(shù)據(jù)庫和設置參數(shù)值。

圖1 PhpStudy集成環(huán)境中的MySQL工具

2 區(qū)分數(shù)據(jù)存儲引擎

MySQL的優(yōu)點之一就在于可以根據(jù)需要選擇多種存儲引擎,它支持MyISAM、InnoDB、HEAP、BOB、ARCHIVE、CSV等多種存儲引擎。其中在Web 應用開發(fā)中最常用的就是MyISAM和InnoDB兩種引擎。MyISAM引擎下的數(shù)據(jù)表的優(yōu)點是存取速度快、技術(shù)成熟、穩(wěn)定和方便管理,缺點是而容易造成碎片,事務支持差。而InnoDB的優(yōu)點是功能豐富、事務支持好、安全性高,缺點是讀寫速度稍慢、空間占用大。

基于這些特點,對于大多數(shù)學生來講,該如何選擇這兩種引擎,成為了教學中的一個難點。在實際教學中,應該讓學生掌握選擇的原則和參考標準。具體選擇的原則可以從范式約束、時空、事務和鎖、并發(fā)性、安全性和可移植性等方面考慮。一般來說,從可以方便移植、節(jié)約空間和時間的方式來講,并且不涉及多表的外鍵操作或事務處理,就應該選擇MyISAM類型。例如,在線文檔、網(wǎng)址收藏等Web應用,就比較適合MyISAM類型;反之,如果需要使用事務,或者需要更高的安全性,或者允許多用戶并發(fā)操作表的數(shù)據(jù),就應該首選InnoDB類型。例如,轉(zhuǎn)賬付款、在線購物、在線抓取等Web應用,就比較適合InnoDB類型。特別是在多用戶操作數(shù)據(jù)表的時候,InnoDB采用的是數(shù)據(jù)行鎖定方式,而非MyISAM采用的數(shù)據(jù)表鎖定方式。因此,在事務處理中,只要不是正在被事務處理的數(shù)據(jù)行,其他用戶仍然可以訪問數(shù)據(jù)表。然而,InnoDB在表空間管理、全文索引、商業(yè)許可等方面都有明顯的劣勢。除此之外,大多數(shù)虛擬主機、云主機提供商只允許使用MyISAM類型模式,因此也成為了Web應用中選擇表存儲類型和可移植性的一個重要因素。

因此,雖然InnoDB是MyISAM引擎的更新?lián)Q代產(chǎn)品,但是在大多數(shù)情況下,還是應該首選MyISAM類型。當然,也應該讓學生了解,兩種引擎在一定條件下也能共存,即MyISAM數(shù)據(jù)表和InnoDB數(shù)據(jù)表存在同一數(shù)據(jù)庫中。這樣數(shù)據(jù)庫設計者可以根據(jù)每個表的具體內(nèi)容和用途來分別選擇數(shù)據(jù)表的類型。

最后,需要告知學生的是,具體的運行速度收到系統(tǒng)硬軟件配置(尤其是內(nèi)存容量)、配置文件和應用程序代碼等影響,不能簡單判定哪種引擎更快,需要進行測試和模擬后再做出選擇。

3 范式與數(shù)據(jù)庫設計

雖然在學習MySQL數(shù)據(jù)庫課程前,學生已經(jīng)先修了“數(shù)據(jù)庫系統(tǒng)原理”的課程,但往往是事先已經(jīng)設計好數(shù)據(jù)庫,再進行操作,或者對于實際的數(shù)據(jù)庫設計缺乏經(jīng)驗。因此,對于實際應用中的數(shù)據(jù)庫結(jié)構(gòu)(也稱為數(shù)據(jù)庫模式scheme)尤其不能隨意為之。

數(shù)據(jù)庫設計首先面臨的問題就是范式的選擇,即規(guī)范化normalization的過程,它可以小心地消除冗余以及解決數(shù)據(jù)庫完整性的問題。規(guī)范化是由IBM研究員EF Codd博士提出并創(chuàng)建的一系列范式規(guī)則。滿足這些范式的數(shù)據(jù)庫不會發(fā)生插入、刪除和更新操作異常。對于大多數(shù)數(shù)據(jù)庫設計來說,1NF、2NF、3NF、BCNF這幾種范式已經(jīng)能夠滿足要求。

然而,雖然范式理念十分強大,但實際的數(shù)據(jù)庫(尤其是Web應用中)設計中,需要考慮更多的因素,例如速度、冗余或不一致、程序難易等。有的時候,將數(shù)據(jù)結(jié)構(gòu)優(yōu)化為最高存儲效率卻在操作編程上是不可取的。因此,范式在某種意義上更像是一種指導性意見,而不是根本原則。在實際的設計中,有時需要在范式和實際效率之前取得某種平衡。

在指導學生進行規(guī)范化設計時,應該讓學生充分進行需求分析和總體設計,找出需要訪問的具體信息和之間的邏輯關系。并提倡學生用筆和紙進行設計,開始時盡量不要使用工具軟件進行分析。甚至在筆者教學實踐中,實體-關系圖也有時會干擾學生的建模。因此,比較好的方式是最開始使用自然語言描述,再用集合映射圖表示對應關系,這樣做更加簡潔明了和容易排錯。

為了使學生掌握實際的表設計原則和方法,下面用一個具體的教學案例進行講解和分析。

課堂上,可以用一個BBS教學互動平臺的案例對學生進行教學,因為學生對這樣的應用比較熟悉,這樣學生容易產(chǎn)生代入感,有利于加深他們對內(nèi)容的理解。

首先,將所有信息放在一個表中,進行預先評估。數(shù)據(jù)存放在數(shù)據(jù)庫的一個表中:

userID, username, email, qq, tel, addr, jobID, jobtitle, jobcontent, replyID, replytitle, replycontent

根據(jù)定義,數(shù)據(jù)庫表符合第一范式,但是不滿足其他范式。因此,可以將數(shù)據(jù)庫表進一步分解為范化形式:

(1)userinfo:userID, username, email, qq, tel, addr.

(2)jobinfo:jobID, jobtitle, jobcontent.

(3)replyinfo:replyID, replytitle, replycontent.

(4)userjobinfo:userID, jobID.

(5)jobreplyinfo:jobID, replyID.

可以證明該設計是滿足第1、2、3、BCNF范式要求的。但是,在實際的Web工程中,卻存在冗余大、涉及表數(shù)量多、編程復雜的缺點。因此,還需要重新設計和化簡。

圖2 userinfo, userjobinfo, jobinfo對應關系集合映射與合并操作

觀察數(shù)據(jù)庫結(jié)構(gòu),發(fā)現(xiàn)在數(shù)據(jù)庫表中存在一對多關系這種較特殊的情況下,如圖2所示,userinfo和userjobinfo之間是一對多的關系,而userjobinfo和jobinfo是一一對應的關系。對于這種情況,我們可以進行數(shù)據(jù)表的合并而忽略第二范式原則的要求。因此,可以將一一對應的兩個表userjobinfo和jobinfo合并為新的表newjobinfo。同理,也可以將jobreplyinfo和replyinfo合并為新的表newreplyinfo。這樣可以一定量地減少數(shù)據(jù)冗余和簡化表的操作,新的設計為:

(1) userinfo:userID, username, email, qq, tel, addr

(2) newjobinfo:userID,jobID,jobtitle, jobcontent

(3) newreplyinfo:jobID,replyID, replytitle, replycontent

該方法并沒有使用實體-關系圖,而是使用數(shù)學中的集合映射來對學生進行講解,會使學生了解到,數(shù)據(jù)庫理論的核心——關系代數(shù)實質(zhì)就是集合論。這種教學方法的另一個好處是,通過這個例子說明數(shù)據(jù)庫的結(jié)構(gòu)設計不是一成不變的,有的時候也可以進行動態(tài)演化,即開始設計為三大范式,而后面再進行合并操作簡化表結(jié)構(gòu)。

4 徹底弄清楚字符集、編碼和校對

在給學生講解這部分內(nèi)容時,一些相近的概念很容易混淆。所以首先必須徹底講解和分清字符集、編碼和校對的概念。

理論上講,字符集是語言所使用的符號;而編碼是將字符集從整數(shù)映射到字節(jié)的方法;校對規(guī)則是定義了比較字符串的方式。因此,這三個概念應該是嚴格區(qū)分的,但是由于學生對該知識點的空白,加上很多互聯(lián)網(wǎng)資源都使用字符集來表示代碼,可以當作同義詞使用。這些都會給學生造成混淆。

對于如何選擇字符集和校對規(guī)則,也需要對學生講解清楚。

首先,選擇目標字符集的時候,一定要選擇源字符集的超級,例如,選擇GBK 字符集而不是GB2312 字符集。GBK編碼是定長編碼,雙字節(jié)編碼,支持的系統(tǒng)多;而UTF-8編碼不是定長編碼,長度也在1 至4 字節(jié),但卻是互聯(lián)網(wǎng)廣泛支持的Unicode 字符集。基于這些特點,MySQL Server 也使用UTF-8作為內(nèi)部本土編碼方式。實際Web開發(fā)中的最佳實現(xiàn)是在GBK和UTF-8中選擇一種適合自己網(wǎng)站特點的字符集。

然后,對于MySQL 中的字符集和校對規(guī)則,學生對于各種級別的設置往往會迷惑,這就需要教師不僅僅講授如何設置它們,更要講授這些設置發(fā)揮作用的時機和影響。另外,除了數(shù)據(jù)保存的字符集和校對規(guī)則,還存在客戶端和服務器之間交互的字符集和校對規(guī)則的設置。一般要求這連接級涉及的所有的字符集都完全一致,才可以確保用戶寫入的數(shù)據(jù)可以正確地讀出,尤其是對于中文字符。最后要對學生說明,這些設置都可以通過命令SET NAMES和修改mysql.ini文件兩種方法來靈活設置。

最后,對于這部分的內(nèi)容,最好舉反例來說明,錯誤的設置方法將會是應用中出現(xiàn)亂碼和丟失數(shù)據(jù)的根源。而當實際的Web應用中出現(xiàn)亂碼時候,除了檢查HTTP和HTML協(xié)議文本中的相關頭部外,還應該對MySQL中的字符集和校對規(guī)則設置進行排查。

5 小結(jié)

本文以MySQL應用中的數(shù)據(jù)庫設計階段為出發(fā)點,結(jié)合實際的Web應用對數(shù)據(jù)庫的要求,對MySQL教學中的若干教學難點進行了梳理,并形成了指導學生最佳實踐的教學內(nèi)容和教學方法,以期消除學生的疑惑和不確定性,進一步提升學生的成就感和學習樂趣,并在實際的教學中收到了良好的效果。

[1] 王晶晶.mysql數(shù)據(jù)庫基礎教程[M].長春:吉林大學出版社,2015: 6-10.

[2] 李建中,王珊.數(shù)據(jù)庫系統(tǒng)原理[M].北京:電子工業(yè)出版社,2008: 17-20.

[3] 劉乃琦,李忠.PHP和MySQL Web應用開發(fā)[M].北京:人民郵電出版社,2015: 35-38.

責任編輯:劉 琳

AnalysisofTeachingDifficultiesinMySQLDatabaseCourse—TakingDatabaseDesignasanExample

LI Desheng

(College of Information and Network Engineering, Anhui Science and Technology University, Fengyang 233100, China)

In recent years, with the rising of Web development framework of PHP + MySQL, MySQL with the features of small size, complete function and free of charge has become one of the important professional courses linking toDatabaseSystemPrincipleandPHPWebDevelopmentcourses in computer and software engineering majors. However, as a new professional course, its curriculum, materials, resources and teaching research are not enough. Especially, some of the teaching difficulties in the course not only make students confused, but also affects the further application of the subsequent database. This paper, combined with the development and application of Web, analyzes some difficulties in MySQL teaching, and puts forward some teaching practice reform methods, hoping to form best practice teaching methods.

storage engine; environment configuration; paradigm; database design; character set; proofreading rules

2017-01-16

安徽省重大教學改革研究項目(2015zdjy121)

李德勝(1979-),男,湖北宜昌人,副教授,博士,主要從事信息與網(wǎng)絡工程方面研究。

G642

A

1009-3907(2017)10-0113-04

猜你喜歡
引擎設置數(shù)據(jù)庫
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
數(shù)據(jù)庫
財經(jīng)(2016年15期)2016-06-03 07:38:02
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
本刊欄目設置說明
中俄臨床醫(yī)學專業(yè)課程設置的比較與思考
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發(fā)
主站蜘蛛池模板: AV色爱天堂网| 中文字幕一区二区视频| 在线免费观看AV| 免费国产好深啊好涨好硬视频| 国产成人8x视频一区二区| 亚洲综合激情另类专区| 97久久超碰极品视觉盛宴| 国产在线麻豆波多野结衣| 国产偷倩视频| 亚洲美女视频一区| 一级毛片视频免费| 亚洲日韩图片专区第1页| 午夜日韩久久影院| 欧美日韩综合网| 色偷偷综合网| 亚洲黄网视频| 国产成人精品免费视频大全五级| 中文字幕调教一区二区视频| 伊人国产无码高清视频| 亚洲V日韩V无码一区二区| 国产精品女同一区三区五区| 精品伊人久久久久7777人| 午夜在线不卡| 97精品国产高清久久久久蜜芽| 91精品国产91久无码网站| 精品人妻一区二区三区蜜桃AⅤ| 色综合中文| 国产中文一区a级毛片视频| 日本道综合一本久久久88| 亚洲国产综合精品中文第一| 免费三A级毛片视频| 91九色国产在线| 亚洲综合二区| 欧美啪啪精品| 日韩在线观看网站| 亚洲男人在线| 日韩国产无码一区| 国产日韩精品欧美一区灰| 久久这里只有精品免费| 国产情侣一区| 色欲色欲久久综合网| 狠狠v日韩v欧美v| a级毛片免费看| 九九热在线视频| 日韩欧美高清视频| 毛片在线播放a| 东京热高清无码精品| 奇米精品一区二区三区在线观看| 国产大片黄在线观看| 午夜影院a级片| 福利国产微拍广场一区视频在线| 亚洲中久无码永久在线观看软件 | 爱色欧美亚洲综合图区| 国产a v无码专区亚洲av| 中文字幕 91| 在线国产欧美| 欧美午夜一区| 日本精品视频一区二区 | 国产呦精品一区二区三区下载 | jizz国产视频| 人人91人人澡人人妻人人爽| 国产91色在线| 精品国产91爱| 亚洲区欧美区| 丁香婷婷久久| 日韩在线中文| 国产va视频| 99精品视频播放| 素人激情视频福利| 国产女人在线| 成人福利一区二区视频在线| 久久99国产视频| 色婷婷久久| 国产男女XX00免费观看| 不卡网亚洲无码| 99资源在线| 精品人妻一区无码视频| 免费看黄片一区二区三区| 99在线观看精品视频| 国产成人av大片在线播放| 亚洲bt欧美bt精品| 亚洲欧美另类专区|