版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
ASP.NET動態(tài)網(wǎng)站開發(fā)教程ASP.NET動態(tài)網(wǎng)站開發(fā)教程
http://第13章數(shù)據(jù)庫與SQL語言數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”。以二維表格的形式存放數(shù)據(jù)的數(shù)據(jù)庫,稱為關系型數(shù)據(jù)庫職工號姓名性別出生日期地區(qū)代碼工資簡歷00001趙巖男1976/5/250101680……00002張曼曼女1978/1/260211560……00003李小華女1983/10/300241630……00004徐海男1973/12/200262100……:::::::開發(fā)動態(tài)網(wǎng)站并沒有強制必須使用數(shù)據(jù)庫,但是,開發(fā)一個功能強大的動態(tài)網(wǎng)站卻離不開數(shù)據(jù)庫13.1設計一個良好的數(shù)據(jù)庫13.1.1基本術語13.1.2規(guī)范化設計13.1.1基本術語
術
語解
釋實體數(shù)據(jù)表的每一行表示一個實體,也稱為記錄。同一表中不能出現(xiàn)完全相同的兩行記錄關系一個關系的邏輯結(jié)構(gòu)就是一張二維表,它描述各個實體之間的關系屬性數(shù)據(jù)表的每一列是一個屬性(也稱為字段)。在標題欄中表示屬性的名稱,在表中顯示各實體的屬性值域?qū)傩缘娜≈捣秶?,例如,正常的成績必須在零以上關系模式即對關系的描述,其格式為:關系名(屬性名1,屬性名2,…屬性名n)關鍵字可以唯一地表示和區(qū)分實體的一個屬性或多個屬性的組合稱為關鍵字。例如,表13-1中的職工號就可以作為關鍵字主關鍵字(主鍵)在一個關系中可能存在多個關鍵字,從中可以選擇一個作為主關鍵字外關鍵字(外鍵)用來表示一個表和另一個表建立聯(lián)系的屬性,體現(xiàn)了表之間的聯(lián)系。例如,表13-1中的地區(qū)代碼在同一個表中,記錄和字段的次序無關緊要
13.1.2規(guī)范化設計
設計不好的數(shù)據(jù)庫表會給數(shù)據(jù)管理帶來很多問題,同時,也會帶來大量的數(shù)據(jù)冗余規(guī)范化設計(三范式)第一范式(1NF)第二范式(2NF)第三范式(3NF)1)第一范式(1NF)確保每列的原子性(每列都是不可再分的最小數(shù)據(jù)單元)2)第二范式(2NF)滿足1NF,并且除了主鍵以外的其他列,都依賴與該主鍵(每個表只描述一件事情)3)第三范式(3NF)滿足2NF,并且除了主鍵以外的其他列都不傳遞依賴于主鍵列“訂單編號”和“顧客姓名”并不是直接相關,而是通過“顧客編號”相關的(顧客姓名有可能重名,所以應以顧客編號進行唯一區(qū)分),這就是傳遞依賴。因此,為滿足第三范式,需要將其再拆分為兩個表——訂單表和顧客表13.1.3規(guī)范化實例假設某建筑公司要設計一個數(shù)據(jù)庫。公司的業(yè)務規(guī)則概括說明如下:公司承擔多個工程項目,每一項工程有:工程號、工程名稱、施工人員等;公司有多名職工,每一名職工有:職工號、姓名、性別、職務(工程師、技術員)等;公司按照工時和小時工資率支付工資,小時工資率由職工的職務決定(例如,技術員的小時工資率與工程師不同)。工程號工程名稱職工號姓名職務小時工資率工時實發(fā)工資A1花園大廈1001齊光明工程師6513845.001002李思岐技術員6016960.001004葛宇宏律師60191140.00
小計
2945.00A2立交橋1001齊光明工程師6515975.001003鞠明亮工人5517935.00
小計
1910.00A3臨江飯店1002李思岐技術員60181080.001004葛宇洪技術員6014840.00
小計
1920.001)按第一范式規(guī)范化工程號工程名稱職工號姓名職務小時工資率工時A1花園大廈1001齊光明工程師6513A1花園大廈1002李思岐技術員6016A1花園大廈1003鞠明亮工人5517A3臨江飯店1002李思岐技術員6018A3臨江飯店1004葛宇洪技術員6014“實發(fā)工資”字段和數(shù)據(jù)記錄“小計”由于能在計算機輸出時自動計算出來,因此就沒有必要將其保存到數(shù)據(jù)庫中圖中這種設計還會出什么問題?(1)表中包含大量的冗余,可能會導致數(shù)據(jù)異常。包括:更新異常。例如,若只修改“職工號”為“1001”的那個人的職務,則在表中,就必須修改記錄中所有“職工號”=“1001”的行,只要有一個目標記錄沒有被更新到,數(shù)據(jù)就會不準確;添加異常。若要增加一個新的職工,必須要先給這名職工分配一個工程,即時他實際上可能并沒有參與?;蛘?,為了添加這一名新職工的數(shù)據(jù),先給這名職工分配一個虛擬的工程。(因為主關鍵字不能為空);刪除異常。例如,“1001”號職工要辭職,則必須刪除所有“職工號”=“1001”的數(shù)據(jù)行。這樣的刪除操作,很可能丟失了其它有用的數(shù)據(jù),比如“工程師”職務的“小時工資率”這個發(fā)放標準“65”就無意中丟失了。(2)采用這種方法設計表的結(jié)構(gòu),雖然很容易產(chǎn)生工資報表,但是每當為一名職工分配一個工程時,都要重復輸入大量的數(shù)據(jù)(如職務、小時工資率)。這種重復的輸入操作,很可能導致數(shù)據(jù)的不一致性。問題的根源,就是一張表描述了多件事情2)按第二范式規(guī)范化對表進行拆分,使其每個拆分的表中,除了主鍵以外的其他列,都依賴與該主鍵3)按第三范式規(guī)范化按第三范式的要求,除了主鍵以外的其他列都不傳遞依賴于主鍵列。其中員工表的“小時工資率”雖然依賴于主鍵“職工號”,但卻是通過“職務”傳遞依賴過去的。應該把它劃分為另外一個職務表堪稱完美!4)實際創(chuàng)建數(shù)據(jù)表表的關系表面看起來,原來只使用一個表存放數(shù)據(jù),經(jīng)過規(guī)范后反變成了使用4個表存放數(shù)據(jù),好似變得繁瑣了。但實際上,經(jīng)過此番處理后,數(shù)據(jù)的冗余量大大減少(尤其數(shù)據(jù)很多的情況下)對數(shù)據(jù)的增、刪、改處理發(fā)生異常的可能也完全避免了。對于數(shù)據(jù)的統(tǒng)計和分析也變得非常方便。利遠遠大于弊
13.2常與ASP.NET配套的數(shù)據(jù)庫1)Access數(shù)據(jù)庫2)SQLServer數(shù)據(jù)庫SQLServer2000/2005ServerSQLServer2005Express
SQLServer2005SQLServerManagementStudioSQLServer2005(續(xù))查詢編輯器
SQLServer2000企業(yè)管理器
SQLServer2000(續(xù))查詢分析器Access案例:使用SQLServer2000存放“通訊錄”信息SQLServer2000數(shù)據(jù)表結(jié)構(gòu)設計案例:使用Access存放“通訊錄”信息Access數(shù)據(jù)表結(jié)構(gòu)設計字段名稱類型寬度必填字段標題說明ID自動編號YES編號主鍵Name文本10YES姓名Sex文本2NOT性別默認值“男”Birth日期/時間NOT出生日期E_mail文本40NOT電子郵箱Telephone文本40NOT聯(lián)系電話Address文本40NOT通信地址Postcode文本6NOT郵政編碼13.3利用VisualStudio的【服務器資源管理器】管理數(shù)據(jù)庫
13.4SQL語言基礎SQL是結(jié)構(gòu)化查詢語言(StructuredQueryLanguage)的英文縮寫,由于其功能豐富、語言簡捷,現(xiàn)已成為關系型數(shù)據(jù)庫的標準語言??梢允褂肰isualStudio的【服務器資源管理器】來執(zhí)行SQL13.4.1查詢語句SELECTApplicationLogic客戶程序查詢請求查詢結(jié)果集數(shù)據(jù)庫ABCDEFG
SELECT*FROM數(shù)據(jù)表名稱查詢產(chǎn)生一個虛擬表,看到的是表形式顯示的結(jié)果,但結(jié)果并不真正存儲,每次執(zhí)行查詢只是現(xiàn)從數(shù)據(jù)表中提取數(shù)據(jù),并按照表的形式顯示出來怎么查的?學員編號學員姓名地址所在班級…….001張明全湖南長沙S201002李菲湖北宜昌S202003于寄謙甘肅天水S204004劉國正山東荷澤S201005周接輪臺灣新竹S204006鞏小妹香港龍灣S203007鞏大妹香港龍灣S203008張明敏北京順義S202009矛十八四川棉陽S204010羅林光陜西臨潼S202011司馬坡新疆喀什S201S202陜西臨潼羅林光010…S202湖北宜昌李菲002S202北京順義張明敏008SELECT*FROMStudentsWHERE所在班級
=‘S202’查詢SELECT<列名>FROM
<表名>[WHERE<查詢條件表達式>][ORDERBY<排序的列名>[ASC或DESC]]
列名稱SELECT
SCode,
SName,
SAddress
表名FROMStudents過濾條件WHERE
SSEX=0排序條件ORDERBY
SCodeSELECT
SCode,SName,SAddress
FROM
StudentsWHERE
SSEX=0
ORDERBY
SCode數(shù)據(jù)查詢-基礎查詢?nèi)康男泻土蠸ELECT*FROMStudents
查詢部分行SELECT
SCode,SName,SAddressFROMStudentsWHERE
SAddress=‘北京市朝陽區(qū)'SELECT
SCode,SName,SAddressFROMStudentsWHERE
SAddress<>‘沈陽市皇姑區(qū)'升序排列SELECT*FROMStudentsWHERE所在班級=‘S202’ORDERBYScore降序排列SELECT*FROMStudentsWHERE所在班級=‘S202’ORDERBYScoreDESC數(shù)據(jù)查詢-排序聚合函數(shù)AVG返回平均值COUNT返回SELECT語句查詢所得的記錄數(shù)量。使用COUNT時,字段名稱可用*代替,如COUNT(*)MAX返回最大值MIN返回最小值SUM返回和值SELECTCOUNT(*)AS不及格人數(shù)FROMStudentWHEREScore<60多表查詢—問題建筑公司工資報表最終劃分為4個表,分別是工程表、員工表、職務表和項目工時表。如何同時從這些獨立的表中取得數(shù)據(jù)?員工表
職工號姓名職務1001100210031004齊光明李思岐鞠明亮葛宇洪工程師技術員工人技術員………職務表
職務工程師技術員工人… 小時工資率656055…查詢結(jié)果職工號1001100210031004姓名小時工資率齊光明李思岐鞠明亮葛宇洪65605560………SELECT職工號,姓名,小時工資率FROM職務表,員工表WHERE職務表.職務=員工表.職務13.4.2插入語句INSERTINSERT[INTO]<數(shù)據(jù)表名
>[列名]VAlUES<值列表>INSERT員工表(職工號,姓名,職務)VALUES('1005','任吾學','工程師')例如:向員工表內(nèi)添加一名新的員工:
(職工號為1005,姓名為任吾學,職務為工程師)13.4.3更新語句UPDATEUPDATE<數(shù)據(jù)表名
>SET
字段名1=新的字段值1,字段名2=新的字段值2,……[WHERE
條件表達式]
UPDATE員工表SET職務='技術員'WHERE職工號='1005'
例如:將員工表內(nèi)職工號為1005的員工職務更改為技術員
13.4.4刪除語句DELETEDELETE
[FROM]
數(shù)據(jù)表名[WHERE
條件表達式]
DELETE員工表WHERE姓名='任吾學'
例如:刪除員工表內(nèi)姓名為任吾學的記錄
ASP.NET動態(tài)網(wǎng)站開發(fā)教程
http://本章小結(jié)本章通過創(chuàng)建“通訊錄”數(shù)據(jù)庫案例,介紹了利用Access2003和SQLServer2000創(chuàng)建數(shù)據(jù)庫的基本流程,學習了數(shù)據(jù)庫及表的創(chuàng)建方法和基本使用方法。任何應用程序向數(shù)據(jù)庫系統(tǒng)發(fā)出命令以獲得數(shù)據(jù)庫系統(tǒng)的響應,最終都必然體現(xiàn)為SQL語句形式的指令,所以在本章最后詳細介紹了SQL語言。為了設計結(jié)構(gòu)良好的數(shù)據(jù)庫,需要遵守一些專門的規(guī)則,稱為數(shù)據(jù)庫的設計范式。第一范式(1NF)的目標:確保每列的原子性。第二范式(2NF)的目標:確保表中的每列,都和主鍵相關
第三范式(3NF)的目標:確保每列都和主鍵列直接相關,而不是間接相關這里給出一個學習SQL不錯的網(wǎng)站:深入淺出SQL指南,網(wǎng)址是http:///ASP.NET動態(tài)網(wǎng)站開發(fā)教程清華大學出版社1.填空題(1) SQLServer數(shù)據(jù)庫的存儲結(jié)構(gòu)包括
和
。(2) 一個SQLServer數(shù)據(jù)庫至少應該包含一個
文件和一個
文件。(3) 在Access2003中,通過
來執(zhí)行SQL語句,而在SQLServer2000中,通過
來執(zhí)行SQL語句。(4) SQL語言中,用于排序的是
子句。2.選擇題(1) 下列哪個關鍵字在SELECT子句中表示所有列?()A.*B.ALLC.DESCD.DISTINCT(2) 下列哪個聚合函數(shù)可以計算平均值?()A.SUMB.AVGC.COUNTD.MIN(3) 下列哪個聚合函數(shù)可以計算某一列上的最大值?()A.SUMB.AVGC.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 超聲科檢查互認制度
- 2026新疆北京銀行烏魯木齊分行招聘參考考試試題附答案解析
- 2026山東濟南市天橋區(qū)所屬事業(yè)單位招聘初級綜合類崗位人員參考考試試題附答案解析
- 2026福建廈門工學院誠聘軍隊院校退役高層次人才參考考試題庫附答案解析
- 2026內(nèi)蒙古鄂爾多斯市城投商業(yè)運營管理有限公司招聘46人備考考試試題附答案解析
- 2026年商洛市商丹高級中學春季招聘參考考試題庫附答案解析
- 糧庫安全生產(chǎn)管理制度
- 網(wǎng)吧全員生產(chǎn)安全制度
- 安全生產(chǎn)值休制度
- 紡織廠安全生產(chǎn)會議制度
- 2025年湖南省公務員錄用考試錄用考試《申論》標準試卷及答案
- 行政崗位面試問題庫及應對策略
- 2025年中信金融業(yè)務面試題庫及答案
- 2025廣東潮州府城文化旅游投資集團有限公司下屬企業(yè)副總經(jīng)理崗位招聘1人筆試歷年備考題庫附帶答案詳解2套試卷
- 城市軌道交通服務與管理崗位面試技巧
- GB/T 46607.1-2025塑料熱固性粉末模塑料(PMCs)試樣的制備第1部分:一般原理及多用途試樣的制備
- 紫金礦業(yè)招聘面試題及答案
- 《允許一切發(fā)生》讀書感悟
- 續(xù)保團購會活動方案
- 產(chǎn)品設計需求與評審表
- 北京市通州區(qū)2024-2025學年七年級下學期期末道德與法治試題(含答案)
評論
0/150
提交評論