什麼是數據庫? 數據庫是以某種文件結構存儲的一系列信息表,這種文件結構使您能夠訪問這些表、選擇表中的列、對表進行排序以及根據各種標准選擇行。數據庫通常有多個 索引與這些表中的許多列相關聯,所以我們能盡可能快地訪問這些表。
以員工記錄為例,您可以設想一個含有員工姓名、地址、工資、扣稅以及津貼等內容的表。讓我們考慮一下這些內容可能如何組織在一起。您可以設想一個表包含員工姓名、地址和電話號碼。您希望保存的其它信息可能包括工資、工資范圍、上次加薪時間、下次加薪時間、員工業績評定等內容。
這些內容是否應保存在一個表格中?幾乎可以肯定不應該如此。不同類別的員工的工資范圍可能沒有區別;這樣,您可以僅將員工類型儲存在員工記錄表中,而將工資范圍儲存在另一個表中,通過類型編號與這個表關聯。考慮以下情況:
Key Lastname SalaryType SalaryType Min Max
1 Adams 2 1 30000 45000
2 Johnson 1 2 45000 60000
3 Smyth 3 3 60000 75000
4 Tully 1
5 Wolff 2
SalaryType 列中的數據引用第二個表。我們可以想象出許多種這樣的表,如用於存儲居住城市和每個城市的稅值、健康計劃扣除金額等的表。每個表都有一個主鍵列(如上面兩個表中最左邊的列)和若干數據列。在數據庫中建立表格既是一門藝術,也是一門科學。這些表的結構由它們的范式指出。我們通常說表屬於1NF、2NF 或 3NF。
第一范式:表中的每個表元應該只有一個值(永遠不可能是一個數組)。(1NF)
第二范式:滿足 1NF,並且每一個非主鍵列完全依靠於主鍵列。這表示主鍵和該行中的剩余表元之間是 1 對 1 的關系。(2NF)
第三范式:滿足 2NF,並且所有非主鍵列是互相獨立的。任何一個數據列中包含的值都不能從其他列的數據計算得到。(3NF)
現在,幾乎所有的數據庫都是基於“第三范式 (3NF)”創建的。這意味著通常都有相當多的表,每個表中的信息列都相對較少。
從數據庫中獲取數據
假設我們希望生成一個包含員工及其工資范圍的表,在我們設計的一個練習中將使用這個表。這個表格不是直接存在在數據庫中,但可以通過向數據庫發出一個查詢來構建它。我們希望得到如下所示的一個表:
Name Min Max
Tully $30,000.00 $45,000.00
Johnson $30,000.00 $45,000.00
Wolff $45,000.00 $60,000.00
Adams $45,000.00 $60,000.00
Smyth $60,000.00 $75,000.00
我們發現,獲得這些表的查詢形式如下所示
SELECT DISTINCTROW Employees.Name, SalaryRanges.Min,
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
這種語言稱為結構化查詢語言,即 SQL,而且它是幾乎目前所有數據庫都可以使用的一種語言。SQL-92 標准被認為是一種基礎標准,而且已更新多次。
數據庫的種類
PC 上的數據庫,如 dBase、Borland Paradox、Microsoft Access 和 FoxBase。
數據庫服務器:IBM DB/2、Microsoft SQL Server、 Oracle、Sybase、SQLBase 和 XDB。
所有這些數據庫產品都支持多種相對類似的 SQL 方言,因此,所有數據庫最初看起來好象可以互換。每種數據庫都有不同的性能特征,而且每一種都有不同的用戶界面和編程接口。
ODBC
假如我們能夠以某種方式編寫不依靠於特定廠商的數據庫的代碼,並且能夠不改變自己的調用程序即可從這些數據庫中得到相同的結果,那將是一件很好的事。假如我們可以僅為所有這些數據庫編寫一些封裝,使它們具有相似的編程接口,這種對數據庫編程獨立於供給商的特性將很輕易實現。
什麼是 JDBC?
JDBC 是對 ODBC API 進行的一種面向對象的封裝和重新設計,它易於學習和使用,並且它真正能夠使您編寫不依靠廠商的代碼,用以查詢和操縱數據庫。盡管它與所有 Java API 一樣,都是面向對象的,但它並不是很高級別的對象集.
除 Microsoft 之外,多數廠商都采用了 JDBC,並為其數據庫提供了 JDBC 驅動程序;這使您可輕松地真正編寫幾乎完全不依靠數據庫的代碼。另外,JavaSoft 和 Intersolv 已開發了一種稱為 JDBC-ODBC Bridge 的產品,可使您連接還沒有直接的 JDBC 驅動程序的數據庫。支持 JDBC 的所有數據庫必須至少可以支持 SQL-92 標准。這在很大程度上實現了跨數據庫和平台的可移植性。
安裝和使用 JDBC
JDBC 的類都被歸到 java.sql 包中,在安裝 Java JDK 1.4時會自動安裝。然而,假如您想使用 JDBC-ODBC 橋。JDBC-ODBC 驅動程序可從 Sun 的 Java 網站 (http://java.sun.com/) 輕松地找到並下載。在您擴充並安裝了這個驅動程序後,必須執行下列步驟: