什么是數據庫( 二 )


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/) 輕松地找到并下載 。在您擴充并安裝了這個驅動程序后,必須執行下列步驟:
將 \jdbc-odbc\classes; 路徑添加到您的 PATH 環境變量中 。
將 \jdbc-odbc\classes; 路徑添加到您的 CLASSPATH 環境變量中 。
JDBC 驅動程序的類型
Java 程序連接數據庫的方法實際上有四種:
1. JDBC-ODBC 橋和 ODBC 驅動程序 -- 在這種方式下,這是一個本地解決方案,因為 ODBC 驅動程序和橋代碼必須出現在用戶的每臺機器中 。從根本上說這是一個臨時解決方案 。
2. 本機代碼和 Java 驅動程序 -- 它用另一個本地解決方案取代 ODBC 和 JDBC-ODBC 橋 。
3. JDBC 網絡的純 Java 驅動程序 -- 由 Java 驅動程序翻譯的 JDBC 形成傳送給服務器的獨立協議 。然后,服務器可連接任何數量的數據庫 。這種方法使您可能從客戶機 Applet 中調用服務器,并將結果返回到您的 Applet 。在這種情況下,中間件軟件提供商可提供服務器 。
4. 本機協議 Java 驅動程序 -- Java 驅動程序直接轉換為該數據庫的協議并進行調用 。這種方法也可以通過網絡使用,而且可以在 Web 瀏覽器的 Applet 中顯示結果 。在這種情況下,每個數據庫廠商將提供驅動程序 。

推薦閱讀