曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
S t e p h e n兩個人的傳記。
(3) 連接
之所以稱為關系數據庫是因為它們可以處理關系。連接的主要目的是在一個數據中建立表
之間的關系。盡管也可能把數據存儲在一個巨大的表中,沒有連接,它將很快在資源使用及響
應時間上變得低效。例如,沒有人阻止我們創建像這樣的系統(參見表1 0 - 4):
表1 0 - 4
F i r s t N a m e L a s t N a m e B i o g r a p h i c a l Ti t l e I S B N
S t e p h e n M o h r ⋯⋯ XML Application 1 - 8 6 1 0 0 1 - 5 2 - 5
S t e p h e n M o h r ⋯⋯ Designing Distributed 1 - 8 6 1 0 0 2 - 2 7 - 0
Applications with
X M L,A S P,I E 5,L D A P
And MSMQ
K a t h i e K i n g s l e y ⋯⋯ XML Application 1 - 8 6 1 0 0 1 - 5 2 - 5
H u g h e s
F r a n k B o u m p h r e y ⋯⋯ Professional Style Sheets 1 - 8 6 1 0 0 1 - 6 5 - 7
For HTML and XML
F r a n k B o u m p h r e y ⋯⋯ XML Application 1 - 8 6 1 0 0 1 - 5 2 - 5
然而,很明顯,不需要重復每一個作者的名字和傳記的細節在每一本他們寫的書上,同樣
第10章XML和數據庫使用369 下載
表1 0 - 3
名姓
S t e p h e n M o h r
K a t h i e K i n g s l e y - H u g h e s
F r a n k B o u m p h r e y
也沒有地方顯示參與每本書寫作的每個作者的名字。不僅僅是因為低效,也是因為難于維護,
當一個作者的信息改變時就需要將它拷貝到每一個出現的地方。
為了實現在書與作者之間更高效的關系,我們需要建立多對多的關系。這就要求一個特別
的技術,稍后將進行介紹。在介紹之前,先看一下一對一和一對多的關系應如何建立。
(4) 一對一和一對多連接
你可能還記得我們的書的目錄,一本書可以包括一個價格,每個價格可以有一個貨幣符號:
程序清單1 0 - 8
如果我們采用剛才提到的方法—將所有的數據都放在一張表中—那樣它將像表1 0 - 5所示
存在數據庫中:
表1 0 - 5
Ti t l e I S B N C u r r e n c y P r i c e
XML Application 1 - 8 6 1 0 0 1 - 5 2 - 5 U S D 4 9 . 9 9
Designing Distributed Application 1 - 8 6 1 0 0 2 - 2 7 - 0 U S D 4 9 . 9 9
With XML, ASP, IE5, LDAP and MSMQ
Professional Style Sheets for HTML And XML 1 - 8 6 1 0 0 1 - 6 5 - 7 G B F 4 5 . 9 9
然而,模式可能會認為只有三種貨幣符號是可用的,每一個價格(指書)只能使用一種貨
幣符號,盡管并不反對每個貨幣符號被使用多次。所以我們可以在書的實體與一個新的實體,
貨幣符號,之間建立一種一對多的關系。合理化數據的過程叫做標準化,將在下面更詳細地討
論。將貨幣符號分離到另一個表中會給我們帶來幾個好處:
• 可以存儲貨幣符號的附加信息,像用在下拉框和報告中的貨幣符號名稱,也可能是一個匯
率。
• 我們可以保證在列表中只有一個符號被輸入到書的表中。
我們通過增加一個貨幣符號的新表來實現它(參見表1 0 - 6):
表1 0 - 6
貨幣編號縮寫
1 U S D 美元
2 G B F 英鎊
3 C D 加拿大元
C u r r e n c y I D列是表的主鍵。用于確定表中的每一行都是唯一的,也用來記錄在其他表中的地
址的方法。盡管在這個例子中我們可以使用S h o r t N a m e作為主鍵,但是有一個普遍的經驗就是使
用數字來連接表,因為它們是壓縮的,并且可以比較得很快。
370使用XML 高級編程
下載
在建立起我們的貨幣符號表之后,修改書的表以便從貨幣符號表中指出它的貨幣符號(參
見表1 0 - 7):
表1 0 - 7
Ti t l e I S B N C u r r e n c y I D P r i c e
XML Application 1 - 8 6 1 0 0 1 - 5 2 - 5 1 4 9 . 9 9
Designing Distributed Application 1 - 8 6 1 0 0 2 - 2 7 - 0 1 4 9 . 9 9
With XML, ASP, IE5, LDAP and MSMQ
Professional Style Sheets for HTML And XML 1 - 8 6 1 0 0 1 - 6 5 - 7 2 4 5 . 9 9
這里我們看到通過使用主鍵的值建立了一個引用。因為C u r r e n c y I D在書表中看上去不像在貨
幣符號表中是主鍵,我們說它是一個外鍵。在某些數據庫系統,可能會加強這種主鍵與外鍵的
關系,例如,我們不能把數字10 000放到字段中,因為在貨幣符號表中不存在相應的記錄。設置
一個列具有一個外鍵的屬性是用來保證數據一致性的重要方法。
現在來通過在W H E R E子句里使用變量生成書和它們的貨幣符號的記錄集:
像前面一樣,我們想取出的列被列在S E L E C T和F R O M之間,但是這一次我們要求兩個不同
的表中的數據,書的表和貨幣符號表。然而,為了讓每一行有意義我們要求書表中的每一行都
要與貨幣符號表中的每一行相匹配。但是我們不是想要隨便的一行,而是想要與在書表中的貨
幣符號數字相同的行。實際上,在書表中的C u r r e n c y I D列執行了一個查找,在貨幣符號表中獲
得它所需要的細節。結果集看上去將同表1 0 - 8所示。
表1 0 - 8
Ti t l e S h o r t N a m e P r i c e
XML Application U S D 4 9 . 9 9
Designing Distributed Application U S D 4 9 . 9 9
With XML, ASP, IE5, LDAP and MSMQ
Professional Style Sheets for HTML And XML G B P 4 5 . 9 9
這時,盡管已經將我們的數據分割成不同的表,但可能在任何時候通過連接重新得到它,
就好像是一個表。
這個貨幣符號的例子模擬了一對多的關系—一個貨幣符號與多本書有關—但是同樣的
技術也可用來模擬一對一關系。例如,我們可能在一張表中保存價格和貨幣符號,并且從一本
書中指出全部的價格。一本書應該只有一個價格。
(5) 多對多的連接
剛剛描述的方法,是在一個表中的一列中設置了對另一個表的一列的引用,對于一對一或
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(122)