程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 一個MYSQL樣例數據庫

一個MYSQL樣例數據庫

編輯:關於MYSQL數據庫

  本節介紹一個樣例數據庫,這個數據庫在本書各個部分都可能用到。在學習將MySQL投入工作時,這個數據庫為您提供了參考的例子。我們主要從前面描述過的兩種情形來給出例子:

  ■ 機構的秘書方案。我們需要一些比“機構”更為明確的信息,所以現在就來構造一個,它具有這樣一些特性:它由為了研究美國歷史這個共同目的而聚集在一起的一群人組成(一時找不到更好的名稱,就暫且稱為美國歷史同盟)。在交會費的基礎上定期更新

各會員的資格。會費構成了此同盟的活動經費,如出版報紙“美國編年歷”。此聯盟也有一個小Web 站點,但開發出的功能不多。迄今這個站點只限於提供一些基本的信息,如本團體的性質,負責人是誰,什麼樣的人可以參加等。

  ■ 學分保持方案。在學分時段中,需要管理被測試者、記錄得分並賦予得分等級。然後確定最後的得分等級,將其與出勤率一道交給學校辦公室。現在讓我們根據如下兩個要求來進一步考慮這些情況:

  ■ 必須確定希望從數據庫中得到什麼信息,即,希望達到什麼目的。

  ■ 必須計劃好要向數據庫輸入什麼,即將要保存什麼數據。或許,在考慮向數據庫輸入什麼數據以前,逆向考慮一下需要從數據庫輸出什麼數據。在能夠對數據進行檢索前,必須將數據送入數據庫。但是,使用數據庫的方法是受您的目標驅動的,這些方法與希望從數據庫取出何種信息的關系較之與向數據庫輸入何種信息的關系更為緊密。除非打算以後使用這些信息,否則肯定不會浪費時間和精力將它們輸入數據庫。

  1.2.1美國歷史同盟這個方案的初期狀況是您作為同盟的秘書,利用字處理文檔維護會員清單。這樣就生成一個打印的姓名地址錄來說還是可以應付的,但是在利用這些信息做別的事時就會受到限制。假定您打算做下列工作:

  ■ 希望能夠利用該姓名地址錄產生不同格式的輸出,並且只給出相應用途所需的信息。目標之一是生成每年的打印姓名地址錄,這是該同盟過去就需要的,您打算繼續打印。除此之外,可以設想將姓名地址錄中的信息派一些別的用途,如在同盟的年度宴會上

所提供的節目單中給出一個當前的會員清單。這個應用涉及不同的信息集合。打印的姓名地址錄中使用了每個會員條目的所有內容。而對於宴會節目單,只需要取出會員名字即可(如果采用字處理器要做到這一點有時是不太容易的)。

  ■ 希望搜索姓名地址錄查找其條目滿足某些條件的會員。例如,希望知道哪些會員不久就需要更新其會員資格。另外涉及搜索的應用是由於需要維護每個會員的關鍵字列表而產生的。這些關鍵字描述了每個會員特別感興趣的美國歷史的某個方面(如內戰、經濟蕭條、公民權利或托馬斯·傑佛遜的生活等)。會員們有時會向您要一份與他們自己有類似愛好的會員的清單,您一定樂於滿足他們的這種要求。

  ■ 希望讓姓名地址名錄在同盟的Web 站點上聯機使用。這對會員和您都是很有好處的。如果您能夠將姓名地址錄用某種合適的自動過程轉換為Web 頁,則這個姓名地址錄的聯機版就可以一種比打印版更及時的方式保持最新信息。而且如果能使這個聯機姓名地址錄可供搜索,那麼會員就能夠自己方便地查找信息了。例如,某個會員希望知道其他對內戰感興趣的會員,他就可以自己將這些會員找出而不用請您幫他查找,而您也不用花時間去做這件事了。我們清楚地知道,數據庫並不是世界上最令人激動的東西,因此,我們也不打算狂熱地

聲稱,使用數據庫可以促進創造性的思維。但是,當您停止將信息視為某種必須與之搏斗的東西(在用字處理文檔時確實是這樣的),並開始將其想像為某種可以相對容易地操縱的事物(正如希望用MySQL所做到的那樣)時,您提出某種使用或表示信息的新方法的能力將會得到某種程度的解放,例如下面這些例子就是一些新方法:

  ■ 如果數據庫中的信息能夠以聯機姓名地址錄的形式移到Web 站點中,那麼您可能會讓信息以其他的方式流動。例如,如果會員能夠聯機編輯自己的條目,對數據庫進行更新,那麼您就不必自己做所有的編輯工作了,這樣有助於使姓名地址錄中的信息更為准確。

  ■ 如果您在數據庫中存儲Email 地址,那麼可以利用它們來發送Email 給那些相當長的一段時間沒有更新自己的條目的會員。發出的消息可以向這些會員顯示他們的條目內容,請他們查看,然後指示怎樣利用Web 站點提供的實用工具做所需的修改。

  ■ 數據庫不僅以關聯到會員表的方式幫助使Web 站點更為有用。比方說,同盟出版了一份報紙“美國編年史”,每一期中都有一個給小孩子的版面,內含歷史試題。最近有幾期主要集中在美國總統的傳記上。同盟的Web 站點也可以包含給孩子的版面,這樣使試題聯機。通過放置從數據庫中取出的試題並讓Web 服務器對隨機給出的問題進行查詢,或許甚至可以使這個版面成為交互式的。

  至此,您可能已經想起了許多數據庫的用途,這使您有點不能自控了。在回到現實之前,您開始問一些特殊的問題:

  ■ 這是不是有點野心勃勃了?在准備時是不是要做大量的工作?當然,如果只是想而不去做,則任何事情都很簡單,我並不偽稱上述所有事情實現起來都是微不足道的。然而,在本書結束時,我們所描述的這些事都實現了。只需記住一件事,沒必要一次做完所有的事。我們將對工作進行分解,每次只做一部分。

  ■ MySQL能夠完成所有這些事嗎?不,它不能夠。例如,MySQL沒有直接的Web 能力。雖然由MySQL自身不能完成我們所討論的每樣事情,但是可以得到與MySQL一起工作的工具,從而完善和擴展了MySQL的能力。我們將用Perl 腳本語言和DBI(數據庫接口)Perl 模塊來編寫訪問MySQL數據庫的腳本。Perl 具有極為出色的文本處理能力,它允許以一種高度靈活的方式處理查詢結果以產生各種格式的輸出。例如,我們可以用Perl 來生成多信息文本格式( RT F)的姓名地址錄,這是一種可被所有字處理器讀取的格式。我們也可以使用另一種腳本語言PHP。PHP 特別適合於編寫Web 應用,而且它與數據庫一起工作。這使得能從Web 頁運行MySQL查詢並生成包含數據庫查詢結果的新頁。PHP 與apache(世界上最流行的Web 服務器)一起工作得很好,這使得完成諸如給出一個搜索窗口並顯示搜索結果之類的事情很容易。MySQL與這些工具集成得很好,並向您提供了以自己的方式組合它們的靈活性,可以進行選擇以實現您的設想。不用受限於那些大肆推銷的所謂“集成”功能而實際工作起來也只是彼此之間的固定組合。

  ■ 最後,有一個大問題,那就是所有這些東西要花多少錢?首先,同盟的預算是有限的。回答是,大概什麼錢也不用花,這可能會令您吃驚。如果您熟悉一般的數據庫系統,就會知道,它們一般相當昂貴。但是, MySQL一般是免費的。在某些環境下,確實不

需要許可證,而且如果用戶數量不限也只需花$200。(關於許可證的一般介紹請參閱前言,特定的細節可參閱MySQL參考指南。)我們將使用的其他工具( Perl、DBI、PHP、apache)也是免費的,因此,所有東西都考慮到了,可以相當便宜地組成一個有用的系統。開發這個數據庫的操作系統的選擇取決於您。我們介紹的所有軟件都可運行在UNIX 下,其中大多數可以運行在Windows 下。作者推薦在UNIX 下運行MySQL和其他工具。它們全都是發源於UNIX 下,然後才轉到Windows的。這表示它們的Windows 版本成熟期較短,尚未經過徹底的測試和使用。

  現在,讓我們來考慮一下使用樣例數據庫的其他情形。

  1.2.2 學分保存方案

  初步的想法是,作為一個老師,有保存學分的職責。老師希望將學分處理從學分簿上的手工操作轉到MySQL上用電子表示。在此情形下,想從數據庫得到的是含在學分簿中的東西:

  ■ 對於每次測驗或測試,要記錄學分。對測試,將學分排序,以便能確定每個字符( A、B、C、D 和F)所代表等級的得分范圍。

  ■ 在學分時段結束時,計算每個學生的總得分,然後排序總的得分並根據它們確定得分等級。總的得分可能涉及權重計算,因為大概會希望使測試的得分比測驗和得分權重更大。

  ■ 在每個學分時段結束時,提供出勤信息給學校辦公室。目的是避免手工排序和匯總學分及出勤率記錄。換句話說,希望MySQL在學分時段結束時對學分排序並完成每個學生的總分和缺課數的計算。為了達到這個目的,需要班級中的學生名冊、每次測驗和測試的分數以及學生缺課的日期。

  1.2.3 樣例數據庫怎樣才能滿足需求

  如果您對歷史同盟或學分保存不太感興趣,可能會奇怪為什麼必須做這些例子呢?答案是這些樣例方案本身並不是目的,只是用它們說明利用MySQL及其相關的工具能做什麼事。加上一點想像,您將會看到樣例數據庫的查詢怎樣應用到所希望解決的問題上。假設您在前面提到的牙科診所上班,將會在本書中看到許多牙科方面的查詢。例如,確定歷史同盟的哪些會員需要立即更新他們的會員資格,這是一件類似於確定哪些病人近來沒有來看牙醫的事情。兩者都是基於日期的查詢,因此,一但學會了編寫會員更新的查詢,便可以將該技術用來編寫更為感興趣的延誤的預約病人查詢。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved