版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 《數(shù)據(jù)庫系統(tǒng)概論》</b></p><p><b> 課程設計報告</b></p><p><b> 目 錄</b></p><p><b> 實驗目的</b></p><p><b> 實驗要求</b
2、></p><p><b> 實驗題目</b></p><p><b> 實驗設計</b></p><p><b> 實驗小結</b></p><p><b> 一、實驗目的:</b></p><p> 加深對數(shù)據(jù)庫
3、系統(tǒng)、軟件工程、程序設計語言的理論知識的理解和應用水平;</p><p> 在理論和實驗教學基礎上進一步鞏固已學基本理論及應用知識并加以綜合提高;</p><p> 學會將知識應用于實際的方法,提高分析和解決問題的能力,增強動手能力;</p><p> 為畢業(yè)設計和以后工作打下必要基礎。</p><p> 二、實驗要求運用數(shù)據(jù)庫基本
4、理論與應用知識,在微機RDBMS(SQL Server)的環(huán)境上建立一個數(shù)據(jù)庫應用系統(tǒng)。要求把現(xiàn)實世界的事物及事物之間的復雜關系抽象為信息世界的實體及實體之間聯(lián)系的信息模型,再轉換為機器世界的數(shù)據(jù)模型和數(shù)據(jù)文件,并對數(shù)據(jù)文件實施檢索、更 新和控制等操作。 </p><p><b> 概念設計 </b></p><p> 2.邏輯設計 </p
5、><p> 訂戶(編號,姓名,住址);</p><p> 報刊目錄(代號,名稱,期刊,單價);</p><p> 訂單(編號,代號,日期,起訂期,終定期,訂單量);</p><p> 投遞卡(編號,代號,期號,份量);</p><p><b> 主碼通過橫線給出。</b></p>
6、<p><b> 該關系屬于第一范式</b></p><p><b> 3.完整性設計</b></p><p><b> 關系主碼、外碼約束</b></p><p><b> 三、實驗題目</b></p><p> ?。?)創(chuàng)建數(shù)據(jù)庫
7、的結構(2)創(chuàng)建各基本表的結構(3)編制輸入子系統(tǒng),完成數(shù)據(jù)的錄入(4)檢索地址為“太平路4890號”的訂戶信息(5)檢索份數(shù)多于3的期號(6)檢索訂閱“01-01”報刊代號的訂戶名、報刊名、訂閱份數(shù)(7)檢索沒有訂閱“人民日報”的訂戶號(8)檢索至少訂閱“人民日報”的訂戶名(9)檢索至少訂閱了“人民日報”的所有期號的訂戶號(10)檢索未訂閱代號為“03-01”報刊的訂戶名(11)檢索被多個訂戶訂閱的報刊之代號(1
8、2)增加一種報刊“04-01,經(jīng)濟信息報,周報,0.5”(13)刪去報刊代號為“01-03”的報刊(14)把訂戶號“161213”改為“161225”(15)把“090104”訂戶所訂的“01-03”報刊的截止日期改為12(16)檢索訂閱期在1到12月份的各種報刊的代號和總數(shù)(17)檢索每種報刊的訂閱總數(shù),并給出報刊代號(18)統(tǒng)計各種報刊的訂戶數(shù)(19)輸出如下報表: 訂戶姓名報刊名稱期 號日 期起訂
9、期終訂期份 數(shù)(20)輸出操作結果和程序清單</p><p><b> 課程設計補充內(nèi)容:</b></p><p><b> 創(chuàng)建視圖:</b></p><p> 報刊訂閱:查詢出用戶楊春花訂閱情況(字段根據(jù)自己設計選擇即可)</p><p><b> 授權操作:</b
10、></p><p> 請創(chuàng)建用戶YANG ,并授予他可以查詢,修改第一題所建視圖的權限。</p><p><b> 觸發(fā)器操作:</b></p><p> 刪除某一個用戶的記錄時,利用觸發(fā)器實現(xiàn)級聯(lián)刪除,即刪除其他表中該用戶的相應信息</p><p> 更新起訂期和終定期時,若字段值小于1或者大于12,請?zhí)?/p>
11、示“數(shù)據(jù)無效”錯誤</p><p> 更新用戶訂閱報刊份數(shù)時,請輸出訂閱報刊總份數(shù)大于6份的用戶姓名和訂閱數(shù)量</p><p><b> 訂單(ORDER)</b></p><p> 訂戶號(CNO)日期(DATE)報刊代號(NMNO)起訂期(START)終訂期(TERM)份 數(shù)(QTY)09010183121501-0101
12、12109010184012003-010406209010184010162-260106109010483120501-010112509010484013101-030205209020584071501-030912109020584062103-010712209020583120713-300112109020584053158-8
13、00712116041283122301-010112116041284031701-030412216041284062503-010708116121384093101-011112216121384031662-260407116748084012701-0102122</p><p> 訂戶(CUSTOMER)</p&g
14、t;<p> 編號(CNO) 姓名(NAME)住址(ADDR)090101 單明 北京路10號090104 楊春花 中山路4235號090205 陳衛(wèi)星 漢府街1234號160412 李宇 光華門路784號161213 吳明鎮(zhèn) 鼓樓街2107號167480 王文武
15、太平路4890號 </p><p> 報刊目錄(NMTABLE)</p><p> 代號(NMNO)名稱(TITLE)刊期(PERIOD)單價(PRICE)01-01人民日報 日報0.06701-03中國日報 周六報0.1003-01解放日報 日報0.03311-06物價市場 半月刊0.0413-30內(nèi)蒙古科技
16、報周報0.0358-80新疆社會科學季刊0.6062-20四川中醫(yī) 月刊0.35</p><p> 投遞卡(SENDING)</p><p> 訂戶號(CNO)報刊代號(NMNO)期號(ISSUE)份數(shù)(QTY)09010101-012407109010103-01134 209010162-26204 109010
17、401-012407509010401-037840209020501-037840109020503-012401209020513-30780 109020558-80230 109020558-80231 116041201-012407116041201-037840216041201-012408116041201-03784
18、1216121301-012407216121362-2645 1</p><p><b> 四、實驗設計</b></p><p> 1-1創(chuàng)建數(shù)據(jù)庫的結構</p><p> 1-2創(chuàng)建各基本表的結構</p><p> 在表“訂單OR1”中將“訂戶號CNO”和“報刊代號NMNO”設置為主鍵
19、,其中“訂戶號CNO”為表“訂戶CUSTOMER”的主鍵,“報刊代號NMNO”為表“報刊目錄NMTABLE”的主鍵</p><p> 在表“訂戶CUSTOMER”中將“編號CNO”設置為主鍵</p><p> 在表“報刊目錄NMTABLE”中將“代號NMNO”設置為主鍵</p><p> 在表“投遞卡SENDING”中將“訂戶號CNO”和“期號ISSUE”設置
20、為主鍵,其中“訂戶號CNO”為“訂戶CUSTOMER”的主鍵</p><p> 1-3 編制輸入子系統(tǒng),完成數(shù)據(jù)的錄入代碼段:</p><p><b> INSERT</b></p><p><b> INTO OR1</b></p><p> VALUES('167480'
21、;,'840127','01-01',02,12,2);</p><p><b> 結果</b></p><p> 1-4檢索地址為“太平路4890號”的訂戶信息</p><p><b> 代碼段</b></p><p><b> SELECT *&
22、lt;/b></p><p> FROM CUSTOMER</p><p> WHERE ADDR='太平路號';</p><p><b> 結果</b></p><p> 1-5檢索份數(shù)多于3的期號</p><p><b> 代碼段</b>&
23、lt;/p><p> SELECT ISSUE</p><p> FROM SENDING</p><p> GROUP BY ISSUE</p><p> HAVING SUM(QTY)>3;結果</p><p> 1-6檢索訂閱“01-01”報刊代號的訂戶名、報刊名、訂閱份數(shù)</p>&
24、lt;p><b> 代碼段</b></p><p> SELECT NAME,TITLE,QTY </p><p> FROM OR1,CUSTOMER,NMTABLE</p><p> WHERE OR1.NMNO='01-01' AND OR1.CNO=CUSTOMER.CNO AND NMTABLE.NMNO
25、='01-01';</p><p><b> 結果</b></p><p> 1-7檢索沒有訂閱“人民日報”的訂戶號</p><p><b> 代碼段</b></p><p> SELECT DISTINCT CNO</p><p><b>
26、 FROM OR1</b></p><p> WHERE OR1.CNO NOT IN</p><p> (SELECT DISTINCT CNO</p><p> FROM NMTABLE,OR1 </p><p> WHERE TITLE='人民日報' AND NMTABLE.NMNO=OR1.N
27、MNO </p><p><b> 結果</b></p><p> 1-8檢索至少訂閱“人民日報”的訂戶名</p><p><b> 代碼段</b></p><p> SELECT NAME</p><p> FROM CUSTOMER,OR1,NMTABLE<
28、;/p><p> WHERE NMTABLE.TITLE='人民日報' AND OR1.NMNO=NMTABLE.NMNO</p><p> AND CUSTOMER.CNO=OR1.CNO ;</p><p><b> 結果</b></p><p> 1-9檢索至少訂閱了“人民日報”的所有期號的訂戶
29、號</p><p><b> 代碼段</b></p><p> SELECT DISTINCT S1.CNO</p><p> FROM SENDING S1</p><p> WHERE NOT EXISTS</p><p><b> (SELECT *</b>
30、;</p><p> FROM SENDING S2,NMTABLE </p><p> WHERE NMTABLE.TITLE='人民日報' AND S2.NMNO=NMTABLE.NMNO AND </p><p> NOT EXISTS</p><p><b> (SELECT *</b>&
31、lt;/p><p> FROM SENDING S3</p><p> WHERE S1.CNO=S3.CNO AND S2.ISSUE=S3.ISSUE </p><p><b> )</b></p><p><b> );</b></p><p><b>
32、 結果</b></p><p> 1-10檢索未訂閱代號為“03-01”報刊的訂戶名代碼段</p><p> SELECT DISTINCT NAME</p><p> FROM OR1,CUSTOMER</p><p> WHERE OR1.CNO=CUSTOMER.CNO AND OR1.CNO NOT IN &l
33、t;/p><p> (SELECT OR2.CNO </p><p> FROM OR1 OR2</p><p> WHERE OR2.NMNO='03-01' </p><p><b> );</b></p><p><b> 結果</b></p
34、><p> 1-11檢索被多個訂戶訂閱的報刊之代號代碼段</p><p> SELECT DISTINCT NMNO</p><p><b> FROM OR1</b></p><p> GROUP BY NMNO</p><p> HAVING SUM(QTY)>3;</p&
35、gt;<p><b> 結果</b></p><p> 1-12增加一種報刊“04-01,經(jīng)濟信息報,周報,0.5”</p><p><b> 代碼段</b></p><p><b> INSERT </b></p><p> INTO NMTABLE&
36、lt;/p><p> VALUES ('04-01','經(jīng)濟信息報','周報',0.5);</p><p><b> 結果</b></p><p> 1-13刪去報刊代號為“01-03”的報刊</p><p> 代碼段DELETE</p><p&g
37、t; FROM NMTABLE</p><p> WHERE NMTABLE.NMNO='01-03'</p><p><b> DELETE</b></p><p><b> FROM OR1</b></p><p> WHERE OR1.NMNO='01-03&
38、#39;</p><p><b> DELETE</b></p><p> FROM SENDING</p><p> WHERE SENDING.NMNO='01-03';</p><p><b> 結果</b></p><p> 1-14把訂戶號
39、“161213”改為“161225”</p><p><b> 代碼段</b></p><p> UPDATE OR1</p><p> SET OR1.CNO='161225'</p><p> WHERE OR1.CNO='161213' </p><p&g
40、t; UPDATE CUSTOMER</p><p> SET CUSTOMER.CNO='161225'</p><p> WHERE CUSTOMER.CNO='161213' </p><p> UPDATE SENDING</p><p> SET SENDING.CNO='16122
41、5'</p><p> WHERE SENDING.CNO='161213' ;</p><p><b> 結果</b></p><p> 1-15把“090104”訂戶所訂的“01-03”報刊的截止日期改為12</p><p><b> 代碼段</b></p&
42、gt;<p> UPDATE OR1</p><p> SET TERM=12</p><p> WHERE NMNO='01-03' AND CNO='090104';</p><p><b> 結果</b></p><p> 因為前面已經(jīng)刪除過,所以0行受影響
43、</p><p> 1-16檢索訂閱期在1到12月份的各種報刊的代號和總數(shù)</p><p><b> 代碼段</b></p><p> SELECT NMNO, SUM(QTY)</p><p><b> FROM OR1</b></p><p> WHERE ST
44、ART>=1 AND TERM<=12</p><p> GROUP BY NMNO ;</p><p><b> 結果</b></p><p> 1-17檢索每種報刊的訂閱總數(shù),并給出報刊代號</p><p><b> 代碼段</b></p><p>
45、 SELECT NMNO,SUM(QTY)</p><p><b> FROM OR1</b></p><p> GROUP BY NMNO;</p><p><b> 結果</b></p><p> 1-18統(tǒng)計各種報刊的訂戶數(shù)</p><p><b>
46、 代碼段</b></p><p> SELECT NMNO,count(CNO)</p><p><b> FROM OR1</b></p><p> GROUP BY NMNO;</p><p><b> 結果</b></p><p> 1-19輸出
47、如下報表:訂戶姓名報刊名稱期 號日 期起訂期終訂期份 數(shù)</p><p><b> 代碼段</b></p><p> SELECT CUSTOMER.NAME 訂戶姓名,NMTABLE.TITLE 報刊名稱,OR1.DATA 日期,OR1.START 起訂期, OR1.TERM 終訂期,OR1.QTY 份數(shù)</p><p>
48、 FROM OR1,CUSTOMER,NMTABLE</p><p> WHERE OR1.CNO=CUSTOMER.CNO AND OR1.NMNO=NMTABLE.NMNO;</p><p><b> 結果</b></p><p><b> 1-20創(chuàng)建視圖:</b></p><p>&l
49、t;b> 代碼段</b></p><p> CREATE VIEW CUS_OR1</p><p><b> AS </b></p><p> SELECT OR1.CNO,NAME,DATA,NMNO,START,TERM,QTY</p><p> FROM OR1,CUSTOMER<
50、/p><p> WHERE OR1.CNO=CUSTOMER.CNO;</p><p><b> 結果</b></p><p> 1-21查詢出用戶楊春花訂閱情況</p><p><b> 代碼段</b></p><p><b> SELECT *</b
51、></p><p> FROM CUS_OR1</p><p> WHERE NAME='楊春花';</p><p><b> 結果</b></p><p><b> 1-22授權操作:</b></p><p> 請創(chuàng)建用戶YANG ,并授予他
52、可以查詢,修改第一題所建視圖的權限。</p><p> GRANT SELECT,UPDATE</p><p> ON CUS_OR1</p><p><b> TO YANG;</b></p><p><b> 結果</b></p><p> 1-23觸發(fā)器操作:
53、先建外碼</p><p><b> OR1的外碼</b></p><p><b> 代碼段</b></p><p> ALTER TABLE OR1</p><p><b> ADD</b></p><p> CONSTRAINT PK_CNO
54、</p><p> FOREIGN KEY(CNO) REFERENCES CUSTOMER(CNO);</p><p><b> 結果</b></p><p><b> 代碼段</b></p><p> ALTER TABLE OR1</p><p><b&g
55、t; ADD</b></p><p> CONSTRAINT PK_NMNO</p><p> FOREIGN KEY(NMNO) REFERENCES NMTABLE(NMNO);</p><p><b> 結果</b></p><p> SENDING 的外碼</p><p&
56、gt;<b> 代碼段</b></p><p> ALTER TABLE SENDING</p><p><b> ADD</b></p><p> CONSTRAINT PK_CNO2</p><p> FOREIGN KEY(CNO) REFERENCES CUSTOMER(CNO);
57、 </p><p><b> 結果</b></p><p><b> 代碼段</b></p><p> ALTER TABLE SENDING</p><p><b> ADD</b></p><p> CONSTRAINT PK_NMNO2&
58、lt;/p><p> FOREIGN KEY(NMNO) REFERENCES NMTABLE(NMNO);</p><p><b> 結果</b></p><p> 1-24刪除某一個用戶的記錄時,利用觸發(fā)器實現(xiàn)級聯(lián)刪除,即刪除其他表中該用戶的相應信息</p><p> 代碼段CREATE TRIGGER DELE
59、CTER</p><p> ON CUSTOMER</p><p> INSTEAD OF DELETE </p><p><b> AS </b></p><p><b> BEGIN</b></p><p> DECLARE @CN1 NCHAR(12);<
60、;/p><p> SELECT @CN1=CNO </p><p> FROM DELETED;</p><p><b> DELETE </b></p><p><b> FROM OR1</b></p><p> WHERE CNO=@CN1;</p>
61、<p><b> DELETE </b></p><p> FROM SENDING</p><p> WHERE CNO=@CN1;</p><p><b> DELETE </b></p><p> FROM CUSTOMER</p><p>
62、 WHERE CNO=@CN1;</p><p><b> END;</b></p><p><b> 結果</b></p><p><b> 代碼段</b></p><p><b> DELETE</b></p><p>
63、 FROM CUSTOMER</p><p> WHERE CNO='167480';</p><p><b> 結果</b></p><p> 1-25更新起訂期和終定期時,若字段值小于1或者大于12,請?zhí)崾尽皵?shù)據(jù)無效”錯誤</p><p><b> 代碼段</b><
64、;/p><p> CREATE TRIGGER UP1</p><p><b> ON OR1</b></p><p> AFTER UPDATE </p><p><b> AS BEGIN</b></p><p> DECLARE @S SMALLINT;</
65、p><p> SELECT @S=START </p><p> FROM INSERTED;</p><p> DECLARE @T SMALLINT;</p><p> SELECT @T=TERM </p><p> FROM INSERTED;</p><p> IF (@S&l
66、t;1 OR @S>12)</p><p><b> BEGIN</b></p><p> PRINT '輸入錯誤,請重新輸入';</p><p><b> ROLLBACK;</b></p><p><b> END ;</b></p>
67、;<p> IF (@T<1 OR @T>12)</p><p><b> BEGIN</b></p><p> PRINT '輸入錯誤,請重新輸入';</p><p><b> ROLLBACK;</b></p><p><b> EN
68、D ;</b></p><p><b> END;</b></p><p><b> 結果</b></p><p><b> 代碼段</b></p><p> UPDATE OR1</p><p> SET START=14<
69、/p><p> WHERE CNO='090205' AND NMNO='58-80';</p><p><b> 結果</b></p><p> 1-26更新用戶訂閱報刊份數(shù)時,請輸出訂閱報刊總份數(shù)大于6份的用戶姓名和訂閱數(shù)量</p><p><b> 代碼段</b&
70、gt;</p><p> CREATE TRIGGER UP3</p><p><b> ON OR1</b></p><p> AFTER UPDATE</p><p><b> AS BEGIN</b></p><p> IF UPDATE(QTY)</
71、p><p><b> BEGIN</b></p><p> SELECT NAME 用戶姓名,SUM(QTY) 訂閱份數(shù)</p><p> FROM OR1,CUSTOMER</p><p> WHERE OR1.CNO=CUSTOMER.CNO</p><p> GROUP BY CU
72、STOMER.NAME</p><p> HAVING SUM(QTY)>6;</p><p><b> END ;</b></p><p><b> END;</b></p><p><b> 結果</b></p><p><b&
73、gt; 代碼段</b></p><p> UPDATE OR1</p><p><b> SET QTY=7</b></p><p> WHERE CNO='090104' AND NMNO='01-03';</p><p><b> 結果</b>
74、;</p><p><b> 五、實驗小結</b></p><p> 學了一個學期的數(shù)據(jù)庫,總感覺很簡單,但是真正的到自己操作的時候才發(fā)現(xiàn)并不簡單,大錯誤就先不說,小錯誤就一個接一個,比如說錯把雙引號用作單引號,將表的名字取的和關鍵字一樣,報錯時卻不知道錯在哪兒了,在不同的數(shù)據(jù)庫下新建查詢,導致結果錯誤,中文字符與英語字符的轉換,下劃線“-”與連線“—”區(qū)分等等。
75、發(fā)現(xiàn)錯誤的過程就是一個學習的過程,雖然錯的很多,但那也正是自己水平的體現(xiàn),或者說那樣也就減少了以后自己工作中的錯誤,吃一塹長一智。</p><p> 雖然很短的幾天,但是對SQL語句了解的更多了一些,確實像老師所講的那樣,這是目前我所學的語言中最簡單的一門了,很容易上手的,即便以前學的不認真,但是只要仔細的研究一下,還是會寫一些簡單的語句的,但是僅僅的局限于照葫蘆畫瓢還是不夠的,要有自己的思路,這樣才能真正的掌
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設計--數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--數(shù)據(jù)庫原理及應用課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計---網(wǎng)上拍賣數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--bbs系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計--cd唱片數(shù)據(jù)庫設計
- 數(shù)據(jù)庫原理課程設計---個人事物管理數(shù)據(jù)庫課程設計
- 數(shù)據(jù)庫課程設計課程設計論文-醫(yī)院信息管理數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計---旅行社數(shù)據(jù)庫
- 數(shù)據(jù)庫課程設計報告--設備儀器數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--學生課程數(shù)據(jù)庫的設計與實現(xiàn)
- 數(shù)據(jù)庫課程設計--快餐訂餐系統(tǒng)數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計--圖書借閱管理數(shù)據(jù)庫設計
- 數(shù)據(jù)庫課程設計(finish)
評論
0/150
提交評論