日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

MySQL數(shù)據(jù)庫(kù)技術(shù)(03)

 Ralf_Jones 2006-07-19
破釜沉舟 http://www.


文章類別:MySQL  發(fā)表日期:2005-09-23      閱讀次數(shù): 237

 

您可能會(huì)注意到,已經(jīng)讀了本書這么多頁(yè),但是還沒(méi)有看到幾句行話和術(shù)語(yǔ)。雖然我們大致提了一下怎樣利用樣例數(shù)據(jù)庫(kù),但事實(shí)上,關(guān)于什么是“數(shù)據(jù)庫(kù)”,我們一點(diǎn)東西都還沒(méi)有介紹。不過(guò),我們現(xiàn)在打算設(shè)計(jì)該數(shù)據(jù)庫(kù),然后開(kāi)始實(shí)現(xiàn)它,這樣就不能再避而不談數(shù)據(jù)庫(kù)術(shù)語(yǔ)了。介紹數(shù)據(jù)庫(kù)術(shù)語(yǔ)就是本節(jié)的目的。本節(jié)介紹的一些術(shù)語(yǔ)全書都要用到,因此必須對(duì)其熟悉。所幸的是,關(guān)系數(shù)據(jù)庫(kù)中的許多概念是相當(dāng)簡(jiǎn)單的。事實(shí)上,關(guān)系數(shù)據(jù)庫(kù)的吸引力主要來(lái)源于其基本概念的簡(jiǎn)單性。
    1.3.1 基本術(shù)語(yǔ)
    在數(shù)據(jù)庫(kù)世界中,MySQL 歸類為關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)( R D B M S)。所謂關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的含義如下:
    ■ 數(shù)據(jù)庫(kù)(RDBMS 中的“D B”)是存儲(chǔ)信息的倉(cāng)庫(kù),以一種簡(jiǎn)單的、規(guī)則的方式進(jìn)行組織:
    ■ 數(shù)據(jù)庫(kù)中的數(shù)據(jù)集組織為表。
    ■ 每個(gè)表由行和列組成。
    ■ 表中每行為一個(gè)記錄。
    ■ 記錄可包含幾段信息;表中每一列對(duì)應(yīng)這些信息中的一段。
    ■ 管理系統(tǒng)(“M S”)是允許通過(guò)插入、檢索、修改或刪除記錄來(lái)使用數(shù)據(jù)的軟件。
    ■ “關(guān)系”(“R”)一詞表示一種特殊種類的D B M S,它通過(guò)尋找相互之間的共同元素使存放在一個(gè)表中的信息關(guān)聯(lián)到存放在另一個(gè)表中的信息。關(guān)系數(shù)據(jù)庫(kù)的能力在于它能夠從這些表中方便地取出數(shù)據(jù),并將關(guān)聯(lián)各表中的信息相結(jié)合得出問(wèn)題的答案,這些答案只依據(jù)單個(gè)表的信息是不可能得到的。這里有一個(gè)例子,示出了關(guān)系數(shù)據(jù)庫(kù)怎樣將數(shù)據(jù)組織成表并將一個(gè)表中的信息與另一個(gè)表中的信息相關(guān)聯(lián)。假定您管理一個(gè)含有標(biāo)題廣告服務(wù)的Web 站點(diǎn)。您與公司有協(xié)議,這些公司希望有人在拜訪您的站點(diǎn)上的網(wǎng)頁(yè)時(shí)顯示他們的廣告。每當(dāng)一個(gè)拜訪者點(diǎn)擊您的頁(yè)面一次,您就向該拜訪者的瀏覽器提供了嵌在頁(yè)面中的廣告的一次服務(wù),并且給公司估算一點(diǎn)費(fèi)
用。為了表示這些信息,要保存三個(gè)表(請(qǐng)參閱圖1 - 1)。一個(gè)是company 表,它含有公司名、編號(hào)、地址和電話號(hào)碼等列。另一個(gè)是ad 表,它列出廣告編號(hào)、擁有該廣告的公司的編號(hào)以及每次點(diǎn)擊時(shí)的計(jì)費(fèi)數(shù)。第三個(gè)hit 表按廣告編號(hào)記錄廣告點(diǎn)擊次數(shù)以及廣告提供服務(wù)的日期。
    利用單個(gè)表的信息可以回答某些問(wèn)題。為了確定簽協(xié)議的公司數(shù)目,只需對(duì)company 表中的行數(shù)計(jì)數(shù)即可。類似地,為了確定某個(gè)給定時(shí)間段中的點(diǎn)擊次數(shù),只需查看hit 表即可。其他問(wèn)題要更為復(fù)雜一些,而且必須考慮多個(gè)表以確定答案。例如,為了確定P i c k l e s .公司的每個(gè)廣告在7月1 4日點(diǎn)擊了多少次,應(yīng)該按如下步驟使用這些表:
    1) 查詢company 表中的公司名(Pickles, Inc)以找到公司編號(hào)( 1 4)。
    2) 利用公司編號(hào)查找ad 表中匹配的記錄以便能夠確定相關(guān)的廣告編號(hào)。有兩個(gè)這樣的廣告,48 和1 0 1。
    3) 對(duì)ad 表中匹配的每個(gè)記錄,利用該記錄中的廣告編號(hào)查找hit 表中在所需日期范圍內(nèi)的匹配記錄,然后對(duì)匹配的記錄進(jìn)行計(jì)數(shù)。廣告編號(hào)為48 的匹配記錄有三個(gè),廣告編號(hào)為101 的匹配記錄有兩個(gè)。聽(tīng)起來(lái)很復(fù)雜!而這正是關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)所擅長(zhǎng)的。這種復(fù)雜性在某種程度可以說(shuō)是一種幻覺(jué),因?yàn)樯鲜雒恳徊街徊贿^(guò)是一個(gè)簡(jiǎn)單的匹配操作,它通過(guò)將一個(gè)表的行中的值與另一個(gè)表的行中的值相匹配,把一個(gè)表與另一個(gè)表相關(guān)聯(lián)。這個(gè)簡(jiǎn)單的操作可以各種方式使用來(lái)回答各種各樣的問(wèn)題。每個(gè)公司有多少個(gè)不同的廣告?哪個(gè)公司的廣告最受歡迎?每個(gè)廣告帶來(lái)的收入是多少?當(dāng)前記賬期中每個(gè)公司的總費(fèi)用是多少?現(xiàn)在我們已經(jīng)介紹了關(guān)系數(shù)據(jù)庫(kù)的理論,足以理解本書其余部分了,我們不必探究第三范式、實(shí)體關(guān)系圖以及所有這一類的東西。如果您確實(shí)需要了解這些東西,那就太令人恐怖了,而且這也不是地方。建議您從閱讀C.J.Date 和E . F.Codd 的某些書籍入手。

    1.3.2 查詢語(yǔ)言術(shù)語(yǔ)
    M y S Q L使用一種稱為S Q L(Structured Query Language)的語(yǔ)言。SQL 是當(dāng)今的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)語(yǔ)言,所有主要的數(shù)據(jù)庫(kù)系統(tǒng)都使用它。SQL 具有多種不同的語(yǔ)句,所有語(yǔ)句都是以一種不枯燥并有用的方式設(shè)計(jì)來(lái)與數(shù)據(jù)庫(kù)進(jìn)行交互的。正如其他語(yǔ)言一樣, SQL 在初次接觸時(shí)可能會(huì)令人感到有些古怪。例如,為了創(chuàng)建一個(gè)表,需要告訴MySQL 表結(jié)構(gòu)應(yīng)該是什么樣的。我們可能會(huì)根據(jù)圖表來(lái)想像一個(gè)表,但MySQL 不會(huì),因此,在創(chuàng)建表時(shí)需要告訴MySQL 一些東西,如下所示:

    如果您不熟悉SQL 語(yǔ)句,可能會(huì)對(duì)這樣的語(yǔ)句留下深刻的印象,但您不必以程序員的身份來(lái)學(xué)習(xí)怎樣有效地使用S Q L。如果逐步熟悉了SQL 語(yǔ)言之后,就會(huì)以一種不同的眼光來(lái)看待C R E ATE TABLE 語(yǔ)句,會(huì)認(rèn)為它是一個(gè)有助于描述自己信息的伙伴,而不是一種奇怪的胡言亂語(yǔ)。
    1.3.3 MySQL 的體系結(jié)構(gòu)術(shù)語(yǔ)
    在您使用MySQL 時(shí),實(shí)際正使用以下兩個(gè)程序,因?yàn)镸ySQL 采用的是客戶機(jī)/服務(wù)器體系結(jié)構(gòu):
    ■ 數(shù)據(jù)庫(kù)服務(wù)器是一個(gè)位于存放您的數(shù)據(jù)的機(jī)器上的程序。它監(jiān)聽(tīng)從網(wǎng)絡(luò)上傳過(guò)來(lái)的客戶機(jī)的請(qǐng)求并根據(jù)這些請(qǐng)求訪問(wèn)數(shù)據(jù)庫(kù)的內(nèi)容,以便向客戶機(jī)提供它們所要求的信息。
    ■ 客戶機(jī)是連接到數(shù)據(jù)庫(kù)服務(wù)器的程序,這些程序告訴服務(wù)器需要什么信息的查詢。MySQL 分發(fā)包包括服務(wù)器和幾個(gè)客戶機(jī)程序??筛鶕?jù)要達(dá)到的目的來(lái)使用客戶機(jī)。最常用的客戶機(jī)程序?yàn)閙 y s q l,這是一個(gè)交互式的客戶機(jī)程序,它能發(fā)布查詢并看到結(jié)果。其他
的客戶機(jī)程序有: mysqldump 和m y s q l i m p o r t,分別轉(zhuǎn)儲(chǔ)表的內(nèi)容到某個(gè)文件或?qū)⑽募膬?nèi)容導(dǎo)入某個(gè)表; mysqladmin 用來(lái)查看服務(wù)器的狀態(tài)并完成管理任務(wù),如告訴服務(wù)器關(guān)閉等。如果具有標(biāo)準(zhǔn)的客戶機(jī)不適合的應(yīng)用,那么MySQL 還提供了一個(gè)客戶機(jī)編程庫(kù),可以編寫自己的程序??蛻魴C(jī)編程庫(kù)可直接從C 程序中調(diào)用,如果希望使用C 語(yǔ)言以外的其他語(yǔ)言,還有幾種其他的接口可用。
    MySQL 的客戶機(jī)/服務(wù)器體系結(jié)構(gòu)具有如下好處:
    ■ 服務(wù)器提供并發(fā)控制,使兩個(gè)用戶不能同時(shí)修改相同的記錄。所有客戶機(jī)的請(qǐng)求都通過(guò)服務(wù)器處理,服務(wù)器分類辨別誰(shuí)準(zhǔn)備做什么,何時(shí)做。如果多個(gè)客戶機(jī)希望同時(shí)訪問(wèn)相同的表,它們不必互相裁決和協(xié)商,只要發(fā)送自己的請(qǐng)求給服務(wù)器并讓它仔細(xì)確定完成這些請(qǐng)求的順序即可。
    ■ 不必在數(shù)據(jù)庫(kù)所在的機(jī)器上注冊(cè)。MySQL 知道怎樣在因特網(wǎng)上工作,因此您可以在任何位置運(yùn)行一個(gè)客戶機(jī)程序,此客戶機(jī)程序可以連接到網(wǎng)絡(luò)上的服務(wù)器。距離不是問(wèn)題,可從世界上的任何地方訪問(wèn)服務(wù)器。如果服務(wù)器位于澳大利亞的某臺(tái)機(jī)器上,那么當(dāng)您帶著自己的便攜式電腦到冰島去旅行時(shí),仍然可以訪問(wèn)自己的數(shù)據(jù)庫(kù)。
    這是否意味著任何人只要連接到因特網(wǎng)就可以訪問(wèn)您的數(shù)據(jù)?答案是否定的。MySQL 含有一個(gè)靈活的安全系統(tǒng),只允許那些有權(quán)限訪問(wèn)數(shù)據(jù)的人訪問(wèn)。可以保證那些人只能夠做允許他們做的事?;蛟S記賬辦公室的Sally 能夠讀取和更新(修改)記錄,而服務(wù)臺(tái)的Phil 只能查看記錄??梢栽O(shè)置使用人員的權(quán)限。如果希望運(yùn)行一個(gè)自含系統(tǒng)(獨(dú)立系統(tǒng)),只要設(shè)置訪問(wèn)權(quán)限使客戶機(jī)只能從服務(wù)器運(yùn)行的主機(jī)上進(jìn)行連接即可。


破釜沉舟 http://www.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多