伊人色婷婷综在合线亚洲,亚洲欧洲免费视频,亚洲午夜视频在线观看,最新国产成人盗摄精品视频,日韩激情视频在线观看,97公开免费视频,成人激情视频在线观看,成人免费淫片视频男直播,青草青草久热精品视频99

關(guān)系數(shù)據(jù)庫模板(10篇)

時間:2023-03-01 16:33:15

導(dǎo)言:作為寫作愛好者,不可錯過為您精心挑選的10篇關(guān)系數(shù)據(jù)庫,它們將為您的寫作提供全新的視角,我們衷心期待您的閱讀,并希望這些內(nèi)容能為您提供靈感和參考。

篇1

前言

從上個世紀(jì)60年代至今的半個世紀(jì),數(shù)據(jù)庫技術(shù)伴隨著信息技術(shù)的發(fā)展不斷發(fā)展,到目前共經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段,在數(shù)據(jù)庫系統(tǒng)階段又經(jīng)歷了網(wǎng)狀數(shù)據(jù)庫、層次數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫階段,進(jìn)二十來年,關(guān)系數(shù)據(jù)被廣泛使用,發(fā)展成主流,但隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,關(guān)系數(shù)據(jù)庫使用遇到了一些新的問題,為應(yīng)對這些新的問題,近兩年來非關(guān)系數(shù)據(jù)庫NOSql越來越引起人們的注視,得到了快速發(fā)展。

1 關(guān)系數(shù)據(jù)庫

1.1 關(guān)系數(shù)據(jù)庫的簡介

支持關(guān)系模型的數(shù)據(jù)庫系成之為關(guān)系數(shù)據(jù)庫,是目前各類數(shù)據(jù)庫中使用最為廣泛的數(shù)據(jù)庫系統(tǒng)。關(guān)系數(shù)據(jù)庫在經(jīng)過二十幾年的發(fā)展,已經(jīng)變的功能強(qiáng)大,使用廣泛,產(chǎn)品成熟的數(shù)據(jù)庫系統(tǒng),現(xiàn)在使用主流的數(shù)據(jù)庫都為關(guān)系型數(shù)據(jù)庫,比較熟悉的如SQL Server、Mysql、Oracle、Sybase、Informix、DB2等。在網(wǎng)絡(luò)上使用比較廣泛的是Sql Server、Mysql和Oracle。

1.2 關(guān)系數(shù)據(jù)庫的特點(diǎn)

關(guān)系數(shù)據(jù)庫是支持關(guān)系模型的數(shù)據(jù)庫系統(tǒng)。而關(guān)系模型是由二維表來表示實(shí)體和實(shí)體間聯(lián)系的模型。使用二維表存儲數(shù)據(jù),對使用者來說很直觀,更容易理解。使用關(guān)系數(shù)據(jù)庫的優(yōu)勢主要表現(xiàn)在以下幾個特性:

(1)操作方便性。通過開發(fā)應(yīng)用程序和數(shù)據(jù)庫連接,用戶能方便的對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行操作,特別對沒有數(shù)據(jù)庫基礎(chǔ)的人,也可以通過數(shù)據(jù)庫管理系統(tǒng),直接在數(shù)據(jù)庫中操作。

(2)易于維護(hù)性。關(guān)系數(shù)據(jù)庫在完整性約束中提供了實(shí)體完整性、參照完整性和用戶定義的完整性,通過完整性約束可以大大降低了數(shù)據(jù)存儲的冗余及數(shù)據(jù)不一致的概率。

(3)訪問數(shù)據(jù)的靈活性。關(guān)系數(shù)據(jù)庫中提供了諸如視圖,存儲過程,觸發(fā)器,索引等對象,是訪問數(shù)據(jù)更加靈活。

1.3 目前關(guān)系數(shù)據(jù)庫面臨的問題

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,尤其是web2.0 技術(shù)使用,更注重用戶和服務(wù)器以及用戶和用戶之間的交互作用,用戶成為既是網(wǎng)站內(nèi)容的瀏覽者,也是網(wǎng)站內(nèi)容的制造者。例如:博客(BLOG)、社會網(wǎng)絡(luò)(SNS)、以及現(xiàn)在比較熱的微博等。對于在使用web2.0技術(shù)并且訪問量比較大網(wǎng)站,使用傳統(tǒng)關(guān)系數(shù)據(jù)庫就會遇到一些問題,主要表現(xiàn)在以下幾點(diǎn):

(1)對數(shù)據(jù)庫高并發(fā)讀寫的需求

Web 2.0網(wǎng)站要根據(jù)用戶個性化信息來實(shí)時生成動態(tài)頁面和提供動態(tài)信息,無法使用動態(tài)頁面靜態(tài)化技術(shù),因此數(shù)據(jù)庫的并發(fā)負(fù)載非常高,往往要達(dá)到每秒上萬次的的讀寫請求,此時服務(wù)器上的磁盤根本無法承受如此之多的讀寫請求。

(2)對海量數(shù)據(jù)的高效率存儲和訪問的需求

對于大型的社交網(wǎng)站網(wǎng)站,每天用戶產(chǎn)生海量的用戶動態(tài),隨著用戶的不斷增減,一個數(shù)據(jù)表中的記錄可能有幾億條,對于關(guān)系型數(shù)據(jù)庫來說,在一個有上億條記錄的表里面進(jìn)行SQL詢,效率是極其低下的。一些大型Web 網(wǎng)站的用戶登錄系統(tǒng)也是如此,如騰訊、163郵箱都有數(shù)億的帳號。

(3)對數(shù)據(jù)庫的高擴(kuò)展性和高可用性的需求

在基于Web的架構(gòu)中,數(shù)據(jù)庫是最難進(jìn)行橫向擴(kuò)展的,當(dāng)用戶量和訪問量增加時, 數(shù)據(jù)庫沒有辦法像Web Server 那樣簡單的通過添加更多的硬件和服務(wù)結(jié)點(diǎn)來擴(kuò)展性能和負(fù)載能力,對于很多需要24 小時不間斷服務(wù)的網(wǎng)站來說,對數(shù)據(jù)庫系統(tǒng)的升級和擴(kuò)展往往需要停機(jī)維護(hù)。

2 非關(guān)系數(shù)據(jù)庫NoSql

2.1 NoSql概述

NoSql是應(yīng)對關(guān)系數(shù)據(jù)庫出現(xiàn)的問題而發(fā)展起來的,近幾年隨著web2.0技術(shù)的廣泛應(yīng)用,NoSQL 得到了快速的發(fā)展,NoSQL數(shù)據(jù)庫指的是非關(guān)系性的、定義不是很明確的數(shù)據(jù)存儲倉庫。NoSQL數(shù)據(jù)庫不再使用關(guān)系模型的概念,放棄了使用SQL語句對數(shù)據(jù)庫進(jìn)行操作。

NoSQL 數(shù)據(jù)庫根據(jù)數(shù)據(jù)的存儲模型和特點(diǎn)又分為很多種類。主要有

(1)面向列的存儲系統(tǒng)。按列存儲,區(qū)別于關(guān)系數(shù)據(jù)庫中按行存儲,容易擴(kuò)展,適用與存儲海量數(shù)據(jù),對一個或幾個字段進(jìn)行查詢的效率很高,但在復(fù)雜查詢功能比較弱,如多表聯(lián)合查詢。此類數(shù)據(jù)庫產(chǎn)品有BigTable、Hbase、assandra和Hypertable。

(2)面向文檔存儲系統(tǒng)。保證海量數(shù)據(jù)存儲的同時,具有良好的查詢性能。用JSON或類JSON格式進(jìn)行存儲,存儲的內(nèi)容是文檔型的,文檔中的格式是自由的。此類數(shù)據(jù)庫產(chǎn)品有MongoDB和CouchDB。

(3)鍵-值(key/value)存儲系統(tǒng)。是最簡單的Nosql系統(tǒng),具有極高的并發(fā)讀寫性能。通過key能夠快速查詢到value,并且不考慮value 的格式。此類數(shù)據(jù)庫產(chǎn)品有Tokyo Cabinet/Tyrant、BerkeleyDB、MemcacheDB和Redis。

(4)圖存儲系統(tǒng)。圖形關(guān)系的最佳存儲模式。如Neo4J、FlockDB。

(5)對象存儲。類似面向?qū)ο笳Z言的語法操作數(shù)據(jù)庫,通過對象的方式存取數(shù)據(jù)。此類數(shù)據(jù)庫產(chǎn)品有db4o、Versant。

(6)xml 數(shù)據(jù)庫。高效存儲XML 數(shù)據(jù),并支持XML的內(nèi)部查詢語法。此類數(shù)據(jù)庫產(chǎn)品有Berkeley DBXML、BaseX。

2.2 NoSql數(shù)據(jù)庫的優(yōu)勢

相對于關(guān)系數(shù)據(jù)庫,Nosql數(shù)據(jù)庫的優(yōu)點(diǎn)主要表現(xiàn)在:

(1)容易擴(kuò)展和高性能。NoSQL 數(shù)據(jù)庫種類很多,但是都有一個共同的特點(diǎn)就是去掉關(guān)系型數(shù)據(jù)庫的關(guān)系型特性。數(shù)據(jù)之間彼此無關(guān)系,這樣就非常容易擴(kuò)展。可以存儲海量數(shù)據(jù)。同樣由于數(shù)據(jù)之間無關(guān)系,數(shù)據(jù)庫的結(jié)構(gòu)簡單,在處理大數(shù)據(jù)量時,NoSQL 數(shù)據(jù)庫會有出色的讀寫性能。

(2)靈活的數(shù)據(jù)模型。NoSQL 數(shù)據(jù)庫不使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫模型,而是使用如key-value 存儲、文檔型的、列存儲、圖型數(shù)據(jù)庫、xml 等方式存儲數(shù)據(jù)模型,使用這些模型都無需事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。同時根據(jù)需求可以選擇合適的模型。

(3)經(jīng)濟(jì)性

在數(shù)據(jù)量和訪問量比較大的情況下,傳統(tǒng)的關(guān)系數(shù)據(jù)庫對服務(wù)器的要求比較高,甚至使用專用硬件設(shè)備,這樣造價就比較高。而NoSQL數(shù)據(jù)庫的易擴(kuò)展的特點(diǎn)使配置較低服務(wù)器上運(yùn)行,也可以使用低配服務(wù)器組成集群來使用,并且有研究證實(shí)使用NoSql數(shù)據(jù)庫基于低配硬件的分布式存儲解決方案比現(xiàn)在的高端關(guān)系數(shù)據(jù)庫更加可靠。這樣就極大的降低了投資成本。

2.3 NoSql的不足

(1)成熟度方面。NoSQL數(shù)據(jù)庫的實(shí)際應(yīng)用,近幾年才逐漸開始使用,并且大部分NoSQL的產(chǎn)品都還處于實(shí)驗(yàn)和不斷完善的階段。在產(chǎn)品成熟度和穩(wěn)定性方面,NoSq數(shù)據(jù)庫遠(yuǎn)不及發(fā)展了二十多年且已被廣泛使用的關(guān)系數(shù)據(jù)庫。

(2)商業(yè)支持方面。大部分NoSQL數(shù)據(jù)庫都是開源項(xiàng)目,沒有專門的數(shù)據(jù)庫廠商提供完善的服務(wù),一旦出現(xiàn)故障,只能自己的能力解決,對于一般使用者來說風(fēng)險比較大。

(3)使用習(xí)慣方面。軟件開發(fā)人員已經(jīng)習(xí)慣了關(guān)系數(shù)據(jù)庫的模式,解決問題的思路已經(jīng)被固定在關(guān)系模型上,而NoSQL數(shù)據(jù)庫的開發(fā)以放棄了關(guān)系模型,要軟件開發(fā)人員放棄原來的思路,而掌握和使用NoSql數(shù)據(jù)庫是很困難的,導(dǎo)致使用NoSQL數(shù)據(jù)庫的開發(fā)人員不可能在短時間內(nèi)快速增加,這也成為NoSql數(shù)據(jù)庫發(fā)展的一個障礙。

3 關(guān)系數(shù)據(jù)庫與NoSQL 數(shù)據(jù)庫結(jié)合使用

Web2.0時代,關(guān)系數(shù)據(jù)庫不能滿足對數(shù)據(jù)庫高并發(fā)讀寫、海量數(shù)據(jù)的高效率存儲和訪問、高擴(kuò)展性和高可用性方面的需求,而NoSql數(shù)據(jù)庫可以解決這些問題,從而推動了NoSql數(shù)據(jù)庫應(yīng)用和發(fā)展,那是不是說NoSql數(shù)據(jù)庫就能取代關(guān)系數(shù)據(jù)可了呢?從目前來看,基于NoSql數(shù)據(jù)庫的不足,NoSql數(shù)據(jù)庫還不能完全取代關(guān)系數(shù)據(jù)庫,對NoSql數(shù)據(jù)庫的使用,單獨(dú)使用的情況很少,大多數(shù)情況下都是關(guān)系數(shù)據(jù)庫和NoSql數(shù)據(jù)庫結(jié)合使用。

關(guān)系數(shù)據(jù)庫和NoSql數(shù)據(jù)庫結(jié)合使用又分為兩種模式:

(1)NoSql數(shù)據(jù)庫作為輔助存儲。在這種模式下,把所有的數(shù)據(jù)都存放在關(guān)系數(shù)據(jù)庫中,可能被經(jīng)常頻繁讀取的數(shù)據(jù)再存放在NoSql數(shù)據(jù)庫中一份,其目的是提高數(shù)據(jù)的查詢速度,減少關(guān)系數(shù)據(jù)庫的并發(fā)訪問負(fù)載。

(2)NoSql數(shù)據(jù)庫作為主存儲。在這種模式下,把所有的數(shù)據(jù)存儲在NOSQL數(shù)據(jù)庫中,為了一些特殊業(yè)務(wù)或功能的需要,在將數(shù)據(jù)存入NOSQL 的時候,同時存儲到關(guān)系數(shù)據(jù)庫一份。在數(shù)據(jù)存儲和查詢主要是由Nosql數(shù)據(jù)庫完成,少量的數(shù)據(jù)是從關(guān)系數(shù)據(jù)庫讀取。

4 結(jié)語

目前關(guān)系數(shù)據(jù)庫仍是主流數(shù)據(jù)庫,仍被廣泛使用,NoSQL數(shù)據(jù)庫還不能完全取代關(guān)系數(shù)據(jù)庫,雖然NoSql數(shù)據(jù)庫打破了關(guān)系數(shù)據(jù)庫存儲的觀念,采用創(chuàng)新的存儲方式,在快速讀寫、海量存儲,高擴(kuò)展性上很好滿足web2.0時代數(shù)據(jù)存儲的要求,但NoSql數(shù)據(jù)庫也有自己的缺陷。在現(xiàn)階段的某些情況下,可以將關(guān)系型數(shù)據(jù)庫和NoSQL數(shù)據(jù)庫結(jié)合使用,相互彌補(bǔ)各自的不足。隨著NoSql數(shù)據(jù)庫的不斷發(fā)展和完善,將來也有可能取代關(guān)系數(shù)據(jù)庫成為主流數(shù)據(jù)庫。

參考文獻(xiàn):

篇2

>> XML文檔與關(guān)系數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)換的研究 基于DOM的XML文檔到關(guān)系數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換方法 基于關(guān)系數(shù)據(jù)庫的XML存儲技術(shù) 淺談數(shù)據(jù)庫記錄與XML數(shù)據(jù)的轉(zhuǎn)換 論XML文檔數(shù)據(jù)庫數(shù)據(jù)之間的轉(zhuǎn)換原理及轉(zhuǎn)換對象 基于.NET平臺的關(guān)系數(shù)據(jù)庫轉(zhuǎn)換 WebService在LDAP與關(guān)系數(shù)據(jù)庫之間數(shù)據(jù)同步的研究 基于XSD模式的XML文檔與關(guān)系數(shù)據(jù)庫的轉(zhuǎn)換 一種模仿XML的靈活的關(guān)系數(shù)據(jù)庫設(shè)計 基于關(guān)系數(shù)據(jù)庫的時態(tài)XML存取研究 運(yùn)用XML實(shí)現(xiàn)異構(gòu)數(shù)據(jù)庫的數(shù)據(jù)轉(zhuǎn)換 淺析Notes數(shù)據(jù)庫與關(guān)系數(shù)據(jù)庫的關(guān)系 關(guān)系數(shù)據(jù)庫的設(shè)計與測試 基于架構(gòu)的關(guān)系數(shù)據(jù)庫與云端數(shù)據(jù)庫比較分析 XML文檔與數(shù)據(jù)庫表信息互相轉(zhuǎn)換的方法研究與實(shí)踐 關(guān)系數(shù)據(jù)庫與非關(guān)系數(shù)據(jù)庫 淺析關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫與數(shù)據(jù)挖掘的關(guān)系 淺談關(guān)系數(shù)據(jù)庫的數(shù)據(jù)保護(hù)策略 關(guān)系數(shù)據(jù)庫查詢優(yōu)化策略與研究 關(guān)系數(shù)據(jù)庫二進(jìn)制存儲圖像數(shù)據(jù)的研究與應(yīng)用 常見問題解答 當(dāng)前所在位置:,1994.

[2]陳志煒.一種基于語義的將關(guān)系數(shù)據(jù)轉(zhuǎn)換為XML數(shù)據(jù)的方法[D].南京:東南大學(xué)碩士學(xué)位論文,2004.

[3]薩師煊,王珊.數(shù)據(jù)庫系統(tǒng)概論[M].第三版.北京:高等教育出版社,2005.

篇3

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-2374(2011)07-0088-02

在信息技術(shù)與網(wǎng)絡(luò)技術(shù)高速發(fā)展的今天,網(wǎng)絡(luò)已經(jīng)成為新一代操作平臺。信息正全面地以互聯(lián)網(wǎng)方式展開,互聯(lián)網(wǎng)的信息傳播,極大地加速了人類發(fā)展的進(jìn)程。隨著WEB技術(shù)的日益發(fā)展,WEB已經(jīng)成為信息制造、、加工和處理的主要平臺。XML技術(shù)已日益受到更為廣泛的關(guān)注,已經(jīng)在電子商務(wù)、電子數(shù)據(jù)交換、科學(xué)數(shù)據(jù)表示、數(shù)據(jù)建模與分析和搜索引擎等領(lǐng)域有著廣泛的應(yīng)用。隨著XML應(yīng)用技術(shù)的深入,將會有大量的XML文檔出現(xiàn),并且現(xiàn)在在網(wǎng)絡(luò)上已經(jīng)積累了大量的XML文檔。本文主要就基于關(guān)系數(shù)據(jù)庫的XML存儲技術(shù)相關(guān)問題進(jìn)行探討。

一、XML與關(guān)系數(shù)據(jù)庫結(jié)構(gòu)上的差異

XML文檔是半結(jié)構(gòu)化的數(shù)據(jù),是一個樹模型,如果考慮到XML元素次序,則是一棵有序樹模型,其數(shù)據(jù)結(jié)構(gòu)是非結(jié)構(gòu)化的,而關(guān)系數(shù)據(jù)庫管理系統(tǒng)是采用二維表格作為存儲數(shù)據(jù)的模型,表格由行和列組成,列被稱作“字段”用于表示組成數(shù)據(jù)有效信息的屬性,行則用于儲存一條完整的數(shù)據(jù)記錄。XML數(shù)據(jù)與關(guān)系表之間數(shù)據(jù)結(jié)構(gòu)有很大的差異,具體來說,XML數(shù)據(jù)是有序的,而關(guān)系數(shù)據(jù)則是無序的,另外XML數(shù)據(jù)的模式往往經(jīng)常變化,可是關(guān)系數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)是固定不變的,XML數(shù)據(jù)可以無限層次嵌套,而關(guān)系數(shù)據(jù)則不能。雖然XML放松的類型限制和自描述性有利于數(shù)據(jù)之間的交換,但是卻不利于數(shù)據(jù)存儲。因此,XML的數(shù)據(jù)模型的半結(jié)構(gòu)化、有序性與平坦、無序的關(guān)系模型之間存在固有的不匹配。另外遵循文檔類型定義(DTD)或文檔模式定義(XML SCHEMA)的XML文檔也與遵循關(guān)系存儲模式的關(guān)系數(shù)據(jù)在語法、結(jié)構(gòu)以及約束等很多方面存在著固有的異構(gòu)性,因此很難直接由XML數(shù)據(jù)產(chǎn)生關(guān)系模式。甚至即使多個XML文檔實(shí)例都遵循同一個文檔模式定義,它們也可能有不同的結(jié)構(gòu)。可以看出,XML映射到關(guān)系數(shù)據(jù)庫中存在固有的困難。映射時主要存在以下需要解決的問題:(1)如何利用可能有的XML文檔模式(或類型)信息來采取各種不同的存儲策略;(2)如何將XML文檔無損地存入關(guān)系數(shù)據(jù)庫;(3)如何從關(guān)系數(shù)據(jù)庫中查詢并重構(gòu)XML信息。

二、基于關(guān)系數(shù)據(jù)庫的存儲策略

(一) 基于結(jié)構(gòu)映射的策略

具體來說,基于結(jié)構(gòu)的映射方法可以分為兩個步驟來實(shí)現(xiàn):

第一步:簡化DTD并生成DTD圖。因?yàn)閄ML DTD的元素是相當(dāng)復(fù)雜的,需要對復(fù)雜的DTD進(jìn)行簡化。DTD的簡化變換主要有以下三種方式:(1)平面化變換:將DTD內(nèi)的層次嵌套關(guān)系打平,把嵌套的定義轉(zhuǎn)換為非嵌套的定義;(2)簡化變換:將連續(xù)的多個一元操作轉(zhuǎn)換為一個一元操作;(3)聚集變換:將多個具有相同名稱的子元素聚在一起,形成一個子元素。一個DTD圖表示的是一個DTD的結(jié)構(gòu),圖的結(jié)點(diǎn)表示DTD中的元素、屬性或操作符,DTD中的元素在DTD圖中只出現(xiàn)一次,屬性和操作符在DTD圖中出現(xiàn)的次數(shù)則與它們在DTD中出現(xiàn)的次數(shù)相同。

第二步:DTD圖到關(guān)系模式的映射。從DTD圖到關(guān)系模式的映射方法主要有:基本內(nèi)聯(lián)法、共享內(nèi)聯(lián)法和綜合內(nèi)聯(lián)法。

首先,基本內(nèi)聯(lián)法?;緝?nèi)聯(lián)法的原則是在存儲一個結(jié)點(diǎn)的時候,盡可能多地將這個元素的后代結(jié)點(diǎn)存儲在一個表中。其次,共享內(nèi)聯(lián)法。共享內(nèi)聯(lián)法為以下三種DTD結(jié)點(diǎn)生成獨(dú)立的關(guān)系:(1)DTD圖中入度大于l或者等于0(根結(jié)點(diǎn))的元素結(jié)點(diǎn)生成獨(dú)立的關(guān)系;(2)DTD圖中結(jié)點(diǎn)“幸”的孩子結(jié)點(diǎn)(將值集元素作為單獨(dú)的關(guān)系保存);(3)互為遞歸的入度均為1的元素結(jié)點(diǎn),其中之一生成獨(dú)立的關(guān)系。而其余的結(jié)點(diǎn)都生成關(guān)系屬性。共享內(nèi)聯(lián)法相對減少了XML查詢轉(zhuǎn)換為SOL語句的數(shù)目,但增加了每個SOL查詢中的連接運(yùn)算。再次,綜合內(nèi)聯(lián)法。綜合內(nèi)聯(lián)方法在處理入度大于1的結(jié)點(diǎn)上與共享內(nèi)聯(lián)方法不同,綜合內(nèi)聯(lián)法將所有入度大于1的元素結(jié)點(diǎn)也內(nèi)聯(lián)進(jìn)入父結(jié)點(diǎn)所生成的關(guān)系表中,但是帶回路的結(jié)點(diǎn)以及結(jié)點(diǎn)“}”或“+”的直接后繼結(jié)點(diǎn)除外,該方法減少了子結(jié)點(diǎn)與父結(jié)點(diǎn)的連接運(yùn)算。

(二) 基于模型映射的策略

模型映射的方法是用一個固有的模式來存儲XML文檔。它用固定的關(guān)系模式來存放任何格式的XML數(shù)據(jù),而不考慮XML文檔的模式(DTD或SCHEMA),其實(shí)質(zhì)是存儲XML文檔本身的結(jié)構(gòu)信息。

第一,Edge方法。Edge方法圓的存儲策略是把要存入的XML文檔看做圖形結(jié)構(gòu),每個圖的邊界都表示為圖中的元組,把XML文檔圖中的所有邊都存入到關(guān)系表Edge中,用表Edge(source,ordinal,target,label,flag,value)存儲XML文檔圖中的邊,其中的source字段和target字段分別用來存儲邊的源結(jié)點(diǎn)和目標(biāo)結(jié)點(diǎn)的標(biāo)識符;label域?yàn)槟繕?biāo)結(jié)點(diǎn)的類型;flag用來區(qū)分目標(biāo)結(jié)點(diǎn);target是一個元素結(jié)點(diǎn)還是一個文本結(jié)點(diǎn),如果該目標(biāo)結(jié)點(diǎn)是文本結(jié)點(diǎn),則文本值存儲于value域中;ordinal字段指出target結(jié)點(diǎn)在source結(jié)點(diǎn)的所有孩子中的位置。由于Edge方法將所有XML數(shù)據(jù)都用Edge表存放,操作方法簡單。但缺點(diǎn)是在Edge方法中每條邊都是單獨(dú)管理的,所以在用戶進(jìn)行查詢操作時就需在大量的表上進(jìn)行連接操作以形成路徑。如果要判斷祖先/后代關(guān)系就需要從祖先到后代(或與之相反)遍歷所有的邊,造成代價非常昂貴。

第二,XRel方法。XRel方法為了存儲XML文檔的所有信息,將XML文檔樹分解為一個個路徑表達(dá)式,對于樹中每一個結(jié)點(diǎn),都將從根結(jié)點(diǎn)到其自身的路徑存儲。而在樹中有可能有多個結(jié)點(diǎn)的路徑是一樣的,所以單個的簡單路徑表達(dá)式并不能夠存儲整棵XML文檔樹的信息。XRel模式是通過區(qū)間編碼[start,end]來反映XML文檔的模型結(jié)構(gòu),并根據(jù)結(jié)點(diǎn)類型來劃分,分為元素結(jié)點(diǎn)表、屬性結(jié)點(diǎn)表和文本結(jié)點(diǎn)表,同時將所有路徑進(jìn)行存儲。因此,XRel模式由四個關(guān)系表組成如圖1所示:

在Path表中,存儲所有的不重復(fù)的路徑,其中,PathID為標(biāo)記路徑的標(biāo)識,pathexp域存儲標(biāo)記路徑。為了實(shí)現(xiàn)路徑表達(dá)式的字符串匹配操作,防止意外的結(jié)果出現(xiàn),將標(biāo)記路徑中的“/”替換為“#/”進(jìn)行存儲。對于Element表、Attribute表和Text表,Attribute表和Text表中的value字段存儲的分別是屬性結(jié)點(diǎn)的值和文本結(jié)點(diǎn)的值。對于每一個路徑表達(dá)式,查詢過程都可以分為兩部:第一步,利用字符串的匹配操作,能夠快速的查找出與路徑表達(dá)式相匹配的所有標(biāo)記路徑的標(biāo)識;第二步,利用這些路徑標(biāo)識,能夠快速的查找出隸屬于這些路徑終端的值。

XRel存儲模式的特點(diǎn)可以總結(jié)如下:(1)用簡單路徑表達(dá)式和結(jié)點(diǎn)的區(qū)間編碼(start,end)存儲XML文檔的所有信息;(2)分別為每一種結(jié)點(diǎn)類型創(chuàng)建一個對應(yīng)的關(guān)系表;(3)用一個Path表把文檔中所有不重復(fù)的路徑都提取出來,有效地降低了數(shù)據(jù)庫的存儲容量。

第三,XParent方法。XParent模式和XRel模式一樣,將文本數(shù)據(jù)路徑獨(dú)立出來,共包含四個關(guān)系表,如圖2所示:

其中,表LabelPath中的pathexp字段用來存儲所有不重復(fù)的標(biāo)簽路徑,即模式路徑。每一個標(biāo)簽路徑被賦予一個標(biāo)識符pathlD,length為標(biāo)記路徑的長度。Parent表存儲的是雙親/孩子關(guān)系,pid和cid分別表示一個邊的起始結(jié)點(diǎn)與結(jié)尾結(jié)點(diǎn)。did為XML文檔中元素結(jié)點(diǎn)的標(biāo)識,它也可以作為以該結(jié)點(diǎn)為終端點(diǎn)的數(shù)據(jù)路徑的標(biāo)識。

篇4

中圖分類號:TP311.13文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)26-1615-02

Relational Databases Conversion Based on .NET Platform

HU Shu-gang

(Dongying Vocational College, Dongying 257091, China)

Abstract: Combining the advantages of XML technology,.NET platform provides the feasibility of data conversion between relational databases. One example demonstrated the SQL Server database can be converted to an XML file, and then the XML file can be converted to other database. It has realized the data conversion between relational databases.

Key words: database conversion; .NET; XML

1 引言

網(wǎng)絡(luò)資源中通常包含多種格式和管理系統(tǒng)的關(guān)系數(shù)據(jù)庫,為了實(shí)現(xiàn)資源的共建共享,需要完成多種數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換。不同的開發(fā)商采用分布式對象技術(shù)和各自的思路來實(shí)現(xiàn)數(shù)據(jù)庫的互操作,如OMG的CORBA技術(shù)、Sun公司的EJB/RMI和微軟的.NET技術(shù)等。

2 數(shù)據(jù)庫轉(zhuǎn)換思路

.NET是微軟公司開發(fā)的下一代基于互聯(lián)網(wǎng)平臺的軟件開發(fā)構(gòu)想,它提供了一個全新的編程模型。該平臺建立在XML和因特網(wǎng)標(biāo)準(zhǔn)協(xié)議的基礎(chǔ)上,具有平立性和語言獨(dú)立性,它包含了強(qiáng)大數(shù)據(jù)庫操控能力的。編程模型由一系列的數(shù)據(jù)庫相關(guān)類和接口組成,運(yùn)用技術(shù),應(yīng)用程序既能訪問關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù),又能訪問層次化的XML數(shù)據(jù)[1]。XML是W3C的通用標(biāo)記語言SGML的一個簡化子集。它是一種存儲和傳輸數(shù)據(jù)的行業(yè)標(biāo)準(zhǔn)格式,普遍貫穿于.NET平臺,具有簡單性、可擴(kuò)展性、互操作性和開放性等特點(diǎn),其本質(zhì)特點(diǎn)是數(shù)據(jù)獨(dú)立,它存儲的數(shù)據(jù)全部是文本,而且使用標(biāo)記標(biāo)示,利于網(wǎng)絡(luò)傳輸。XML模式提供了很強(qiáng)的數(shù)據(jù)類型識別功能,可正確處理各種數(shù)據(jù)類型。XML和.NET的結(jié)合為解決數(shù)據(jù)庫互操作問題奠定了基礎(chǔ)[2]。通過以上分析,可以在.NET平臺上,以XML為中間數(shù)據(jù)源完成多種關(guān)系數(shù)據(jù)庫之間的轉(zhuǎn)換[3]。演示示例用的操作系統(tǒng)是Windows XP Professional,開發(fā)平臺為Visual Studio 2005,示例用C#語言編寫。

2.1 數(shù)據(jù)庫的導(dǎo)入[4]

為了導(dǎo)入SQLServe數(shù)據(jù)庫,先用Connection對象連接數(shù)據(jù)庫,演示示例中用SqlConnection連接了服務(wù)器METC\SQLEXPRESS的數(shù)據(jù)庫books.mdf。將數(shù)據(jù)庫讀入DataSet。DataSet對象主要存放數(shù)據(jù)庫的DataTable的對象,可以使用DataAdapter建立DataSet對象。盡管DataSet可以存儲數(shù)據(jù),但仍需要使用DataAdapter對象來創(chuàng)建和初始化各種表,還需要使用Fill()方法來把查詢結(jié)果移入到DataSet中去,再將數(shù)據(jù)寫入到XML文件。關(guān)鍵源代碼如下。

String strTableName = "books";

String strConnection = "server=METC\\SQLEXPRESS;database=books;uid=sa;pwd=;trusted_connection=yes ";

String strSql = "select * from " + strTableName;

SqlConnection objConn = new SqlConnection(strConnection);

SqlDataAdapter objAdapter = new SqlDataAdapter(strSql, objConn);

DataSet objDSet = new DataSet();

objAdapter.Fill(objDSet, "temp");

XmlTextWriter objXmlWriter;

String strtemp1 = Request.PhysicalApplicationPath;

String strpath = strtemp1 + "newxml.xml";

objXmlWriter = new XmlTextWriter(strpath, null);

objXmlWriter.WriteStartDocument();

objXmlWriter.WriteStartElement("xml");

for (int i = 0; i < objDSet.Tables["temp"].Rows.Count; i++)

{

objXmlWriter.WriteStartElement("menu");

for (int j = 0; j < objDSet.Tables["temp"].Columns.Count; j++)

{

objXmlWriter.WriteAttributeString(objDSet.Tables["temp"].Columns[j].ColumnName, objDSet.Tables["temp"].Rows[i][j].ToString());

}

objXmlWriter.WriteEndElement();

}

objXmlWriter.WriteEndElement();

objXmlWriter.WriteEndDocument();

objXmlWriter.Close();

2.2 數(shù)據(jù)的導(dǎo)出[5-6]

以下演示示例是將以上創(chuàng)建的“newxml.xml”文件轉(zhuǎn)換為Access數(shù)據(jù)庫demo.mdb中的一個表“newxml”。首先建立與目標(biāo)數(shù)據(jù)庫的連接,也就是通過OLE DB Provider提供的OleDBConnection對象建立與Access數(shù)據(jù)庫demo.mdb的連接。當(dāng)然,該示例也可通過OLE DB Provider提供的其他連接數(shù)據(jù)庫的對象來連接Oracle、Sybase或DB2這樣的數(shù)據(jù)庫以及Excel表格。以下關(guān)鍵源代碼部分省略了命名空間的引用、系統(tǒng)自生成代碼和對數(shù)據(jù)庫中表是否建立的檢查部分。

private void TableCheck()

{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);

Try

{ oledbConn.Open();

DataTable schemaTable = oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, tableName, "TABLE"});

String sqlCmd = "";

if(schemaTable.Rows.Count < 1)

{sqlCmd = "create table " + tableName + " (";

for(int i = 0;i < dataTableXml.Columns.Count;i++)

{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + " char(100),";}

sqlCmd= sqlCmd .Substring(0,sqlCmd.Length - 1) + ");";

OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);

oledbCmd.ExecuteNonQuery();}

}

catch

{Message.Text = "數(shù)據(jù)庫不存在或無法創(chuàng)建表.";}

finally

{oledbConn.Close();}

}

private void TableInsert()

{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);

try

{ oledbConn.Open();

foreach(DataRow dr in dataTableXml.Rows)

{ string sqlCmd = "insert into [" + tableName + "] (";

for(int i = 0;i < dataTableXml.Columns.Count;i++)

{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + ",";}

sqlCmd= sqlCmd.Substring(0,sqlCmd.Length - 1) + ") values (";

for(int x = 0;x < dataTableXml.Columns.Count;x++)

{sqlCmd = sqlCmd + "'" + dr[x].ToString().Replace("'","''") + "',";}

sqlCmd = sqlCmd.Substring(0,sqlCmd.Length - 1) + ");";

OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);

oledbCmd.ExecuteNonQuery();

}

}

}

3 結(jié)束語

通過以上實(shí)例,演示了以XML為中間轉(zhuǎn)換數(shù)據(jù)源,在.NET平臺上方便地完成異構(gòu)關(guān)系數(shù)據(jù)庫之間的數(shù)據(jù)轉(zhuǎn)換和共享。基于.NET平臺,充分利用XML技術(shù)的優(yōu)勢,來解決異構(gòu)數(shù)據(jù)庫集成的問題,能夠給用戶提供一個透明的全局?jǐn)?shù)據(jù)庫,方便用戶的使用,還使得系統(tǒng)在可擴(kuò)展性、安全性、可維護(hù)性等方面有所提高。

參考文獻(xiàn):

[1] Lair R, Lefbvre 開發(fā)人員手冊[M].張俊,譯.北京:電子工業(yè)出版社,2002:38-39,169-193,246-488.

[2] Bray T, Paoli J, Sperberg-McQueen C M, et al.XML標(biāo)準(zhǔn)[EB/OL].[2006-08-16]./TR/2006/REC-xml-20060816/.

[3] 石玉晶,牛存良,馬新娜.使用XML進(jìn)行異構(gòu)數(shù)據(jù)庫間數(shù)據(jù)傳送[J].現(xiàn)代計算機(jī),2003,19(11):79-80.

篇5

數(shù)據(jù)庫查詢操作是數(shù)據(jù)庫操作的核心操作,對數(shù)據(jù)的查詢效率及處理速度已成為衡量數(shù)據(jù)庫性能的一個重要指標(biāo)。數(shù)據(jù)庫查詢技術(shù)也是學(xué)生對《數(shù)據(jù)庫原理與應(yīng)用》這門課程所必須掌握的知識和技能,數(shù)據(jù)庫查詢技術(shù)的精通也為以后課程的學(xué)習(xí)(如:C#.NET程序設(shè)計)中的數(shù)據(jù)庫應(yīng)用程序的設(shè)計打下良好的基礎(chǔ)。

為了優(yōu)化數(shù)據(jù)庫的性能,簡單、有效的方法就是優(yōu)化查詢。

1優(yōu)化原理和實(shí)質(zhì)

數(shù)據(jù)查詢處理的代價通常取決于對磁盤的訪問,因?yàn)榇疟P比內(nèi)存的訪問速度要慢。對于一個給定的查詢,有許多可能的處理策略,復(fù)雜查詢更是如此[1]。查詢優(yōu)化的實(shí)質(zhì)是在結(jié)果正確的前提下,找出與已有表達(dá)式等價,但查詢效率更高的表達(dá)式。

2在教學(xué)中要注重的幾種典型的優(yōu)化方法

2.1建立視圖

視圖可簡化用戶操作數(shù)據(jù)的方式,使用戶能著重于所感興趣的特定數(shù)據(jù)和所負(fù)責(zé)的特定任務(wù)。如果該視圖數(shù)據(jù)規(guī)模小于定義的基本表,則基于視圖的查詢比原查詢的速度會快得多。

例:要查詢每門課程成績最高的學(xué)生的學(xué)號

SELECT 學(xué)號,課程號,成績

FROM 成績表 A

WHERE 成績=(SELECT MAX(成績)

FROM 成績表B

WHERE A..課程號=B.課程號)

語句缺點(diǎn):這屬嵌套查詢,子查詢的結(jié)果集將作為外層查詢的條件,查詢效率不高。

解決方案:可先建立視圖,求得每門課程的最高分,再與成績表中比較,獲取與視圖中最高分?jǐn)?shù)據(jù)相等的記錄,這就減少了內(nèi)層連接的數(shù)據(jù)量,從而提高了檢索速度。

用SQL語句優(yōu)化的步驟為:

首先,創(chuàng)建視圖

GREATE VIEW V_max_cnoscore AS

SELECT 課程號,Max(成績) AS 最高分?jǐn)?shù)

FROM 成績表 GROUP BY 課程號

其次,利用視圖檢索數(shù)據(jù)

SELECT 學(xué)號,A.課程號,A.成績

FROM 成績表A,V_max_cnoscore B

WHERE A.成績=B.最高分?jǐn)?shù) AND A.課程號=B.課程號

2.2查詢條件Where子句的優(yōu)化

2.2.1合理設(shè)置WHERE條件的先后順序。多數(shù)數(shù)據(jù)庫都是按從左到右的順序處理?xiàng)l件,把能過濾更多數(shù)據(jù)的條件放在前面,過濾少的放后面,便可提高檢索速度。

例:SELECT * FROM student

WHERE ssex=’女’ --條件1過濾的數(shù)據(jù)較少

AND sdept=’計算機(jī)系’ --條件2過濾數(shù)據(jù)比條件1多

上面的SQL就不符合上述原則,可改為:

SELECT * FROM student

WHERE sdept=’計算機(jī)系’

AND ssex=’女’

對同一表格進(jìn)行多個選擇運(yùn)算,選擇條件的排序?qū)π阅苡休^大影響,不僅影響索引的選取,而且關(guān)系到臨時表的大小[2]。因此,要提高查詢速度,可將較嚴(yán)格的條件寫在前面,較弱的放在后面。

2.2.2避免使用“< >”或“NOT”操作符?!? >”或“NOT”均屬于排斥性操作符,不是包括性操作符,這會使系統(tǒng)在搜索數(shù)據(jù)時無法使用索引,只能直接搜索表中的數(shù)據(jù),例:

(1)SELECT 學(xué)號 FROM 成績表 WHERE 成績< >80

(2)SELECT 學(xué)號 FROM 成績表 WHERE NOT(成績80)

(3)SELECT 學(xué)號 FROM 成績表 WHERE成績< 80 OR 成績>80

比較以上三條語句,可知第3條可使用索引查詢,它的查詢速度最快。

2.2.3恰當(dāng)運(yùn)用“OR擴(kuò)展”技術(shù)。該技術(shù)是把在Where子句中帶有OR的查詢轉(zhuǎn)換成包含多個UNION ALL的查詢。

例:查詢計算機(jī)系縣年齡不大于20歲的學(xué)生。

常規(guī)的SQL語句:

SELECT 學(xué)號,姓名 FROM 學(xué)生表 WHERE 系名=’計算機(jī)系’ OR 年齡

假定表中“系名”和“年齡”兩個字段上創(chuàng)建了索引,以上的查詢可能不會使查詢優(yōu)化器使用索引,從而查詢效率降低,可改進(jìn)為:

SELECT 學(xué)號,姓名 FROM 學(xué)生表 WHERE 系名='計算機(jī)系'

UNION ALL SELECT 學(xué)號,姓名 FROM 學(xué)生表 WHERE 年齡

2.2.4合理減少LIKE條件的使用。在SQL查詢中,LIKE條件使用的神奇之處在于其與通配符匹配所提供的模糊查詢功能。但在字符串的比較中,有時大量字符的逐個比較,也會大大降低查找效率。

例:圖書按26個英文字母分為26類,查找所有屬于‘A’類圖書的銷售金額。

SELECT 圖書類號, SUM (數(shù)量*單價) FROM 銷售

WHERE 圖書類號LIKE′A%′GROUP BY圖書類號

優(yōu)化為精確查詢:

SELECT 圖書類號,SUM(數(shù)量*單價) FROM銷售

WHERE 圖書類號>=′A′AND圖書類號

GROUP BY圖書類號

2.3正確使用子查詢“展平”技術(shù)子查詢“展平”技術(shù)就是指將子查詢轉(zhuǎn)變?yōu)榘脒B接,連接或者反連接,從而將查詢優(yōu)化。

例:找出成績大于等于90分的學(xué)生的姓名。

SELECT 姓名 FROM 學(xué)生表 WHERE 學(xué)號IN

(SELECT 學(xué)號FROM 成績表WHERE 成績>=90)

語句缺點(diǎn):需要搜索學(xué)生表的每一行,來查找所有滿足子查詢條件的記錄。

解決方案:將學(xué)生表作為連接的內(nèi)表,查詢將作為通常的連接來執(zhí)行。

優(yōu)化后的SQL語句:

SELECT 姓名FROM (SELECT 學(xué)號 FROM 成績表

WHERE成績>=90) A,學(xué)生表 B WHERE A.學(xué)號=B.學(xué)號

2.4善于使用存儲過程

存儲過程是SQL語句和可選控制流語句的預(yù)編譯集合,一個名稱存儲并作為一個單元處理。善于使用存儲過程,將使SQL變得更加靈活和高效。

例:查詢某個學(xué)生某門課程的考試成績,列出學(xué)生的姓名、課程名及成績

CREATE PROC pro_student_degree

@stu_name char(12),@course_name char(18) AS

SELECT sname,cname,degree

FROM student A INNER JOIN sc B ON A.sno=B.省略o=o

WHERE sname=@stu_name AND cname=@course_name

以上是一個帶有兩個輸入?yún)?shù)的簡單存儲過程,只需執(zhí)行一個簡單的SQL語句――“EXEC pro_student_degree‘劉娜’,’數(shù)據(jù)庫原理’”就可完成查詢。

編寫性能優(yōu)化的SQL語句是提高數(shù)據(jù)庫系統(tǒng)的重要因素,隨著數(shù)據(jù)庫管理系統(tǒng)中數(shù)據(jù)量的增大,如何提高查詢速度與效率也是計算機(jī)軟件開發(fā)的一個時代要求。實(shí)現(xiàn)優(yōu)化查詢的方法很多,在使用中,要根據(jù)具體情況權(quán)衡利弊,使數(shù)據(jù)庫查詢性能最優(yōu)。在學(xué)生的教學(xué)中要注重培養(yǎng)學(xué)生的動手能力,使學(xué)生養(yǎng)成編寫優(yōu)化的SQL語句的習(xí)慣。

參考文獻(xiàn):

[1]王振輝,吳廣茂.SQL查詢語句優(yōu)化研究[J].計算機(jī)應(yīng)用,2005,(12):208.

篇6

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)16-21188-02

On Optimization Method for Query in Relational Database

YIN Mei-gui

(Heyuan Polytechnic, Heyuan 517000, China)

Abstract: In the database application MIS, query process is the most frequent. Whether query process is good or bad will directly affect the performance of database application system. Therefore, query in database should be optimized. This article suggests some methods of how to realize the optimization by making use of the technology of query in relational database.

Key words: RDBMS; query optimization; methods

1 引言

數(shù)據(jù)庫系統(tǒng)是管理信息系統(tǒng)的核心,基于數(shù)據(jù)庫的聯(lián)機(jī)事務(wù)處理(OLTP)以及聯(lián)機(jī)分析處理(OLAP)是企業(yè)、銀行、政府部分最為重要的計算機(jī)應(yīng)用之一。從大多數(shù)數(shù)據(jù)庫系統(tǒng)的應(yīng)用實(shí)例來看,查詢操作是所有數(shù)據(jù)庫操作中所占據(jù)比重最大的操作。當(dāng)數(shù)據(jù)庫系統(tǒng)積累到一定程度(如稅務(wù)系統(tǒng)的賬戶達(dá)到上百萬甚至上千萬條記錄),全表掃描一次往往需要數(shù)十分鐘,甚至數(shù)小時。如果采用比全表掃描更好的查詢策略,往往能降低查詢時間。如何設(shè)計數(shù)據(jù)庫,采取什么樣的查詢方法,提高查詢效率,這就是查詢優(yōu)化要解決的問題。

2 合理使用索引

索引是數(shù)據(jù)庫一個常用的數(shù)據(jù)庫對象,優(yōu)化查詢的重要方法是建立索引,也是數(shù)據(jù)庫同時預(yù)先將數(shù)據(jù)分類導(dǎo)入到多表格的方式。在關(guān)系數(shù)據(jù)庫的表上建立合適的索引,可以提高數(shù)據(jù)庫數(shù)據(jù)查詢的速度,改善數(shù)據(jù)庫的性能。除了集簇索引,每一索引的使用都以磁盤容量作為代價,當(dāng)使用一個索引,數(shù)據(jù)庫引擎必須執(zhí)行兩個數(shù)據(jù)讀取,這兩個數(shù)據(jù)讀取是數(shù)據(jù)庫記錄所必需的,第一個數(shù)據(jù)被讀取到實(shí)際數(shù)據(jù)指針的索引,第二個數(shù)據(jù)被讀入到指針指定的位置。因此創(chuàng)建索引時必須要與實(shí)際應(yīng)用系統(tǒng)的查詢需求密切結(jié)合,才能達(dá)到優(yōu)化查詢的目的。

2.1 建索引的必要性

判斷索引必要性的最終標(biāo)準(zhǔn)是判斷這些索引是否對數(shù)據(jù)庫的工作效率有所幫助。在實(shí)際的應(yīng)用過程中,應(yīng)該為優(yōu)化工作做以下幾點(diǎn)準(zhǔn)備:

首先觀察數(shù)據(jù)庫應(yīng)用程序中所有的SQL語句,并從中統(tǒng)計出常用且可能對性能有影響的部分語句,然后分析、歸納出作為Where條件子句的字段及其各種組合方式;在這一基礎(chǔ)上可以初步判斷出哪些表的哪些字段應(yīng)該建立索引。其次,必須了解應(yīng)用程序,要了解哪些表是數(shù)據(jù)操作頻繁的表;哪些表經(jīng)常與其他表進(jìn)行連接;哪些表中的數(shù)據(jù)量可能很大;數(shù)據(jù)量大的表中各個字段的數(shù)據(jù)分布情況如何等等。對于滿足上述條件的這些表,必須重點(diǎn)關(guān)注。因?yàn)榻⒃谶@些表上的索引,將對SQL語句的性能產(chǎn)生舉足輕重的影響。

2.2 使用索引的規(guī)則

索引的使用要恰到好處,其使用原則如下:

(1)在經(jīng)常進(jìn)行連接,但是沒有指定為外鍵的列上建立索引,而不經(jīng)常連接的字段則由優(yōu)化器自動生成索引。

(2)在主鍵索引方面,不應(yīng)有超過25%列成為主鍵,而普通列很少,這會浪費(fèi)索引空間。

(3)在條件表達(dá)式中經(jīng)常用到的不同值較多的列上建立檢索,在不同值少的列上不要建立索引。

(4)在頻繁進(jìn)行排序或分組(即進(jìn)行g(shù)roup by 或 order by 操作)的屬性上建立索引。

(5)在作為最小值等聚集函數(shù)的屬性上考慮建立索引。

索引的建立、維護(hù)和使用都需要付出代價,應(yīng)合理使用索引。錯誤的索引不會使數(shù)據(jù)庫性能得到預(yù)期的提高,往往還會產(chǎn)生一些負(fù)面影響。

3 SQL語句優(yōu)化

要對查詢進(jìn)行優(yōu)化,一個簡單直接有效的方法是對SQL語句進(jìn)行調(diào)整,減少計算量,提高查詢的效率。以下是一些書寫SQL的一些經(jīng)驗(yàn)。

3.1 避免相關(guān)子查詢

查詢嵌套層數(shù)每增加一層,查詢的效率成幾何級的降低。要想提高嵌套語句的執(zhí)行效率,則應(yīng)減少嵌套語句的嵌套的層次。所以在實(shí)際應(yīng)用中,若可以用連接查詢代替的子查詢,則用連接查詢實(shí)現(xiàn)。

例:查詢選修了“3-105”號課程的學(xué)生基本信息

用子查詢的方法如下所示:

SELECT * FROM student WHERE SNO IN (SELECT sno FROM sc WHERE cno=’3-105’)

改寫成連接查詢?nèi)缦拢?/p>

SELECT student.* FROM student,sc WHERE stuent.sno=sc.sno AND cno=’3-105’

3.2 用UNION替換OR

合理建立索引有助于提高查詢效率。有時盡管在所有的檢索列上都有索引,但有些形式SELECT查詢語句可能不會促使查詢優(yōu)化器使用索引,從而降低查詢效率。如果對查詢語句進(jìn)行改寫,用UNION替換OR,可以強(qiáng)迫優(yōu)化器按索引路徑處理。如:假定分別在“職工”關(guān)系中的“年齡”和“月工資”字段上創(chuàng)建了索引,對以下SQL語句

SELECT 姓名,年齡,月工資 FROM 職工 WHERE 年齡>45 OR 月工資

可替換為:

SELECT 姓名,年齡,月工資 FROM 職工 WHERE 年齡>45

UNION

SELECT 姓名,年齡,月工資 FROM 職工 WHERE月工資

3.3 使用臨時表優(yōu)化查詢

在涉及相關(guān)查詢的某些情形中,構(gòu)造臨時關(guān)系可以提高查詢效率。如:查詢每個部門中月工資最高的“職工號”

SELECT 職工號 FROM 職工 AS e1 WHERE 月工資=(SELECT MAX(月工資)FROM 職工 AS e2 WHERE e1.部門號=e2.部門號)

以上的查詢對于外層的職工關(guān)系e1中的每一個元組,都要對內(nèi)層的整個職工關(guān)系e2進(jìn)行檢索,因此查詢效率不高??梢詷?gòu)建臨時關(guān)系提高查詢效率。

SELECT MAX(月工資) AS 最高工資,部門號 INTO temp FROM職工 GROUP BY 部門號

SELECT 職工號 FROM 職工,temp WHERE 月工資=最高工資 AND 職工.部門號=temp.部門號

3.4 避免在索引列上使用計算

WHERE子句中,如果索引列是函數(shù)的一部分。優(yōu)化器不使用索引而使用全表掃描。如

SELECT * FROM職工 WHERE 月工資*12>20000

可改為:

SELECT * FROM 職工 WHERE 月工資>20000/12

3.5 謂詞的等價變換

由于執(zhí)行引擎對各種謂詞的處理方法不同,把邏輯表達(dá)式重寫成等價的且效率較高的表達(dá)式是提高效率的有效方法,同時也是切實(shí)可行的。針對執(zhí)行引擎對各種謂詞執(zhí)行效率的不同,總結(jié)如下謂詞轉(zhuǎn)換規(guī)則:

1)將BETWEEN轉(zhuǎn)化為AND 連接的謂詞

把BETWEEN...AND...形式改寫為用AND連接的兩個謂詞,效率往往

有一定的提高。

例如:月工資 BETWEEN 1000 AND 2000 改為: 月工資>=1000 AND 月工資

2)避免使用In語句

當(dāng)查詢語句中有In關(guān)鍵詞時,優(yōu)化器采用OR并列條件。

如:職工號IN (‘1001’,’2001’) 改為:職工號=’1001’ OR 職工號=’2001’

4 結(jié)束語

查詢處理是數(shù)據(jù)管理系統(tǒng)的核心,而查詢優(yōu)化技術(shù)是查詢處理的關(guān)鍵技術(shù)。查詢優(yōu)化就要抓住關(guān)鍵問題。在數(shù)據(jù)庫的開發(fā)和維護(hù)過程中,查詢優(yōu)化設(shè)計可以提高系統(tǒng)的性能,尤其對于數(shù)據(jù)量大的數(shù)據(jù)庫系統(tǒng)最為重要。本文提到一些優(yōu)化方法是根據(jù)自己的經(jīng)驗(yàn),并查閱了大量的資料。在具體的使用時候要根據(jù)實(shí)際情況,才能合理制定出良好的優(yōu)化方法,實(shí)現(xiàn)快速、高效的數(shù)據(jù)查詢。

參考文獻(xiàn):

篇7

一、關(guān)系數(shù)據(jù)庫技術(shù)的功能

關(guān)系數(shù)據(jù)庫技術(shù)的主要作用是為網(wǎng)絡(luò)設(shè)計提供輔助功能,在關(guān)系數(shù)據(jù)庫中包含各種各樣網(wǎng)絡(luò)設(shè)計所需的數(shù)據(jù)和信息,合理應(yīng)用關(guān)系數(shù)據(jù)庫技術(shù)可網(wǎng)絡(luò)設(shè)計提供便利條件。促使網(wǎng)絡(luò)設(shè)計更加完善,比如:在關(guān)系數(shù)據(jù)輸入過程中,要先把對數(shù)據(jù)的賦值進(jìn)行全面系統(tǒng)的分類處理,然后對這些數(shù)據(jù)進(jìn)行整合和重組,促使網(wǎng)絡(luò)設(shè)計能獲得更加全面的數(shù)據(jù)參數(shù)和參考信息,促使網(wǎng)絡(luò)設(shè)計效果和服務(wù)質(zhì)量不斷提升。

二、網(wǎng)絡(luò)設(shè)計對關(guān)系數(shù)據(jù)庫技術(shù)的需求分析

在計算機(jī)網(wǎng)絡(luò)技術(shù)具有很強(qiáng)的開放性,安全性容易受到挑戰(zhàn),大大增加了管理的難度。為完整網(wǎng)絡(luò)設(shè)計對安全性和性能的需求,就必須切實(shí)滿足如下要求:高性能。網(wǎng)絡(luò)設(shè)計需要應(yīng)用到支持線速交換的骨干交換設(shè)備,才能確保數(shù)據(jù)交換的流暢性,在關(guān)系數(shù)據(jù)庫中幾乎包含網(wǎng)絡(luò)設(shè)計所需的全部信息,合理應(yīng)用關(guān)系數(shù)據(jù)庫技術(shù)可為網(wǎng)絡(luò)設(shè)計提供數(shù)據(jù)支持和理論指導(dǎo)。高質(zhì)量。網(wǎng)絡(luò)設(shè)計需要滿足業(yè)務(wù)服務(wù)質(zhì)量,應(yīng)用業(yè)務(wù)數(shù)據(jù)通常情況下,都包含多種多樣的形式,關(guān)鍵業(yè)務(wù)數(shù)據(jù)流在網(wǎng)絡(luò)流量高峰期內(nèi),所需的響應(yīng)時間會有響應(yīng)的延長。因此,在具體設(shè)計過程中,為最大限度上滿足網(wǎng)絡(luò)設(shè)計的服務(wù)質(zhì)量,高性能網(wǎng)絡(luò)必須具備關(guān)系數(shù)據(jù)庫的相關(guān)功能。網(wǎng)絡(luò)的安全性。網(wǎng)絡(luò)病毒、黑客等是目前影響計算機(jī)網(wǎng)絡(luò)安全的主要因素。因此,網(wǎng)絡(luò)設(shè)計中需要采取有針對性的手段和技術(shù),禁止病毒的傳播和黑客的攻擊。

三、網(wǎng)絡(luò)設(shè)計中關(guān)系數(shù)據(jù)庫技術(shù)的具體應(yīng)用

(一)應(yīng)用思路

為滿足計算機(jī)網(wǎng)絡(luò)對高性能、高質(zhì)量、高安全性的需求,在具體設(shè)計過程中,對網(wǎng)絡(luò)的控制需要以設(shè)備分層結(jié)構(gòu)的總線型為主要設(shè)計依據(jù),在滿足高性能、高質(zhì)量、高安全性的基礎(chǔ)上,提升網(wǎng)絡(luò)技術(shù)應(yīng)用范圍的靈活性和有效性。關(guān)系數(shù)據(jù)庫的基礎(chǔ)就是數(shù)據(jù)的有效性,因此,在應(yīng)用關(guān)系數(shù)據(jù)庫技術(shù)時,需要重復(fù)結(jié)合對象技術(shù),有針對的實(shí)現(xiàn)計算機(jī)網(wǎng)絡(luò)對數(shù)據(jù)集的功能。此外,針對關(guān)系數(shù)據(jù)庫存在不合理的產(chǎn)品,可在綜合事務(wù)處理中進(jìn)行及時糾正處理,全面體會網(wǎng)絡(luò)數(shù)據(jù)系統(tǒng)的開放性和可擴(kuò)展性。在關(guān)系數(shù)據(jù)庫中結(jié)構(gòu)比較清晰,簡潔,配置協(xié)議的錄入也可以輕松實(shí)現(xiàn),并且協(xié)議中的數(shù)量,對網(wǎng)絡(luò)涉及的難易程度并不會造成較大影響,大大提升了網(wǎng)絡(luò)設(shè)計的可操作。關(guān)系數(shù)據(jù)庫訪問對象和網(wǎng)絡(luò)設(shè)計形式之間具有非常密切的聯(lián)系,因此,在進(jìn)行計算機(jī)網(wǎng)絡(luò)訪問系統(tǒng)設(shè)計過程中,要充分結(jié)合關(guān)系數(shù)據(jù)庫,可通過C語言編程的使用來完成訪問工作。

(二)存儲功能的實(shí)現(xiàn)

在網(wǎng)絡(luò)數(shù)據(jù)處理中,XML(可擴(kuò)展標(biāo)記語言)是進(jìn)行數(shù)據(jù)轉(zhuǎn)換的主要標(biāo)準(zhǔn),通過描述數(shù)據(jù)自身的意義來實(shí)現(xiàn)數(shù)據(jù)實(shí)體間復(fù)雜嵌套的關(guān)系連接。因此存儲功能的實(shí)現(xiàn)主要包括以下兩個方面:1.結(jié)構(gòu)映射XML中文件類型定義比較復(fù)雜,需要先進(jìn)行簡化處理,生成文件類型定義圖,具有的簡化流程為:先進(jìn)行層次嵌套關(guān)系的平面優(yōu)化轉(zhuǎn)換處理,將其轉(zhuǎn)換為非嵌套定義;然后再對多個一元操作進(jìn)行簡化轉(zhuǎn)換;最后把聚集轉(zhuǎn)換為多個子元素,通過整合和歸類的作用,構(gòu)成一個子元素。在具體簡化過程中,要完成文件類型定義圖像關(guān)系模式的映射,通過共享內(nèi)聯(lián)法,為文件類型定義提供達(dá)先對獨(dú)立的關(guān)系。再通過綜合內(nèi)聯(lián)法,在父節(jié)點(diǎn)形成的關(guān)系表中,除直接后繼節(jié)點(diǎn)之外,內(nèi)聯(lián)和入度都超過1的元素節(jié)點(diǎn)。2.模型映射XML文檔在存儲過程中,常用的方法有兩種,一種是Edge法,主要過程為把XML文檔當(dāng)做圖形結(jié)構(gòu)進(jìn)行處理,并在相應(yīng)的關(guān)系表中,完成邊界存儲,而目標(biāo)節(jié)點(diǎn)的區(qū)分通過flag來實(shí)現(xiàn)。Source主要應(yīng)用在資源節(jié)點(diǎn)存儲中,target則主要應(yīng)用目標(biāo)節(jié)點(diǎn)標(biāo)識符的儲存中。

(三)轉(zhuǎn)換功能的實(shí)現(xiàn)

篇8

2客戶關(guān)系數(shù)據(jù)庫相似重復(fù)記錄清洗算法

經(jīng)研究大量的企業(yè)客戶關(guān)系數(shù)據(jù)庫,發(fā)現(xiàn)客戶關(guān)系數(shù)據(jù)表的屬性個數(shù)均不多,一般為10個左右,且客戶信息基本包含了姓名、性別、身份證號、住址等屬性.對于住址等屬性由于描述方式不一或采用簡寫等方面的原因,造成同一個人在同一張表中出現(xiàn)了多條住址不一樣的記錄.然而如果兩條或多條記錄相似重復(fù),其姓名、性別和身份證號等屬性必定相同,所以對于客戶關(guān)系數(shù)據(jù)表判重前的排序使用“姓名+性別+身份證號”的多關(guān)鍵字排序方式.經(jīng)排序,相似和重復(fù)記錄已位于鄰近的區(qū)間內(nèi).在排序的基礎(chǔ)上,對相鄰數(shù)據(jù)記錄進(jìn)行比對,如構(gòu)成相似重復(fù)記錄,則進(jìn)行合并,合并后刪除原來的兩條記錄,將新合并的記錄插入數(shù)據(jù)表,然后用新合并的記錄和之后的記錄再進(jìn)行比對,以此類推.記錄的排序、合并和刪除實(shí)現(xiàn)起來均非常簡單,所以清洗中最麻煩的一環(huán)便是數(shù)據(jù)記錄的比對即相鄰記錄相似重復(fù)的判定.此外,客戶關(guān)系數(shù)據(jù)庫中常出現(xiàn)許多無用的數(shù)據(jù),即“廢卡”信息,為了減少這些“臟數(shù)據(jù)”占用系統(tǒng)資源,也為了提高相似重復(fù)記錄的清洗速度,在相似重復(fù)記錄清洗前有必要對這些數(shù)據(jù)先行清洗.由于客戶關(guān)系數(shù)據(jù)庫都會記錄卡片使用情況,如用卡時間等信息,可以根據(jù)這些信息對所有的記錄進(jìn)行掃描,導(dǎo)出無用的數(shù)據(jù),由人工方式判斷是否予以刪除.

篇9

關(guān)鍵詞:關(guān)系數(shù)據(jù)庫 關(guān)鍵詞查詢 數(shù)據(jù)庫索引

1 系統(tǒng)總體設(shè)計

人們在求解一個復(fù)雜問題時,通常采用的是逐步分解、分而治之的方法。也就是把一個大問題分解成若干個比較容易求解的小問題,然后分別求解。設(shè)計一個復(fù)雜的系統(tǒng)時,往往也是把整個系統(tǒng)劃分為若干個功能較為單一的功能模塊,然后分別予以設(shè)計、實(shí)現(xiàn),這就是模塊化設(shè)計。本系統(tǒng)也采用這種模塊化設(shè)計方式。

圖1 面向關(guān)系數(shù)據(jù)庫關(guān)鍵字查詢系統(tǒng)框圖

2 數(shù)據(jù)庫設(shè)計

本系統(tǒng)為面向關(guān)系數(shù)據(jù)庫的關(guān)鍵字查詢系統(tǒng),在實(shí)驗(yàn)中本文選取了IMDB 數(shù)據(jù)集,為了進(jìn)行實(shí)驗(yàn),將數(shù)據(jù)集整理為以下七個表數(shù)據(jù)結(jié)構(gòu)。

實(shí)驗(yàn)數(shù)據(jù)集(電影信息數(shù)據(jù)庫):

create table Actor( //演員表

actorname varchar(50) Primary Key ; //演員姓名key

sex varchar(2); //性別

mvname varchar(50); //出演電影或電視劇名

mvyear varchar(10); //電影上映時間

mvactorname varchar(10); //電影中人物姓名

position varchar(20); //電影中人物排名

made varchar(10); //TV 或是Video

setname varchar(50); //出演電視劇集名

episode varchar(10); //出演電視劇集

date varchar(10); //電視劇播出日期

classification varchar(30); //(achieve football)

creat table Consume( //設(shè)計師

consumename varchar(20) Primary Key; //設(shè)計師姓名key

mvname varchar(20); //電影名或電視劇名

mvyear varchar(10); //上映日期

setname varchar(20); //電視劇集名

episode varchar(10); //電視劇集

productiondate varchar(10); //電視劇播放日期

classification varchar(30); //(as M...)

made varchar(10); ///(V/TV/uncredited)

creat table Director( //導(dǎo)演信息

directorname varchar(20) Primary Key; //導(dǎo)演姓名key

mvname varchar(20); //電影或電視劇名

mvyear varchar(10); //上映日期

setname varchar(20); //電視劇集名

episode varchar(20); //電視劇集

made varchar(10); //(V/TV/VG)

explantaion varchar(30); //(as M...)

creat table Business( //投資

mvname varchar(20) Primary Key; //電影名key

productiondate varchar(20); //拍攝日期

company varchar(50); //出品公司

studiodate varchar(50); //上映日期

masterpiece varchar(1000);///OW

budget varchar(20); //預(yù)算

ad varchar(50); ///AD

general_revenue varchar(20); //收入

wg varchar(50); //WG

editorname varchar(20) Primary Key; //編輯名

mvname varchar(20); //電影或電視劇名key

mvyear varchar(10); //上映日期

made varchar(10); //(V/TV/video)

setname varchar(20); //電視劇集名key

episode varchar(20); //電視劇集key

explantaion varchar(30); //(as M...)

creat table Color { //顏色信息

mvname varchar(20); //電影或電視劇名key

mvyear varchar(10); //上映日期

setname varchar(20); //電視劇集名key

episode varchar(20); //電視劇集key

color varchar(20); //顏色分類color或black and white

explantaion varchar(10); //顏色分類之后的()中有(HD)等,(HD)是高清

Primary Key(mvname,setname,episode);

}

creat table Keyword( //關(guān)鍵詞

mvname varchar(20); //電影或電視劇名key

mvyear varchar(10); //上映日期

setname varchar(20); //電視劇集名key

episode varchar(10); //電視劇集key

keyword varchar(50); //關(guān)鍵詞

Primary Key(mvname,setname,episode);

3 數(shù)據(jù)庫索引設(shè)計

由于關(guān)系型數(shù)據(jù)庫對于文本屬性上全文索引的支持,所以在文本屬性可以直接利用數(shù)據(jù)庫中的全文索引。對于給定的關(guān)鍵字k,全文索引能檢索出查詢關(guān)鍵字所在位置。

對于數(shù)據(jù)庫中的表屬性,構(gòu)建索引的方式比較簡單,依賴于DBMS的IR索引。對于數(shù)據(jù)庫中具有文本屬性的列,在該列上建立全文索引。在進(jìn)行關(guān)鍵字查詢時,對于給定的關(guān)鍵字,通過數(shù)據(jù)庫的全文索引,會返回包含該關(guān)鍵字的元組集合。

在進(jìn)行關(guān)鍵字查詢的時候,對于用戶給定查詢關(guān)鍵字,系統(tǒng)首先要對給定的關(guān)鍵字進(jìn)行定位,確定關(guān)鍵字所匹配的信息是模式項(xiàng)還是數(shù)值項(xiàng)。

例如,關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)如表1所示。

表1 關(guān)鍵字{“Color”“Director”}的索引結(jié)構(gòu)

4 關(guān)鍵字檢索設(shè)計

在搜索引擎行業(yè),所謂關(guān)鍵字,就是用戶在使用搜索引擎時輸入的、能夠最大程度概括用戶所要查找的信息內(nèi)容的字或者詞,是信息的概括化和集中化。關(guān)鍵字檢索作為一種易于使用的檢索方式,為大量普通用戶所喜愛。本文從關(guān)鍵字個數(shù)角度介紹現(xiàn)有的關(guān)鍵字檢索技術(shù)中最常見的單關(guān)鍵字查詢和多關(guān)鍵字查詢這兩種關(guān)鍵字檢索形式。

5 結(jié)果生成設(shè)計

在本文中,將查詢結(jié)果定義為元組連接樹。

元組連接樹(Joined Tuple Tree)是給定一個數(shù)據(jù)庫模式圖GS,一個元組連接樹T是一棵元組樹。其中,T中的每一條邊(ti,tj)(ti∈Ri,tj∈Rj)滿足以下兩個要求:

①(Ri,Rj)∈RS,

②ti∞tj∈Ri∞Rj。

同時這些元組連接樹滿足以下條件:

①完整性:用戶提交的所有關(guān)鍵字均出現(xiàn)在元組連接樹上;

②最小性:從元組連接樹中移除任何元組后的元組連接樹都不具有完整性。

6 結(jié)束語

通過分析相關(guān)檢索系統(tǒng)的實(shí)現(xiàn)策略,設(shè)計了支持關(guān)鍵字檢索的系統(tǒng)架構(gòu)和核心構(gòu)成組件,主要包括數(shù)據(jù)庫索引、數(shù)據(jù)庫模式圖、關(guān)鍵字檢索和結(jié)果生成。

參考文獻(xiàn):

篇10

隨著計算機(jī)技術(shù)的發(fā)展,計算機(jī)應(yīng)用系統(tǒng)的開發(fā)越來越多,需要大批掌握大型關(guān)系數(shù)據(jù)庫的專業(yè)技術(shù)人員,培養(yǎng)和造就這樣的專業(yè)人員已經(jīng)成為時代的需求,是大學(xué)計算機(jī)教學(xué)中一個十分重要的方面。由于大型數(shù)據(jù)庫在計算機(jī)應(yīng)用系統(tǒng)開發(fā)中的重要地位和作用,突出抓好大型關(guān)系數(shù)據(jù)庫的教學(xué)已經(jīng)別無選擇。同時,大型關(guān)系數(shù)據(jù)庫是一門實(shí)踐性很強(qiáng)的課程,學(xué)生在學(xué)習(xí)完數(shù)據(jù)庫基礎(chǔ)理論后,通過大型關(guān)系數(shù)據(jù)庫的學(xué)習(xí),可以深化數(shù)據(jù)庫理論的理解,提高并培養(yǎng)綜合運(yùn)用知識、解決實(shí)際問題的能力。對學(xué)生科研能力、工程能力和創(chuàng)新能力的培養(yǎng)具有重要作用。因此,對這門課的教學(xué)模式值得進(jìn)行認(rèn)真的研究與探討。

1大型關(guān)系數(shù)據(jù)庫Oracle的教學(xué)現(xiàn)狀

隨著社會對大型應(yīng)用系統(tǒng)開發(fā)要求的日益增多,大型數(shù)據(jù)庫開發(fā)相關(guān)的人才需求也不斷增加,比如:Oracle、SQL SERVER和DB2的數(shù)據(jù)庫管理員等,特別是Oracle數(shù)據(jù)庫管理員,在比較大型的網(wǎng)絡(luò)應(yīng)用中需求量更大。太原理工大學(xué)五年前就在選修課中開設(shè)了“大型關(guān)系數(shù)據(jù)庫Oracle”。但是大型關(guān)系數(shù)據(jù)庫Oracle技術(shù)要求高,實(shí)踐性要求很強(qiáng),加之學(xué)校存在教學(xué)管理、資金投入以及師資力量不足等諸多因素的困擾,使得這門課的教學(xué)質(zhì)量很難盡如人意,存在較為嚴(yán)重的不足與缺陷,具體表現(xiàn)如下。

1.1沒有合適的教材和合理的大綱

我校計算機(jī)系最初采用Oracle公司廠家提供的培訓(xùn)教材,其內(nèi)容較多,分體系框架、PL/SQL指令、性能調(diào)整和備份與恢復(fù)等內(nèi)容[1],而大學(xué)教學(xué)中該課程的學(xué)時有限,教學(xué)過程中很難做到面面俱到,要想讓學(xué)生更進(jìn)一步深入領(lǐng)會并形成應(yīng)用能力存在一定困難。后來學(xué)校又采用了ORACLE的技術(shù)書籍進(jìn)行教學(xué),但是這些書籍基本側(cè)重點(diǎn)各不相同,導(dǎo)致教學(xué)過程中內(nèi)容不夠全面,重點(diǎn)難點(diǎn)不易把握,教學(xué)效果也不十分理想,很難適應(yīng)高校教學(xué)的需要,很難滿足學(xué)生求知的欲望,更主要的是不能夠適應(yīng)社會的需求。

1.2重理論,輕實(shí)踐

在這么幾年的ORACLE教學(xué)摸索中,由于學(xué)校數(shù)據(jù)庫服務(wù)器和網(wǎng)絡(luò)條件的限制,更多地關(guān)注的是理論教學(xué),許多交互性演示的例子也是用PPT展示,學(xué)生很少參與甚至不參與具體的操作過程,導(dǎo)致學(xué)生很少接觸到解決實(shí)際問題的環(huán)節(jié),給學(xué)生的感性認(rèn)識不強(qiáng)。再加上配套的教學(xué)實(shí)驗(yàn)環(huán)節(jié)較少或根本沒有,學(xué)生很難有動手機(jī)會,使理論與實(shí)踐得不到銜接,影響了學(xué)生綜合素質(zhì)的提高。

1.3重技術(shù),輕應(yīng)用

即使在教學(xué)環(huán)境和條件具備情況下,有的教學(xué)過程也只是滿足于讓學(xué)生掌握知識點(diǎn),至于這些知識點(diǎn)在實(shí)際開發(fā)中如何應(yīng)用,知識點(diǎn)之間如何貫穿聯(lián)系等相關(guān)綜合性素質(zhì)的培養(yǎng),沒有滲透到教學(xué)中,導(dǎo)致學(xué)生的知識停留在點(diǎn)多線短,缺乏聯(lián)系的層面,不能形成較為系統(tǒng)綜合的結(jié)構(gòu)體系。比如觸發(fā)器,很多人只知道它的定義,會編寫,但是在一個項(xiàng)目中何時用、怎樣用等內(nèi)容,在教學(xué)中則很少涉及,使學(xué)生感覺所學(xué)的知識與實(shí)際應(yīng)用存在較大的差距。

這些問題和不足已經(jīng)引起一定程度上的關(guān)注和重視,我們學(xué)校在不斷加大對大型關(guān)系數(shù)據(jù)庫教學(xué)的改進(jìn)力度的同時,積極組織編寫適合高校教學(xué)的相關(guān)教材,逐步嘗試加大教學(xué)實(shí)驗(yàn)環(huán)節(jié)的學(xué)時數(shù),增加實(shí)訓(xùn)、項(xiàng)目模擬等項(xiàng)內(nèi)容,給學(xué)生以更多實(shí)踐的機(jī)會,提高其綜合應(yīng)用所學(xué)基礎(chǔ)理論知識的意識和實(shí)際動手的能力,為造就更多學(xué)識豐厚、技術(shù)高超、學(xué)以致用的高素質(zhì)人才,為不斷滿足時代和社會對數(shù)據(jù)庫技術(shù)人才的需求,創(chuàng)造了一定的教育教學(xué)條件。

2教學(xué)模式的改進(jìn)方法

針對目前存在的問題,進(jìn)行大型關(guān)系數(shù)據(jù)庫課程教學(xué)的改革嘗試,我們認(rèn)為應(yīng)該注重把握好以下幾個方面。

2.1精心挑選、把握精髓,選擇較好的教材

Oracle數(shù)據(jù)庫的廠家標(biāo)準(zhǔn)培訓(xùn)教材和相關(guān)的科技書籍不能拿來就用。首先必須根據(jù)大學(xué)教學(xué)大綱的培養(yǎng)目標(biāo)要求,從中選取適合學(xué)生的內(nèi)容。我們知道大型關(guān)系數(shù)據(jù)庫課程要培養(yǎng)的是能夠進(jìn)行數(shù)據(jù)庫設(shè)計、開發(fā)和維護(hù)的數(shù)據(jù)庫管理員(DBA)[2]。一般情況下,數(shù)據(jù)庫管理人員分為三類:軟件開發(fā)型DBA,軟件維護(hù)型DBA和系統(tǒng)設(shè)計型DBA。本科教育教學(xué)大綱要求培養(yǎng)的是兼顧前一、二類的高素質(zhì)人才。所以,在教學(xué)教材內(nèi)容的選取上,就要著眼于Oracle數(shù)據(jù)庫的基本編程操作和基本管理能力的培養(yǎng),而把數(shù)據(jù)庫的系統(tǒng)架構(gòu)和性能調(diào)整等內(nèi)容放在次要的地位,指導(dǎo)幫助學(xué)有余力的學(xué)生自學(xué),以豐富其知識積累。在基本編程操作教學(xué)過程中,要注重對數(shù)據(jù)庫的數(shù)據(jù)操縱語句DCL、數(shù)據(jù)查詢語句DQL和過程編程語句PL/SQL的把握,而對數(shù)據(jù)定義語句DDL等讓學(xué)生了解即可。在基本管理教學(xué)過程中,限于教學(xué)課時的制約,可以適當(dāng)傾向于用戶管理、權(quán)限管理、基本對象管理等方面內(nèi)容的學(xué)習(xí),而將其他的技術(shù)管理內(nèi)容作為學(xué)生的自學(xué)內(nèi)容。這樣可以使教學(xué)工作做到學(xué)有目標(biāo)、富有實(shí)效,學(xué)生學(xué)習(xí)做到入門快、有興趣、收益大。其次,要本著管用有效、突出重點(diǎn)的原則篩選教學(xué)內(nèi)容,選擇計算機(jī)應(yīng)用系統(tǒng)實(shí)際開發(fā)中常用、多見的知識,組織開展教學(xué),引導(dǎo)學(xué)生掌握精華和要害,使學(xué)生能夠充分利用有限的時間,學(xué)到最具實(shí)用價值的知識和技術(shù)。

2.2把握理論和實(shí)驗(yàn)相結(jié)合這一教學(xué)過程中的關(guān)鍵點(diǎn)

大型關(guān)系數(shù)據(jù)庫實(shí)踐性很強(qiáng),光講理論和架構(gòu),學(xué)生不容易掌握,難以形成能力,所以應(yīng)該強(qiáng)化實(shí)驗(yàn)。這門課的教學(xué)共有32個學(xué)時,我們現(xiàn)在把相關(guān)理論知識壓縮在12學(xué)時內(nèi)講授完畢,用剩余的20個學(xué)時,讓學(xué)生做24個實(shí)驗(yàn),通過這些實(shí)驗(yàn),引導(dǎo)學(xué)生掌握數(shù)據(jù)庫對象管理、數(shù)據(jù)庫編程基本操作、數(shù)據(jù)庫安全管理、文件管理、表空間管理、備份管理、狀態(tài)監(jiān)測等方面的操作技能[3]。使學(xué)生能夠兼具理論性和動手實(shí)踐能力,有效地了解和掌握Oracle數(shù)據(jù)庫系統(tǒng)操作和管理。

2.3注重知識點(diǎn)在工程開發(fā)實(shí)例中的綜合運(yùn)用

掌握了數(shù)據(jù)庫的基本理論和基本操作技能后,如何在實(shí)踐開發(fā)中應(yīng)用所學(xué)知識,就應(yīng)當(dāng)成為我們教師和學(xué)生共同關(guān)注的問題[4]。因此,有必要在大型關(guān)系數(shù)據(jù)庫Oracle的教學(xué)過程中,引入Oracle工程開發(fā)。在我校的ORACLE課程的內(nèi)容中,我們以一個學(xué)生成績管理系統(tǒng)為例,從系統(tǒng)的需求分析開始,介紹實(shí)體關(guān)系設(shè)計、系統(tǒng)邏輯結(jié)構(gòu)設(shè)計、系統(tǒng)物理結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫實(shí)施、系統(tǒng)存儲過程設(shè)計、觸發(fā)器設(shè)計、數(shù)據(jù)導(dǎo)出和初始化設(shè)計等,在全過程實(shí)例系統(tǒng)開發(fā)中,讓學(xué)生體會數(shù)據(jù)庫技術(shù)在項(xiàng)目開發(fā)中的應(yīng)用,同時掌握各個知識點(diǎn)在實(shí)踐中的綜合運(yùn)用。這部分作為學(xué)生了解的內(nèi)容,課時為4學(xué)時左右,建議在有條件的學(xué)校,可以類設(shè)計一個大的課程設(shè)計題,要求學(xué)生模擬項(xiàng)目開發(fā)中數(shù)據(jù)庫開發(fā)的全過程。我校教學(xué)實(shí)踐證明,這樣做的效果非常好,不但鞏固了課堂教學(xué)知識,同時促使學(xué)生發(fā)揮主動性,掌握很多其他數(shù)據(jù)庫課堂上沒有來得及涉及的內(nèi)容。

3總結(jié)與展望

設(shè)立大型關(guān)系數(shù)據(jù)庫選修課的目的,就是要培養(yǎng)適應(yīng)社會需求的具有實(shí)踐能力和創(chuàng)新精神的數(shù)據(jù)庫管理技術(shù)人才。在現(xiàn)有的教學(xué)資源條件下,如何有效地進(jìn)行教學(xué)改革、完成教學(xué)目標(biāo)、培養(yǎng)合格人才,已經(jīng)成為該項(xiàng)課程教學(xué)的迫切任務(wù)。

對于教學(xué)內(nèi)容和教學(xué)方法這兩個教學(xué)中的關(guān)鍵點(diǎn),我們提出如下的改進(jìn)思路:精選教學(xué)內(nèi)容、加強(qiáng)實(shí)驗(yàn)環(huán)節(jié)和注重工程實(shí)踐。

大型關(guān)系數(shù)據(jù)庫的教學(xué)對教師和學(xué)生提出了更高的要求,需要在教學(xué)實(shí)踐中勤于探索,即時總結(jié),不斷改進(jìn),以明確的培養(yǎng)目標(biāo)來選擇教學(xué)內(nèi)容,以具體的實(shí)際應(yīng)用為教學(xué)導(dǎo)向,以真實(shí)的系統(tǒng)開發(fā)設(shè)計實(shí)踐為重點(diǎn)[5],就能夠在教學(xué)實(shí)踐中取得好的教學(xué)效果,提高學(xué)生的理論與實(shí)踐水平,培養(yǎng)學(xué)生的專業(yè)素養(yǎng)。只要我們真誠地為學(xué)生著想,為社會服務(wù),就一定能夠使大學(xué)教育教學(xué)工作受到學(xué)生的歡迎,得到社會的承認(rèn),不斷提高我們的辦學(xué)水平,為國家為社會培養(yǎng)更多更好的有用人才,服務(wù)社會主義和諧社會建設(shè),推動中華民族的偉大復(fù)興。

參考文獻(xiàn):

[1] 安志遠(yuǎn). 數(shù)據(jù)庫系統(tǒng)原理及應(yīng)用實(shí)訓(xùn)教程[M]. 北京:中國水利水電出版社,2004.

[2] 羅瓊. 數(shù)據(jù)庫應(yīng)用型課程的設(shè)置與實(shí)踐[J]. 科技信息, 2009(15):36-37.

[3] 員亞利,高春玲,陳紅梅. 計算機(jī)專業(yè)“大型數(shù)據(jù)庫”課程教學(xué)研究與實(shí)踐[J]. 計算機(jī)教育, 2008(12):3-4.

[4] 祝朝映. 任務(wù)驅(qū)動在計算機(jī)教學(xué)中的探索與實(shí)踐[J]. 教職論壇,2003,(10):56-57.

[5] 向琳,左德承,羅丹彥,等. “計算機(jī)設(shè)計與實(shí)踐”課程創(chuàng)新性實(shí)踐教學(xué)探索[J]. 計算機(jī)教育,2007(3):16-18.

The Improvement of the Teaching Pattern of Large-scale Relational Database Oracle

QIANG Yan