第6章 數(shù)據(jù)庫基礎(chǔ).ppt_第1頁
第6章 數(shù)據(jù)庫基礎(chǔ).ppt_第2頁
第6章 數(shù)據(jù)庫基礎(chǔ).ppt_第3頁
第6章 數(shù)據(jù)庫基礎(chǔ).ppt_第4頁
第6章 數(shù)據(jù)庫基礎(chǔ).ppt_第5頁
免費預(yù)覽已結(jié)束,剩余37頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、網(wǎng)站規(guī)劃與設(shè)計,數(shù)據(jù)庫基本知識,關(guān)系數(shù)據(jù)庫的概念 如何設(shè)計WEB數(shù)據(jù)庫 數(shù)據(jù)庫基本操作,關(guān)系數(shù)據(jù)庫的概念,表格 列 行 值 鍵 關(guān)系,表格,關(guān)系數(shù)據(jù)庫由關(guān)系組成,這些關(guān)系通常稱為表格。 表格是數(shù)據(jù)庫最基本的組成元素之一 例子:顧客表(顧客編號,姓名,地址,城市),列,表格中的每一列都有唯一的名稱,包含不同的數(shù)據(jù)。 每個列都有相關(guān)的數(shù)據(jù)類型(整型,浮點型,字符型,二進(jìn)制數(shù)據(jù),時間類型等等) 列也經(jīng)常被稱為屬性,行,表中的每一行具有相同的格式,也就是說具有相同的屬性。 行也稱為記錄。,值,每一行對應(yīng)于每一列的單個值 每個值都必須與該列定義的數(shù)據(jù)類型一致,鍵,用來識別每一條記錄(行)的方法。 例如識

2、別一位客戶,可使用客戶的名字 使用名字 有局限 重名 浪費存儲空間 解決辦法 為每一條記錄分配一個唯一的編號,在應(yīng)用中使用編號來進(jìn)行標(biāo)識。 表中的標(biāo)志列稱為鍵或者主鍵 一個鍵可能由幾列組成。 數(shù)據(jù)庫由多個表格組成,可以使用鍵作為表格之間的引用。這種關(guān)系用關(guān)系數(shù)據(jù)庫術(shù)語來描述就是外鍵。 客戶編號在客戶表中是主鍵,在訂購表中稱為外鍵。,關(guān)系,外鍵表示兩個表格數(shù)據(jù)的關(guān)系 一對一關(guān)系 關(guān)系雙方只有一個對象互相對應(yīng) 例:客戶表,客戶地址表 一對多關(guān)系 一個表中的一行與另一表中的多行具有互相關(guān)聯(lián)的關(guān)系。 例:客戶表,定單表 多對多關(guān)系 一個表中的多行與另一個表中的多行具有相互關(guān)聯(lián)的關(guān)系 例:出版社,作者表

3、,如何設(shè)計WEB數(shù)據(jù)庫,考慮要建模的實際對象 避免保存冗余數(shù)據(jù) 使用原子列值 選擇有意義的鍵 考慮需要詢問數(shù)據(jù)庫的問題 避免多個空屬性的設(shè)計,考慮要建模的實際對象,創(chuàng)建數(shù)據(jù)庫是為了存儲我們?yōu)楝F(xiàn)實世界的實體和關(guān)系所建立的模型信息 一般情況下要建模的每一種現(xiàn)實世界對象都需要建立對應(yīng)的數(shù)據(jù)表 例:我們希望保存客戶,圖書,訂單所有信息 客戶:姓名,地址,聯(lián)系方式等 圖書:ISBN,作者,標(biāo)題,價格 訂單:日期,總金額,所訂購圖書,避免保存冗余數(shù)據(jù),創(chuàng)建數(shù)據(jù)庫時,要避免在數(shù)據(jù)表中保存冗余數(shù)據(jù) 例子 為什么不把客戶地址保存在訂單表中? 浪費存儲空間 客戶地址在客戶表中已經(jīng)保存一次了,沒必要再重復(fù)保存 會導(dǎo)

4、致數(shù)據(jù)更新的不一致。 在修改數(shù)據(jù)庫后容易產(chǎn)生數(shù)據(jù)的不一致性。 數(shù)據(jù)的完整性將被破壞,以至于我們不知道哪些數(shù)據(jù)是正確的,哪些數(shù)據(jù)是不正確的,會導(dǎo)致信息的丟失。 需要避免三種情況的更新不規(guī)則 修改不規(guī)則:在一個地方修改,導(dǎo)致與其他地方的數(shù)據(jù)不一致。 插入不規(guī)則:每次插入數(shù)據(jù)的時候必須要檢查數(shù)據(jù)是否全部一致,如果不檢查,則可能導(dǎo)致數(shù)據(jù)不一致。 刪除不規(guī)則:訂單處理完后,刪除訂單信息將導(dǎo)致客戶地址信息丟失,下次需要地址信息時無從獲取。,使用原子列值,對每一行的每個屬性只存儲一個數(shù)據(jù) 例:若在一個列中保存所有的訂購圖書信息,可能導(dǎo)致數(shù)據(jù)難以做深入加工處理,以及降低數(shù)據(jù)庫效率。(統(tǒng)計圖書訂單),選擇有意義

5、的鍵,為客戶,訂單創(chuàng)建一唯一的列來標(biāo)識它是因為現(xiàn)實世界中難以找到一個能保證其唯一性的標(biāo)識符,所以要新建一特殊的鍵。 而對于類似圖書表,因每本圖書都有唯一的ISBN,所有不需要再為它增加額外的列,考慮需要詢問數(shù)據(jù)庫的問題,對數(shù)據(jù)庫要做哪些操作? 例 查詢圖書信息 查詢作者信息 查詢訂單信息 操作對象的數(shù)據(jù)是否已經(jīng)保存到數(shù)據(jù)庫中? 哪些操作是最頻繁的? 針對最頻繁的幾個操作對數(shù)據(jù)庫進(jìn)行優(yōu)化。,避免多個空屬性的設(shè)計,希望在數(shù)據(jù)庫中添加書評,可以有以下兩種方法 在圖書表中增加一個書評列 可能導(dǎo)致問題 評論員可能無法評論所有的圖書,書評列將會存在許多的空值。 極大的浪費空間 統(tǒng)計列總量或者使用計算函數(shù)時

6、可能導(dǎo)致錯誤 新增一個書評表,書評表通過ISBN與圖書表進(jìn)行關(guān)聯(lián) 可解決在特殊表中增加書評列所導(dǎo)致的問題,Select,查詢所有作者信息 查詢名字為”作者甲”的個人信息 查詢所有書籍信息 查詢作者甲寫的所有書籍信息 統(tǒng)計作者甲所寫書籍的數(shù)量 統(tǒng)計作者甲所寫書籍的總價格 統(tǒng)計所有作者所寫書籍的數(shù)量,select,查詢所有作者信息 Select * from tauthor Select tauthor .* from tauthor Select fauthorid,fname from tauthor,Select,查詢名字為”作者甲”的個人信息 Select * from tauthor W

7、here fname like 作者甲,Select,查詢所有書籍信息 SELECT tbook . * , tauthor.fnameFROM tbook, tauthorWHERE tbook.fauthorid = tauthor.fid,Select,查詢作者甲寫的所有書籍信息 SELECT tbook . * , tauthor.fnameFROM tbook, tauthorWHERE tbook.fauthorid = tauthor.fid AND Tauthor.fname LIKE 作者甲,Select,統(tǒng)計作者甲所寫書籍的數(shù)量 select fname,count(*)

8、from tbook,tauthor where tauthor.fname = 作者甲 and tbook.fauthorid = tauthor.fid,Select,統(tǒng)計作者甲所寫書籍的總價格 select fname,sum(fprice) from tbook,tauthor where tauthor.fname = 作者甲 and tbook.fauthorid = tauthor.fid,Select,統(tǒng)計所有作者所寫書籍的數(shù)量 SELECT tauthor .fname, count( * ) AS num FROM tbook, tauthor WHERE tbook.fa

9、uthorid = tauthor.fid GROUP BY tauthor .fname,Select,統(tǒng)計作者甲所寫書籍的數(shù)量 SELECT fname, count( * ) AS num FROM tbook, tauthor WHERE tbook.fauthorid = tauthor.fid GROUP BY tauthor .fname HAVING tauthor .fname like 作者甲,Select,統(tǒng)計所有作者所寫書籍的總價格 SELECT fname, sum( fprice ) AS num FROM tbook, tauthor WHERE tbook.fa

10、uthorid = tauthor.fid GROUP BY tauthor .fname,數(shù)據(jù)庫基本操作,Select Insert Delete Update,Select,SELECT field1, field2, field3, field4 FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition /與group by配合使用 ORDER BY order_expression ASC | DESC ,Insert,Insert into tablena

11、me(field1,field2,field3) Values(value1,value2,value3),Update,Update table Set field1=value1,field2=value2 Where (field3=value3 and field4=value4) or (field5=value5 and field6=value6),delete,Delete from table Where field1=value1 and field2=value2,創(chuàng)建數(shù)據(jù)庫實例,創(chuàng)建一圖書數(shù)據(jù)庫,用來保存圖書信息、客戶信息、訂單信息。 考慮建模對象 分析對象屬性 選擇有

12、意義的鍵 需要詢問數(shù)據(jù)庫的問題 數(shù)據(jù)庫優(yōu)化,創(chuàng)建數(shù)據(jù)庫實例,考慮建模對象 圖書 作者 出版社 客戶 訂單,創(chuàng)建數(shù)據(jù)庫實例,分析對象屬性 圖書 書名,價格,作者,出版社,ISBN 作者 姓名,電話,地址 出版社 名稱,電話,地址 客戶 姓名,電話,地址 訂單 客戶,圖書,價格,數(shù)量,金額,時間,創(chuàng)建數(shù)據(jù)庫實例,選擇有意義的鍵 作者 編號,姓名,電話,地址 出版社 編號,名稱,電話,地址 客戶 編號,姓名,電話,地址 圖書 編號,書名,價格,作者編號,出版社編號, ISBN 訂單 編號,客戶編號,圖書編號,價格,數(shù)量,金額,時間,創(chuàng)建數(shù)據(jù)庫實例,需要詢問數(shù)據(jù)庫的問題 對數(shù)據(jù)庫要做哪些操作? 操作對

13、象的數(shù)據(jù)是否已經(jīng)保存到數(shù)據(jù)庫中? 哪些操作是最頻繁的?,創(chuàng)建數(shù)據(jù)庫實例,需要詢問數(shù)據(jù)庫的問題 對數(shù)據(jù)庫要做哪些操作? 單表查詢 多表聯(lián)合查詢 使用聚合函數(shù),創(chuàng)建數(shù)據(jù)庫實例,需要詢問數(shù)據(jù)庫的問題 對數(shù)據(jù)庫要做哪些操作? 單表查詢 查看所有作者的信息 select * from tauthor select tauthor.* from tauthor select fid,fauthor,fphoneno,faddress from tauthor 查看作者“張三”的信息 select * from tauthor where fauthor like 張三 查找作者姓名中有一個“張”的所有作者

14、 select * from tauthor where fauthor like %張%,創(chuàng)建數(shù)據(jù)庫實例,需要詢問數(shù)據(jù)庫的問題 對數(shù)據(jù)庫要做哪些操作? 多表聯(lián)合查詢 查看所有訂單的信息 select * from torder ? select fcustomer,fbook,torder.fprice,fnumber,fmoney from torder,tcustomer,tbook where torder.fbookid=tbook.fid and torder.fcustomerid=tcustomer.fid 查看客戶“張三”的訂單信息 select fcustomer,fboo

15、k,torder.fprice,fnumber,fmoney from torder,tcustomer,tbook where fcustomer like 張三 and torder.fcustomerid=tcustomer.fid and torder.fbookid=tbook.fid,創(chuàng)建數(shù)據(jù)庫實例,需要詢問數(shù)據(jù)庫的問題 對數(shù)據(jù)庫要做哪些操作? 使用聚合函數(shù) 統(tǒng)計客戶“張三”的訂單數(shù)量 select fcustomer,count(*) from torder,tcustomer where fcustomer like 張三 and torder.fcustomerid=tcustomer.fid 統(tǒng)計客戶“張三”所有訂單的總金額 select fcustomer,sum(fprice) from torder,tcustomer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論