使用JDBC創(chuàng)建數(shù)據(jù)庫對象(1)

字號:

使用JDBC創(chuàng)建數(shù)據(jù)庫對象(1)
    本文分析了Java DataBase Connectivity (JDBC),一個在 Java 中以面向?qū)ο蟮姆椒▉磉B接數(shù)據(jù)庫的技術(shù)。它是對 ODBC API 進行的一種面向?qū)ο蟮姆庋b和重新設(shè)計,它易于學(xué)習(xí)和使用,并且它能夠使您編寫不依賴供應(yīng)商的代碼,用以查詢和操縱數(shù)據(jù)庫。JDBC 提供了一些相當(dāng)?shù)蛯拥姆椒▉泶嫒?shù)據(jù)庫,同時也在相當(dāng)高層提供了功能強大的對象來處理數(shù)據(jù)庫。
    · 什么是數(shù)據(jù)庫?
    數(shù)據(jù)庫 是以某種文件結(jié)構(gòu)存儲的一系列信息表,這種文件結(jié)構(gòu)使您能夠訪問這些表、選擇表中的列、對表進行排序以及根據(jù)各種標(biāo)準(zhǔn)選擇行。數(shù)據(jù)庫通常有多個 索引 與這些表中的許多列相關(guān)聯(lián),所以我們能盡可能快地訪問這些表。
    在進行計算時,數(shù)據(jù)庫比其它類型的結(jié)構(gòu)更常用。您會發(fā)現(xiàn)在員工記錄和薪資系統(tǒng)中數(shù)據(jù)庫處于核心地位,在旅行計劃系統(tǒng)中以及在產(chǎn)品生產(chǎn)和銷售的整個過程中都可以發(fā)現(xiàn)數(shù)據(jù)庫。
    以員工記錄為例,您可以設(shè)想一個含有員工姓名、地址、工資、扣稅以及津貼等內(nèi)容的表。讓我們考慮一下這些內(nèi)容可能如何組織在一起。您可以設(shè)想一個表包含員工姓名、地址和電話號碼。您希望保存的其它信息可能包括工資、工資范圍、上次加薪時間、下次加薪時間、員工業(yè)績評定等內(nèi)容。
    這些內(nèi)容是否應(yīng)保存在一個表格中?幾乎可以肯定不應(yīng)該如此。不同類別的員工的工資范圍可能沒有區(qū)別;這樣,您可以僅將員工類型儲存在員工記錄表中,而將工資范圍儲存在另一個表中,通過類型編號與這個表關(guān)聯(lián)??紤]以下情況:
    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 列中的數(shù)據(jù)引用第二個表。我們可以想象出許多種這樣的表,如用于存儲居住城市和每個城市的稅值、健康計劃扣除金額等的表。每個表都有一個主鍵列(如上面兩個表中最左邊的列)和若干數(shù)據(jù)列。在數(shù)據(jù)庫中建立表格既是一門藝術(shù),也是一門科學(xué)。這些表的結(jié)構(gòu)由它們的 范式 指出。我們通常說表屬于第一、第二或第三范式,簡稱為1NF、2NF或3NF。
    第一范式:表中的每個表元應(yīng)該只有一個值(永遠不可能是一個數(shù)組)。(1NF)
    第二范式:滿足1NF,并且每一個副鍵列完全依賴于主鍵列。這表示主鍵和該行中的剩余表元之間是1對1的關(guān)系。(2NF)
    第三范式:滿足2NF,并且所有副鍵列是互相獨立的。任何一個數(shù)據(jù)列中包含的值都不能從其他列的數(shù)據(jù)計算得到。(3NF)
    現(xiàn)在,幾乎所有的數(shù)據(jù)庫都是基于“第三范式(3NF)”創(chuàng)建的。這意味著通常都有相當(dāng)多的表,每個表中的信息列都相對較少。