楊冬梅
(河南信息統(tǒng)計職業(yè)學院,河南 鄭州 450008)
當學習數(shù)據(jù)庫相關課程時,一些學生因種種原因,對一些抽象性數(shù)據(jù)庫知識的認知不清晰,將會影響后續(xù)的課程學習,嚴重者影響學習數(shù)據(jù)庫的積極性。為更好地化解數(shù)據(jù)庫課程知識點理解難題,我們將與數(shù)據(jù)庫相關的課程知識點進行簡潔化處理與分類,以便學生能夠從中抓住問題的本質(zhì),厘清相互關系,為提升數(shù)據(jù)庫教學效果創(chuàng)造有利條件。
在一般課程知識點教學中,先了解知識點的理論內(nèi)涵,再由理論知識點轉(zhuǎn)向應用研究。如在化學課程、物理課程中,都是從概念中來探析其應用的。不過,在計算機類學科知識領域,特別是數(shù)據(jù)庫課程,與化學、物理學科具有較大不同。化學、物理等自然學科概念,多是從自然規(guī)律的歸納和總結(jié)中得出,具有抽象性;而對于數(shù)據(jù)庫等軟科學知識,這些概念多是由人為設定的。也就是說,對于數(shù)據(jù)庫等學科知識點,其理論是源于軟件工程實際問題,并逐漸形成抽象的概念。因此,這些知識點相較于化學、物理概念更抽象,不易看懂,特別是在初學時,如果未能深入了解,對其概念的來龍去脈則難以洞曉。如在數(shù)據(jù)庫知識點中,數(shù)據(jù)關系的笛卡爾乘積運算,函數(shù)依賴集的屬性子集閉包,第四范式、第五范式等。這些知識點在教材中的出現(xiàn),很多學生難以理解,更別提掌握和運用了。所以說,在學習數(shù)據(jù)庫課程過程中,我們可以將相關的理論知識,通過工程應用案例等方式進行簡化呈現(xiàn),強化理論知識與工程實際的關聯(lián)度,讓學生能夠從中了解理論知識的內(nèi)涵、概念,把握好數(shù)據(jù)庫工程中的知識難點。由此,面對數(shù)據(jù)庫課程中不同理論知識的簡化處理與表征,應該如何呈現(xiàn)?以關系數(shù)據(jù)庫中的笛卡爾乘積運算為例,該知識點主要是為了表征兩個數(shù)據(jù)庫表之間的某種聯(lián)接運算,在外在顯示方式上突出兩個數(shù)據(jù)表中不同記錄信息的橫向組合,以滿足實際軟件工程需要。以具體數(shù)據(jù)庫案例來分析,當某數(shù)據(jù)庫中的學生數(shù)據(jù)表包含姓名、學號兩列字段,而選課表中有學號、課程、成績3列字段。當需要呈現(xiàn)數(shù)據(jù)庫中學生成績表,且滿足姓名、學號、課程、成績4個字段要求時,就需要對學生表和選課表進行聯(lián)接運算處理,來生成所需要的數(shù)據(jù)表。可見,對于笛卡爾乘積運算概念的理解,就可以表征為兩個數(shù)據(jù)表之間所有可能的字段組合方式[1]。
研究數(shù)據(jù)庫課程知識的簡化表征,就需要聯(lián)系數(shù)據(jù)庫工程管理實際,圍繞數(shù)據(jù)庫操作與管理來探析相關問題。我們從數(shù)據(jù)庫結(jié)構(gòu)中來看,用戶通過應用程序來訪問數(shù)據(jù)庫,而數(shù)據(jù)在數(shù)據(jù)庫中的存儲方式,又與數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)有直接關系。簡言之,對于數(shù)據(jù)庫中的數(shù)據(jù),主要有五大類:數(shù)據(jù)正確性;數(shù)據(jù)完整性;數(shù)據(jù)操作簡單性;數(shù)據(jù)安全性;數(shù)據(jù)處理性能。這些數(shù)據(jù)本身,在正確性條件下,又分為無故障數(shù)據(jù)正確性和有故障數(shù)據(jù)正確性。我們以數(shù)據(jù)的正確性為例,對于無故障數(shù)據(jù)正確性,就是確保數(shù)據(jù)庫中的數(shù)據(jù)保持良好一致性。但對于數(shù)據(jù)庫本身,并非單純的一個表,而是很多類數(shù)據(jù)表的集合。在數(shù)據(jù)庫的使用和管理中,如果用戶對數(shù)據(jù)庫中的某一表進行修改,與之關聯(lián)的其他數(shù)據(jù)表中的相關數(shù)據(jù)也應該進行一致性修改,否則將會導致數(shù)據(jù)表的不一致。這些問題的出現(xiàn),將會給數(shù)據(jù)庫帶來錯誤。如果我們強調(diào)對所有數(shù)據(jù)表進行原樣存儲,則會帶來更多的數(shù)據(jù)冗余問題。因此,從數(shù)據(jù)庫管理效率來看,必須采用合理化組織,優(yōu)化數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu)與關系。不過,即便是在優(yōu)化處理條件下,也可能帶來數(shù)據(jù)庫表單數(shù)據(jù)的不一致性。比如當系統(tǒng)出現(xiàn)某些故障,停電、地震等其他災難性破壞,都可能對數(shù)據(jù)庫帶來影響,引發(fā)各類數(shù)據(jù)錯誤或數(shù)據(jù)丟失。
同時,考慮到數(shù)據(jù)庫管理的正確性,要在數(shù)據(jù)庫存儲與管理上,依照數(shù)據(jù)庫實體與關系來細化數(shù)據(jù)表,確保數(shù)據(jù)表能夠與實際業(yè)務保持一致。不過,對于數(shù)據(jù)庫的使用和管理,還要突出操作的簡單性。也就是說,從數(shù)據(jù)表的生成與使用上,要能夠提升數(shù)據(jù)庫的運算、執(zhí)行效率。另外,對于數(shù)據(jù)庫中的數(shù)據(jù),包括所有用戶的數(shù)據(jù)都要存放在數(shù)據(jù)庫。如對于某一用戶在登錄數(shù)據(jù)庫時,需要通過身份驗證,成功后調(diào)取其訪問權(quán)限,對其權(quán)限內(nèi)的數(shù)據(jù)庫進行操作,只有這樣才能保障數(shù)據(jù)庫的安全性。數(shù)據(jù)庫中的數(shù)據(jù),除了正確性、安全性、操作簡單性外,還要完整性。對于正確性,可以通過數(shù)據(jù)庫的實體與關系模式來進行分類存儲;對于數(shù)據(jù)庫中的實體表、事件表,也要進行分類存儲。考慮到不同數(shù)據(jù)對象之間的關系,還需要數(shù)據(jù)表與數(shù)據(jù)表之間的聯(lián)接關系上來組合用戶的數(shù)據(jù)業(yè)務表。可見,對于數(shù)據(jù)庫管理及數(shù)據(jù)庫課程而言,其所對應的數(shù)據(jù)知識概念更趨多樣性,面對不同的數(shù)據(jù)類型及存儲管理要求,如果無法滿足用戶的訪問請求,或者說對客戶的訪問無法滿足,則影響數(shù)據(jù)庫的管理效率[2]。
通過前面對數(shù)據(jù)庫工程實際問題的分析與梳理,可以將數(shù)據(jù)庫知識中的工程問題進行簡化呈現(xiàn),如不同的概念、法則、相互關系等內(nèi)容。從現(xiàn)有關系數(shù)據(jù)庫知識來看,關系數(shù)據(jù)模型是基礎,也是最核心的內(nèi)容。當然,對于關系數(shù)據(jù)模型,并非能解決所有數(shù)據(jù)庫問題,而是以關系數(shù)據(jù)模型來構(gòu)建解決數(shù)據(jù)庫問題的途徑。如通過對關系數(shù)據(jù)模型的構(gòu)建,來解決無故障時數(shù)據(jù)庫正確性問題。首先,對于數(shù)據(jù)庫故障類型,可以有內(nèi)存數(shù)據(jù)丟失、數(shù)據(jù)庫事務執(zhí)行中斷、數(shù)據(jù)庫磁盤數(shù)據(jù)丟失、數(shù)據(jù)庫整機數(shù)據(jù)丟失等類型,在化解無故障時的數(shù)據(jù)庫正確性時,需要判斷數(shù)據(jù)庫設計的5個范式,來檢驗數(shù)據(jù)庫設計的合理性。當存在故障時,數(shù)據(jù)庫的正確性可以利用故障恢復數(shù)據(jù),而故障恢復采用的是數(shù)據(jù)冗余策略。當數(shù)據(jù)庫在無故障時,如何判斷每項數(shù)據(jù)庫數(shù)據(jù)的操作是否安全、可靠,還要對各項操作記錄到日志中。通過數(shù)據(jù)庫日志記錄,可以對數(shù)據(jù)庫的所有操作進行記錄,但對于日志載體,需要先存放在內(nèi)存中,再由內(nèi)存?zhèn)魉偷饺罩敬疟P,也可以傳送至群體專用磁盤或備份服務器中。
同樣,根據(jù)故障恢復原理,在日志磁盤或日志備用數(shù)據(jù)庫中,并非是同一個物理磁盤,當無故障時,日志磁盤或日志備用服務器只寫不讀,從而保障了日志磁盤的高效性。但對于數(shù)據(jù)庫數(shù)據(jù)的正確性,由于分列于不同的數(shù)據(jù)表,可能會出現(xiàn)與相關業(yè)務數(shù)據(jù)不一致問題。我們在關系數(shù)據(jù)庫中,通常需要設計多個表來完成數(shù)據(jù)庫的聯(lián)接、選擇、投影等操作。但為了強調(diào)數(shù)據(jù)庫使用的直觀性,我們往往利用視圖概念來呈現(xiàn)復雜的數(shù)據(jù)庫數(shù)據(jù)表之間的關系。對于視圖,其內(nèi)涵是展現(xiàn)數(shù)據(jù)庫中不同業(yè)務數(shù)據(jù)表的集合,而不是實體表或事件表。同樣,為了簡化數(shù)據(jù)庫操作語言,我們又引入存儲過程概念。存儲過程概念,將存儲過程進行封裝,利用數(shù)函數(shù)調(diào)用方式來實現(xiàn)對數(shù)據(jù)庫的訪問。如在存儲過程一級,用戶可以直接對數(shù)據(jù)庫中的數(shù)據(jù)進行操作。為了強調(diào)數(shù)據(jù)庫訪問的有效性和直觀性,我們又引入了應用程序概念,應用程序?qū)?shù)據(jù)庫的訪問轉(zhuǎn)換為便于屏幕顯示的視窗,包括鍵盤、鼠標等都可以直接應用。總體而言,從數(shù)據(jù)庫管理上通過對數(shù)據(jù)庫數(shù)據(jù)表、數(shù)據(jù)庫管理系統(tǒng)、視圖、存儲過程、應用程序等簡化處理,來提升數(shù)據(jù)庫的訪問與操作便捷性[3]。
從數(shù)據(jù)庫課程知識結(jié)構(gòu)來看,一些概念的抽象性,導致學生領悟不透,也影響對數(shù)據(jù)庫課程的學習效果。由于數(shù)據(jù)庫自身的復雜性,對于數(shù)據(jù)的存儲與管理,還需要與相關的存儲設備、數(shù)據(jù)特性、訪問特性等有關。當數(shù)據(jù)庫較大時,所用磁盤空間大,對數(shù)據(jù)庫管理的響應時效要求更高。因此,從改善磁盤尋道性能,減少磁盤移動路徑上,對數(shù)據(jù)庫訪問最為頻繁的數(shù)據(jù)放在合理位置,突出訪問時效性,來提升數(shù)據(jù)庫訪問效率。總之,借助于數(shù)據(jù)庫工程來探析數(shù)據(jù)庫知識的簡潔化處理,讓學生能夠從數(shù)據(jù)工程視角來重新審視和理解知識點,了解數(shù)據(jù)庫管理的基本狀況,加深對相關抽象概念的通俗理解。