時(shí)間:2023-05-23 21:12:02 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-05-23 21:12:02 來源:網(wǎng)站運(yùn)營(yíng)
《PHP和MySQL Web 開發(fā)》第8章 設(shè)計(jì)Web數(shù)據(jù)庫:當(dāng)前使用關(guān)系數(shù)據(jù)庫的時(shí)候,并不需要了解關(guān)系理論(這是一件好事),但還是需要理解一些關(guān)于數(shù)據(jù)庫的基本概念。
books+---------------+-------------------+-------------------------------------+-------+| id | author | title | price |+---------------+-------------------+-------------------------------------+-------+| 0-672-31697-8 | Michael Morgan | Java 開發(fā) | 38.49 || 0-672-31745-1 | Thomas Down | Linux 開發(fā) | 27.49 || 0-672-31509-2 | Pruitt,et al. | 時(shí)間管理 | 27.49 || 0-672-31769-9 | Thomas Schenk | 開放系統(tǒng)管理 | 54.99 || 0-672-31000-1 | 李重樓 | web開發(fā)筆記 | 99.99 || 0-672-31000-4 | Nicholas C.Zakas | JavaScript高級(jí)程序設(shè)計(jì)(第3版) | 99.99 || 0-672-31000-5 | 李重樓 | web插入數(shù)據(jù)庫 | 53.20 || 0-672-31000-6 | 李重樓 | 網(wǎng)站建設(shè)與拆毀 | 44.36 |+---------------+-------------------+-------------------------------------+-------+
表名叫books,有id,author,title,price 四個(gè)數(shù)據(jù)列。每個(gè)列里對(duì)應(yīng)的是相同的數(shù)據(jù)類型,每一行對(duì)應(yīng)著是一條由id,author,title,price對(duì)應(yīng)的值構(gòu)成的數(shù)據(jù)。表中的每一列都有唯一的名稱,包含不同的數(shù)據(jù)。此外每一列都有一個(gè)相關(guān)的數(shù)據(jù)類型。(注意:豎著的叫列,橫著的叫行。)如上方表格所示,author 列的數(shù)據(jù)類型就是字符串類型。這個(gè)也很好理解吧?具體都有多少數(shù)據(jù)類型,在后面有介紹,別急,慢慢看。
有時(shí)候,列也叫做 域 或者 屬性!為啥這是重點(diǎn)?
表中的每一行代表一個(gè)客戶。每一行具有相同的格式,因而也具有相同的屬性。行也稱為記錄。我上面的表格示例表示每一行代表一本書。
行也稱為記錄。為啥這是重點(diǎn)?道理剛才說過了。不說了。
每一行由對(duì)應(yīng)于每一列的單個(gè)值組成,每個(gè)值必須與改了定義的數(shù)據(jù)類型相同。這個(gè)如果不理解的話,你私信我,我單獨(dú)給你解釋。
表中的標(biāo)識(shí)列稱為 鍵 或 主鍵。這是書中說的,書里說的對(duì),標(biāo)識(shí)列 稱為 鍵 或 主鍵,和你說的有沖突???!
通常,數(shù)據(jù)庫由多個(gè)表組成,可以使用鍵作為表格之間的引用。這個(gè)出現(xiàn)在別的表中的鍵,叫外鍵。
這種關(guān)系用關(guān)系數(shù)據(jù)庫術(shù)語來描述的時(shí)候就是外鍵。
數(shù)據(jù)庫整套表格的完整設(shè)計(jì)成為數(shù)據(jù)庫的模式。以書中列子來說:Customers(CustomerID,Name,Address,City),這個(gè)就是文本格式表示,有的人會(huì)手畫表示,怎么都可以,你整明白了就行。我就對(duì)這個(gè)文本格式的模式進(jìn)行一下解釋吧。
關(guān)系數(shù)據(jù)庫中有3種基本的數(shù)據(jù)關(guān)系類型。根據(jù)關(guān)系雙方所含對(duì)象的多少,可以將這些關(guān)系分為 一對(duì)一,一對(duì)多,多對(duì)多3種關(guān)系。定義下了,有三種關(guān)系。那么開始理解。
一對(duì)一關(guān)系表示關(guān)系雙方只有一個(gè)對(duì)象相互對(duì)應(yīng)。一對(duì)一是好理解的,定義都說了,你只能有一個(gè)對(duì)象,你對(duì)象也只能有一個(gè)男/女朋友,而這個(gè)男/女朋友得是你。
在一對(duì)多的關(guān)系中,一個(gè)表中的一行與另一個(gè)表中的多行具有相互關(guān)聯(lián)的關(guān)系。這個(gè)叫一對(duì)多,但是這個(gè)不舉男女戀愛的例子了,因?yàn)樘?,咱講父與子的關(guān)系。
在多對(duì)多的關(guān)系中,表中的多行與另一個(gè)表中的多行具有相互關(guān)聯(lián)的關(guān)系。這個(gè)叫多對(duì)多,其實(shí)我一開始看的時(shí)候在想,什么情況下會(huì)出現(xiàn)多對(duì)多呢?
多對(duì)多,在數(shù)據(jù)庫中也比較常見,可以理解為是一對(duì)多和多對(duì)一的組合。要實(shí)現(xiàn)多對(duì)多,一般都需要有一張中間表(也叫關(guān)聯(lián)表),將兩張表進(jìn)行關(guān)聯(lián),形成多對(duì)多的形式。例如: 老師表、班級(jí)表、科目表,中間表為:課程表。例子很詳細(xì)了,A老師教一二班語文,B老師教一二班數(shù)學(xué)。你思考一下,教師是個(gè)表,表里有AB兩位老師,班級(jí)是個(gè)表,有一二兩班。
customers+------------+-----------------+--------------------+--------------------+| customerid | name | address | city |+------------+-----------------+--------------------+--------------------+| 1 | 劉能 | 牡丹江大街 | 牡丹江 || 2 | 李重樓 | 杭州中弘像素 | 杭州 || 3 | 謝廣坤 | 杭州市 | 杭州 || 4 | Alan Wong | 1/47 Haines Avenue | 杭州 || 5 | Michelle Arthur | 357 North Road | Yarraville || 6 | Melissa Jones | 紅莊 c3-1 | Nar Nar Goon North |+------------+-----------------+--------------------+--------------------+order+---------+------------+--------+------------+| orderid | customerid | amount | date |+---------+------------+--------+------------+| 1 | 3 | 69.98 | 2018-06-27 || 2 | 1 | 49.99 | 2018-06-26 || 3 | 2 | 74.98 | 2018-06-25 || 4 | 3 | 24.99 | 2018-06-24 |+---------+------------+--------+------------+books+---------------+-------------------+-------------------------------------+-------+| isbn | author | title | price |+---------------+-------------------+-------------------------------------+-------+| 0-672-31697-8 | Michael Morgan | Java 開發(fā) | 38.49 || 0-672-31745-1 | Thomas Down | Linux 開發(fā) | 27.49 || 0-672-31509-2 | Pruitt,et al. | 時(shí)間管理 | 27.49 || 0-672-31769-9 | Thomas Schenk | 開放系統(tǒng)管理 | 54.99 || 0-672-31000-1 | 李重樓 | web開發(fā)筆記 | 99.99 || 0-672-31000-4 | Nicholas C.Zakas | JavaScript高級(jí)程序設(shè)計(jì)(第3版) | 99.99 || 0-672-31000-5 | 李重樓 | web插入數(shù)據(jù)庫 | 53.20 || 0-672-31000-6 | 李重樓 | 網(wǎng)站建設(shè)與拆毀 | 44.36 |+---------------+-------------------+-------------------------------------+-------+
這是我寫的測(cè)試數(shù)據(jù),后續(xù)你寫的時(shí)候也可以添加一些自己的數(shù)據(jù),很有意思的。目前先看書就可以。當(dāng)創(chuàng)建一個(gè)數(shù)據(jù)庫時(shí),我們經(jīng)常為現(xiàn)實(shí)世界的實(shí)體和關(guān)系建立模型,并且儲(chǔ)存這些實(shí)體對(duì)象與關(guān)系的信息。書中這句話就涵蓋了標(biāo)題的意思。
通常,數(shù)據(jù)庫的設(shè)計(jì)不應(yīng)該出現(xiàn)上述不規(guī)則中的任何一種。書里說的很含蓄,“通?!辈贿@么干。我給你翻譯翻譯就是:除了DEMO 和入門學(xué)習(xí)!別雞兒這么干?。銈兗夹g(shù)老大,或者負(fù)責(zé)人讓你這么干!你讓他寫下來簽字?。?br>
使用原子列值得意思是對(duì)每一行的每個(gè)屬性只儲(chǔ)存一個(gè)數(shù)據(jù)。你給我解釋一下這句話,或者你腦子過一下,這句話什么意思。
所謂第一范式(1NF)是指在關(guān)系模型中,對(duì)列添加的一個(gè)規(guī)范要求,所有的列都應(yīng)該是原子性的,即數(shù)據(jù)庫表的每一列都是不可分割的原子數(shù)據(jù)項(xiàng),而不能是集合,數(shù)組,記錄等非原子數(shù)據(jù)項(xiàng)。這是其中第一范式的解釋,其中說:原子性,即實(shí)體中的某個(gè)屬性有多個(gè)值時(shí),必須拆分為不同的屬性。對(duì)“使用原子列值得意思是對(duì)每一行的每個(gè)屬性只儲(chǔ)存一個(gè)數(shù)據(jù)”。進(jìn)行了解釋。
即實(shí)體中的某個(gè)屬性有多個(gè)值時(shí),必須拆分為不同的屬性。
在符合第一范式(1NF)表中的每個(gè)域值只能是實(shí)體的一個(gè)屬性或一個(gè)屬性的一部分。
簡(jiǎn)而言之,第一范式就是無重復(fù)的域。
一個(gè)典型的Web數(shù)據(jù)庫事務(wù)包含下列步驟,這些步驟在圖8-9已經(jīng)標(biāo)出。以Book-O-Rama書店為例,我們逐個(gè)解釋這些步驟。這一節(jié)我是純照書敲的,如過你搞過前端開發(fā),應(yīng)該一看就懂。
1)用戶的Web瀏覽器發(fā)出HTTP請(qǐng)求,請(qǐng)求特定Web頁面。例如,該用戶可能以HTML表單的形式,要求搜索Book-O-Rama書店里所有由Laura Thomson編寫的圖書。搜索結(jié)果網(wǎng)頁稱為results.php。
2)Web服務(wù)器收到results.php的請(qǐng)求,獲取該文件,并將它傳到PHP引擎,要求它處理。
3)PHP引擎開始解析腳本。腳本中有一條連接數(shù)據(jù)庫的命令,還有執(zhí)行一個(gè)查詢(執(zhí)行搜索圖書)的命令。PHP打開通向MySQL數(shù)據(jù)庫的連接,發(fā)送適當(dāng)?shù)牟樵儭?br>4)MySQL服務(wù)器接受數(shù)據(jù)庫查詢并處理。將結(jié)果(一個(gè)圖書的列表)返回到PHP引擎。
5)PHP引擎完成腳本運(yùn)行,通常,這包括將查詢結(jié)果格式化成HTML格式。然后再將輸出的HTML返到Web服務(wù)器。
6)Web服務(wù)器將HTML發(fā)送到瀏覽器。這樣用戶就可看到她所搜索的圖書。
這個(gè)過程基本上與腳本引擎和數(shù)據(jù)庫服務(wù)器無關(guān)。通常,Web服務(wù)器軟件,PHP引擎和數(shù)據(jù)庫服務(wù)器都在同一臺(tái)機(jī)器上運(yùn)行。
但是,數(shù)據(jù)庫服務(wù)器在另外一臺(tái)機(jī)器上運(yùn)行也是非常常見的。這樣做是出于保密、提高性能以及負(fù)載平衡的原因而考慮的。從開發(fā)的角度來看,要做的事情基本上是一樣的,但是它能夠明顯提高性能。
關(guān)鍵詞:設(shè)計(jì),數(shù)據(jù)
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。