數(shù)據(jù)庫銷售訂單管理系統(tǒng)課程設(shè)計_第1頁
數(shù)據(jù)庫銷售訂單管理系統(tǒng)課程設(shè)計_第2頁
數(shù)據(jù)庫銷售訂單管理系統(tǒng)課程設(shè)計_第3頁
數(shù)據(jù)庫銷售訂單管理系統(tǒng)課程設(shè)計_第4頁
數(shù)據(jù)庫銷售訂單管理系統(tǒng)課程設(shè)計_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 目錄TOC o 1-3 h z u HYPERLINK l _Toc358552262 1引言 PAGEREF _Toc358552262 h 1 HYPERLINK l _Toc358552263 1.1編寫目的 PAGEREF _Toc358552263 h 1 HYPERLINK l _Toc358552264 1.2參考資料 PAGEREF _Toc358552264 h 1 HYPERLINK l _Toc358552265 2.需求規(guī)約 PAGEREF _Toc358552265 h 2 HYPERLINK l _Toc358552266 2.1 業(yè)務(wù)描述 PAGEREF _To

2、c358552266 h 2 HYPERLINK l _Toc358552267 2.2 需求分析 PAGEREF _Toc358552267 h 2 HYPERLINK l _Toc358552268 3.數(shù)據(jù)庫環(huán)境說明 PAGEREF _Toc358552268 h 3 HYPERLINK l _Toc358552269 4.數(shù)據(jù)庫的命名規(guī)則 PAGEREF _Toc358552269 h 4 HYPERLINK l _Toc358552270 4.1 數(shù)據(jù)庫對象命名規(guī)則 PAGEREF _Toc358552270 h 4 HYPERLINK l _Toc358552271 4.2 數(shù)據(jù)項(xiàng)

3、編碼規(guī)則 PAGEREF _Toc358552271 h 4 HYPERLINK l _Toc358552272 5.邏輯設(shè)計 PAGEREF _Toc358552272 h 5 HYPERLINK l _Toc358552273 5.1 ER圖 PAGEREF _Toc358552273 h 5 HYPERLINK l _Toc358552274 5.2 關(guān)系模型 PAGEREF _Toc358552274 h 5 HYPERLINK l _Toc358552275 6.物理設(shè)計 PAGEREF _Toc358552275 h 6 HYPERLINK l _Toc358552276 6.1表

4、匯總 PAGEREF _Toc358552276 h 6 HYPERLINK l _Toc358552277 6.2 表1: Suppliers表(供應(yīng)商表) PAGEREF _Toc358552277 h 6 HYPERLINK l _Toc358552278 6.3 表2:product表(產(chǎn)品表) PAGEREF _Toc358552278 h 7 HYPERLINK l _Toc358552279 6.4 表3:sp表(供應(yīng)商產(chǎn)品供應(yīng)表) PAGEREF _Toc358552279 h 7 HYPERLINK l _Toc358552280 6.5 表4: orders表(訂單表) P

5、AGEREF _Toc358552280 h 8 HYPERLINK l _Toc358552281 6.6 表5:po表(產(chǎn)品訂購表) PAGEREF _Toc358552281 h 9 HYPERLINK l _Toc358552282 6.7 表6: employee表(雇員表) PAGEREF _Toc358552282 h 10 HYPERLINK l _Toc358552283 6.8 表7:customer表(客戶表) PAGEREF _Toc358552283 h 11 HYPERLINK l _Toc358552284 6.9 視圖的設(shè)計 PAGEREF _Toc358552

6、284 h 11 HYPERLINK l _Toc358552285 6.10 存儲過程的設(shè)計 PAGEREF _Toc358552285 h 12 HYPERLINK l _Toc358552286 6.11 觸發(fā)器的設(shè)計 PAGEREF _Toc358552286 h 29 HYPERLINK l _Toc358552287 6.12函數(shù)的設(shè)計 PAGEREF _Toc358552287 h 30 HYPERLINK l _Toc358552288 7.安全性設(shè)計 PAGEREF _Toc358552288 h 31 HYPERLINK l _Toc358552289 7.1防止用戶直接操

7、作數(shù)據(jù)庫的方法 PAGEREF _Toc358552289 h 31 HYPERLINK l _Toc358552290 7.2用戶帳號密碼的加密方法 PAGEREF _Toc358552290 h 31 HYPERLINK l _Toc358552291 7.3角色與權(quán)限 PAGEREF _Toc358552291 h 31 HYPERLINK l _Toc358552292 8.數(shù)據(jù)庫管理與維護(hù)說明 PAGEREF _Toc358552292 h 32 HYPERLINK l _Toc358552293 總結(jié) PAGEREF _Toc358552293 h 33 HYPERLINK l _

8、Toc358552294 附錄 PAGEREF _Toc358552294 h 341引言編寫目的本文檔是銷售訂單數(shù)據(jù)庫管理系統(tǒng)設(shè)計文檔的組成部分,編寫數(shù)據(jù)庫設(shè)計文檔的目的是:明確數(shù)據(jù)庫的表名、字段名等數(shù)據(jù)信息,用來指導(dǎo)后期的數(shù)據(jù)庫腳本的開發(fā),本文檔遵循SQL SERVER 2008數(shù)據(jù)庫設(shè)計和開發(fā)規(guī)范。本文檔的讀者對象是需求人員、系統(tǒng)設(shè)計人員、開發(fā)人員、測試人員。設(shè)計該數(shù)據(jù)庫的目的是為了能夠模擬完成一次訂單銷售流程。參考資料表1 參考資料表資料名稱作者文件編號、版本數(shù)據(jù)庫系統(tǒng)概論王珊、薩師煊2006年5月第4版數(shù)據(jù)庫設(shè)計入門經(jīng)典鮑威爾2007年3月第1版數(shù)據(jù)庫原理克羅恩科2005年6月第1版

9、2.需求規(guī)約2.1 業(yè)務(wù)描述銷售訂單數(shù)據(jù)庫管理系統(tǒng)的總目標(biāo)是:在計算機(jī)網(wǎng)絡(luò),數(shù)據(jù)庫和先進(jìn)的開發(fā)平臺上,利用現(xiàn)有的軟件,配置一定的硬件,開發(fā)一個具有開放體系結(jié)構(gòu)的、易擴(kuò)充的、易維護(hù)的、具有良好人機(jī)交互界面的銷售訂單數(shù)據(jù)庫管理系統(tǒng),實(shí)現(xiàn)訂單的下發(fā),數(shù)據(jù)的查詢刪除和修改。2.2 需求分析本銷售訂單數(shù)據(jù)庫管理系統(tǒng)的需求如下,首先在供應(yīng)商表、供應(yīng)表、產(chǎn)品表、訂購表、訂單表、客戶表、雇員表的基本表上建立增、刪、改、查的存儲過程。以便以后再次用到的時候可以直接用存儲過程而不用反復(fù)的寫代碼。第二在實(shí)驗(yàn)中間建立觸發(fā)器,當(dāng)訂購產(chǎn)品的時候可以查詢庫存,如果滿足要求,那么就庫存通過觸發(fā)器實(shí)現(xiàn)庫存的減少。第三在這次客場

10、設(shè)計的基礎(chǔ)上建立一些查詢,比如說要求建立訂單最多的客戶信息的查詢,平均工資的查詢,庫存最多的產(chǎn)品的查詢。最后要求完成一次下訂單的流程。此外,在一個完整的訂單銷售流程中,本數(shù)據(jù)庫系統(tǒng)還提供查詢某供應(yīng)商供應(yīng)的產(chǎn)品信息,查詢某產(chǎn)品信息,查詢某客戶信息,查詢某訂單訂購的產(chǎn)品的信息。對于客戶而言,還提供了查詢訂單最多的客戶的功能。例如當(dāng)在訂單的中只要知道訂單的編號,就可以知道訂單的產(chǎn)品的名字,產(chǎn)品的數(shù)量(產(chǎn)品的信息),雇員的信息,客戶的信息。在訂購的表中知道訂單號就可以知道訂單中產(chǎn)品的數(shù)量??梢孕薷臄?shù)據(jù)庫里面的數(shù)據(jù),例如條件知道供應(yīng)商編號就可以對供應(yīng)商的信息(編號,姓名,x,地址等)進(jìn)行修改,還可以對該

11、供應(yīng)商進(jìn)行刪除。知道客戶的編號就可以對客戶的數(shù)據(jù)(編號,信息姓名,x等)進(jìn)行修改,還可以對該用戶進(jìn)行刪除??偟膩碚f,本數(shù)據(jù)庫系統(tǒng)能夠達(dá)到模擬完成一次訂單銷售流程的要求。在本銷售訂單數(shù)據(jù)庫管理系統(tǒng)中,有一些限制性條件,比如一個客戶可以下多個訂單,但一個訂單只能由一個客戶下,一個訂單可以訂購多種產(chǎn)品,每種產(chǎn)品可被不同訂單訂購等等,這些限制條件的加入能夠使本數(shù)據(jù)庫管理系統(tǒng)的功能更加完善,能夠滿足更高的要求。3.數(shù)據(jù)庫環(huán)境說明表2數(shù)據(jù)庫環(huán)境說明表數(shù)據(jù)庫實(shí)例數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫部署環(huán)境數(shù)據(jù)庫設(shè)計工具數(shù)據(jù)庫存放位置說明銷售訂單數(shù)據(jù)庫管理系統(tǒng)Sql Server 2008Windows 7Sql Server存

12、放位置,絕對路徑/相對路徑用于訂單銷售管理4.數(shù)據(jù)庫的命名規(guī)則4.1 數(shù)據(jù)庫對象命名規(guī)則表3數(shù)據(jù)庫對象命名表數(shù)據(jù)庫對象命名規(guī)則備注表S功能描述字符串例如:Suppliers供應(yīng)商表視圖view_功能描述字符串例如:view_Product產(chǎn)品視圖觸發(fā)器insert_功能描述字符串例如:insert_PO更改庫存觸發(fā)器存儲過程Procedure_功能描述字符串例如:pro_sertSuppliers存儲過程4.2 數(shù)據(jù)項(xiàng)編碼規(guī)則表4數(shù)據(jù)項(xiàng)編碼表數(shù)據(jù)項(xiàng)命名規(guī)則數(shù)據(jù)類型長度范圍備注供應(yīng)商編號兩位整數(shù)序號(001000)定長字符串32位無產(chǎn)品號兩位整數(shù)序號(001000)定長字符串32位無訂單號兩位整

13、數(shù)序號(001000)定長字符串32位無雇員號兩位整數(shù)序號(001000)定長字符串32位無客戶號兩位整數(shù)序號(001000)定長字符串32位無5.邏輯設(shè)計5.1ER圖圖5.1E-R圖5.2 關(guān)系模型供應(yīng)商(供應(yīng)商編號,名稱,地址,x)產(chǎn)品(產(chǎn)品編號,產(chǎn)品名稱,產(chǎn)品類別,出廠價,價格,庫存)供應(yīng)(供應(yīng)商編號,產(chǎn)品編號)訂購(產(chǎn)品編號,訂單編號,數(shù)量)客戶(客戶編號,姓名,地址,電話)訂單(訂單編號,日期,客戶編號,雇員編號,產(chǎn)品種類)雇員(雇員編號,姓名,電話,工資)6.物理設(shè)計6.1表匯總表5匯總表表名功能說明表Suppliers供應(yīng)商表,存儲供應(yīng)商的編號等信息表product產(chǎn)品表,存儲產(chǎn)

14、品的編號、數(shù)量等信息表Sp供應(yīng)商產(chǎn)品供應(yīng)表,存儲供應(yīng)商所供應(yīng)的產(chǎn)品對應(yīng)信息表orders訂單表,存儲訂單的編號、日期等信息表po產(chǎn)品訂購表,存儲產(chǎn)品訂購的對應(yīng)信息表employee雇員表,存儲雇員的編號等信息表customer客戶表,存儲客戶的編號等信息6.2表1: Suppliers表(供應(yīng)商表)表名Suppliers(供應(yīng)商表)數(shù)據(jù)庫用戶Sa主鍵S_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1S_numberchar(32)NY高無主鍵/供應(yīng)商編號2S_namechar(32)NN中無供應(yīng)商名稱3S_address

15、char(32)NN中無供應(yīng)商地址4S_telnumChar(32)NN高無供應(yīng)商電話sql腳本-建立供應(yīng)商表create table Suppliers-供應(yīng)商表( S_number char(32) not null primary key, S_name char(32) not null, S_adress char(32) not null, S_telnub char(32) not null,);6.3表2:product表(產(chǎn)品表)表名Product(產(chǎn)品表)數(shù)據(jù)庫用戶sa主鍵P_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度

16、默認(rèn)值約束條件/說明1P_numberchar(32)NY高無主鍵/產(chǎn)品編號2P_namechar(32)NY高無產(chǎn)品名稱3P_priceintYN中無產(chǎn)品原價4P_expriceintYN中無產(chǎn)品出廠價5P_inventoryintYN中無產(chǎn)品庫存量sql腳本-建立產(chǎn)品表create table product -產(chǎn)品表( p_number char(32) primary key not null, p_name char(32) not null, p_price int, -原價 p_exprice int, -售價 p_inventory int ,-庫存);6.4 表3:sp表(供

17、應(yīng)商產(chǎn)品供應(yīng)表)表名sp(供應(yīng)商產(chǎn)品供應(yīng)表)數(shù)據(jù)庫用戶sa主鍵S_number,P_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1S_numberchar(32)NY高無主鍵/供應(yīng)商號2P_numberchar(32)NY高無主鍵/產(chǎn)品編號sql腳本-建立供應(yīng)商產(chǎn)品供應(yīng)表create table sup-供應(yīng)表( S_number char(32) not null, p_number char(32) not null, primary key(S_number,p_number), foreign key(S_num

18、ber)references Suppliers(S_number) on delete cascade on update cascade, foreign key(p_number)references product(p_number) on delete cascade on update cascade);6.5 表4:orders表(訂單表)表名orders(訂單表)數(shù)據(jù)庫用戶sa主鍵o_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1o_numberchar(32)NY高無主鍵/訂單號2timesdateNN

19、低無訂單日期3e_numberchar(32)YN中無雇員號4c_numberchar(32)NN高無客戶號5pnintYN中無產(chǎn)品種類數(shù)sql腳本-建立訂單表create table orders -訂單表( o_number char(32) not null primary key, empl_number char(32) not null, c_number char(32) not null, times date, pn int,-產(chǎn)品總數(shù) foreign key(c_number)references customer(c_number) on delete cascade o

20、n update cascade, foreign key(empl_number)references employee(empl_number) on delete cascade on update cascade );6.6 表5:po表(產(chǎn)品訂購表)表名po(產(chǎn)品訂購表)數(shù)據(jù)庫用戶sa主鍵p_number o_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1p_numberchar(32)NY高無主鍵/產(chǎn)品號2o_numberchar(32)NY高無主鍵/訂單號3quantintNN低無訂購產(chǎn)品數(shù)量sql腳本-建

21、立產(chǎn)品訂購表create table po-訂購表(p_number char(32),o_number char(32),quant int,primary key(p_number,o_number),foreign key(p_number)references product(p_number)on delete cascadeon update cascade,foreign key(o_number)references orders(o_number)on delete cascadeon update cascade,);6.7 表6:employee表(雇員表)表名emplo

22、yee(雇員表)數(shù)據(jù)庫用戶sa主鍵e_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1e_numberchar(32)NY高無主鍵/雇員號2e_namechar(32)YN中無雇員名稱3e_telnumChar(32)YY高無雇員電話4e_realrealYN低無雇員薪資5e_addresChar(32)YN中無雇員的地址sql腳本-建立雇員表create table employee-雇員表( empl_name char(32), empl_number char(32) primary key, empl_addre

23、s char(32), empl_telnumb char(32), empl_real int,);6.8 表7:customer表(客戶表)表名customer(客戶表)數(shù)據(jù)庫用戶sa主鍵c_number其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1c_numberchar(32)NY高無主鍵/客戶表2c_namechar(32)YN中無客戶名稱3c_addresschar(32)YN中無客戶地址4c_telnubchar(32)YY高無客戶電話sql腳本-建立客戶表create table customer-客戶表( c_nu

24、mber char(32) primary key, c_name char(32), c_adress char(32), c_telnub char(32),);6.9 視圖的設(shè)計1、建立一張客戶信息的視圖目的:屏蔽客戶的地址信息。功能:能夠向管理員提供簡明,直接的客戶信息展示。意義:有利于數(shù)據(jù)庫安全的維護(hù),防止任意修改數(shù)據(jù)庫中的雇員信息。create view v_coustom(name,number)asselect c_name,c_numberfrom customer;2、建立一張訂單視圖信息的視圖目的:用來查詢每個客戶下的訂單數(shù)和用來查找下訂單數(shù)最多的客戶。功能:能夠向管理員

25、提供簡明,直接客戶下訂單的信息展示。意義:有利于數(shù)據(jù)的檢索。create view view_ordersasselect c_number,count(o_number)總數(shù)from ordersgroup by c_number;6.10 存儲過程的設(shè)計1、查詢訂單數(shù)量功能:查詢訂單的數(shù)量目的:存儲查詢訂單數(shù)量的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchOrdersNum -查詢訂單的存儲過程asselect COUNT(*) 訂單總數(shù)-查詢訂單數(shù)量from Orders;圖1 訂單總數(shù)查詢圖2、查詢訂

26、單信息功能:查詢訂單信息目的:存儲查詢訂單信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_select_orders-查詢訂單信息xo_number char(32)asif not exists ( select * from orders where o_number=xo_number ) print該訂單不存在 elseselect orders.o_number,times,pn,c_name,empl_namefrom orders ,customer,employee wherecustomer.c_nu

27、mber=orders.c_numberandorders.empl_number=employee.empl_number and orders.o_number=xo_number圖2 訂單查詢圖3、查詢訂單最多的客戶信息功能:查詢訂單最多的客戶信息目的:存儲查詢訂單最多的客戶信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create view view_orderasselect c_number,count(o_number)總數(shù)from ordersgroup by c_number;drop view view_orders;create procedure

28、 procedure_select_max_oders -查詢訂單數(shù)最多的客戶asselect *from customerwhere c_number in ( select c_number from view_orders where 總數(shù) in( select MAX(總數(shù) ) from view_orders ) ); 圖3 最多訂單客戶效果圖4、查詢客戶信息功能:查詢客戶信息目的:存儲查詢客戶信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_select_coustom -查詢客戶信息xname char(3

29、2)asif not exists ( select * from customer where c_name=xname ) print該客戶不存在 elseselect *from customer where c_name=xname;圖4 查詢客戶信息圖5、查詢雇員信息功能:查詢雇員信息目的:存儲查詢雇員信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_select_empl -查詢雇員信息xname char(32)asif not exists ( select * from employee where e

30、mpl_name=xname ) print該客戶不存在 elseselect *from employee where empl_name=xname;圖5 查詢雇員信息圖6更新客戶信息功能:更新客戶信息目的:存儲更新客戶信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure update_coustome-更新客戶信息 xnumber char(32), xtell char(32), xaddress char(32) as if not exists(select * from customer where c_number=xnumbe

31、r ) print你輸入的客戶不存在 else update customer set c_adress=xaddress,c_telnub=xtell where c_number=xnumber ;圖6 更新客戶信息圖7、查詢產(chǎn)品信息功能:查詢產(chǎn)品信息目的:存儲查詢產(chǎn)品信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_selec_produt xpnumber char(32)-產(chǎn)品的查詢as select *from productwhere p_number=xpnumber;圖7 查詢產(chǎn)品圖8、插入供應(yīng)商信息功

32、能:插入供應(yīng)商信息目的:存儲插入供應(yīng)商信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure inser_suply-增加供應(yīng)商 xSnumber char(32), xSname char(32), xSadress char(32), xStelnub char(32)asif exists(select * from Suppliers where S_number=xSnumber)print 該供應(yīng)商已經(jīng)存在,無需加入。elseinsertinto Suppliersvalues( xSnumber, xSname, xSadress

33、, xStelnub );圖8 插入供應(yīng)商圖9、插入訂單信息功能:插入訂單信息目的:存儲插入訂單信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_insert_orders-插入訂單信息xo_number char(32),xempl_number char(32),xc_number char(32),xtime date,xpn intasif exists ( select * from orders where o_number=xo_number ) print該訂單已經(jīng)存在,不需重復(fù)下訂單 elseinser

34、tinto orders values(xo_number ,xempl_number,xc_number,xtime ,xpn)圖9 插入訂單圖10、插入產(chǎn)品訂購信息功能:插入產(chǎn)品訂購信息目的:存儲插入產(chǎn)品訂購信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_oeder_pro -插入訂單產(chǎn)品xpnumber char(32),xonumber char(32),xquany intasif not exists ( select * from product where p_number=xpnumber ) pri

35、nt倉庫里沒有該產(chǎn)品,不予訂購 elseif not exists ( select * from orders where o_number=xonumber ) print你輸入的訂單號不對 elseif exists ( select * from po where p_number=xpnumber and o_number =xonumber ) print該產(chǎn)品已經(jīng)在訂單中 else ifexists ( select * from product where p_inventoryxquany and p_number=xpnumber ) print該產(chǎn)品庫存不足不予以訂購 e

36、lseinsert into povalues(xpnumber ,xonumber,xquany );圖10 插入訂購產(chǎn)品圖11、插入產(chǎn)品信息功能:插入產(chǎn)品信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_insert_pro-插入產(chǎn)品xnumber char(32),xname char(32),xprice int,xexprice int,xinventory intasif exists(select * from product where p_number=xnumber)update pro

37、ductset p_inventory=p_inventory+xinventoryelseinsert into product values( xnumber, xname, xprice, xexprice, xinventory )圖 11 插入產(chǎn)品圖12、更新供應(yīng)商的信息功能:更新供應(yīng)商的信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_update_suply-更新供應(yīng)商信息 xsnumber char(32), xstell char(32), xsaddress char(32) as if

38、 not exists( select * from Suppliers where S_number=xsnumber ) print你輸入的供應(yīng)商不存在 else update Suppliers set S_adress=xsaddress,S_telnub=xstell where S_number =xsnumber; exec procedure_update_suply 001,一三656478888,大連;圖12 更新供應(yīng)商信息圖一三、刪除供應(yīng)商功能:刪除供應(yīng)商的信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟 create procedur

39、e procedure_delet_supply-刪除供應(yīng)商信息 xnumber char(32) as if not exists(select * from Suppliers where S_number=xnumber ) print你輸入的供應(yīng)商不存在 else delete from Suppliers where S_number =xnumber ; exec procedure_delet_supply 111;圖一三 刪除供應(yīng)商圖14、最多的庫存產(chǎn)品查詢功能:最多的庫存產(chǎn)品查詢目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟圖14 庫存量最大

40、產(chǎn)品查詢圖一五、供應(yīng)商供應(yīng)的產(chǎn)品查詢功能:供應(yīng)商供應(yīng)的產(chǎn)品查詢目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_selet_pro -查詢商供應(yīng)的產(chǎn)品xsnumber char(32)asif not exists(select s_number from Suppliers where S_number=xsnumber )print該供應(yīng)商不存在elseselect S_name,p_name from Suppliers,sup,productwhere Suppliers.S_number=sup.S_

41、number and Suppliers.S_number=xsnumber and sup.p_number=product.p_numberexec procedure_selet_pro 011;圖16 查詢供應(yīng)商供應(yīng)的產(chǎn)品圖16、更新客戶的信息功能:更新客戶信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_update_coustome-更新客戶信息 xnumber char(32), xtell char(32), xaddress char(32) as if not exists(select

42、 * from customer where c_number=xnumber ) print你輸入的客戶不存在 else update customer set c_adress=xaddress,c_telnub=xtell where c_number=xnumber ; exec procedure_update_coustome 01,073一三936096,廣州圖16 更新客戶信息圖17、刪除客戶信息功能:刪除客戶信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_delet_coustome-刪

43、除客戶信息 xnumber char(32) as if not exists(select * from customer where c_number=xnumber ) print你輸入的客戶不存在 else delete from customer where c_number=xnumber ; exec procedure_delet_coustome 05圖17 刪除客戶信息圖一八、更新雇員信息功能:更新雇員信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_update_emp-更新雇員信息

44、xenumber char(32), xetell char(32), xeaddress char(32), xe_real int as if not exists(select * from employee where empl_number=xenumber ) print你輸入的雇員不存在 else update employee set empl_addres=xeaddress,empl_telnumb=xetell,empl_real=xe_real where empl_number=xenumber ; exec procedure_update_emp 001,1111

45、111111,changsha,2999; select *圖一八 更新雇員信息圖19刪除雇員信息功能:刪除雇員信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_delet_emp-刪除雇員信息 xnumber char(32) as if not exists(select * from employee where empl_number=xnumber ) print你輸入的雇員不存在 else delete from employee where empl_number =xnumber ; exe

46、c procedure_delet_emp 001圖19 刪除雇員信息圖20查詢雇員信息按工資高低排序select *from employee order by empl_real圖20 雇員工資高低排序圖21、完整的訂單銷售流程功能:插入訂單信息和訂購信息以及修改產(chǎn)品庫存等信息目的:存儲從客戶下單到訂單訂購產(chǎn)品的流程的操作意義:直觀展示訂單銷售流程,使用戶能夠更簡明的執(zhí)行完整的訂單銷售流程create procedure procedure_Ord-完整的訂單銷售流程xonumber char(32),xodate date,xenumber char(32),xcnumber char(

47、32),xquant int,xpn int,xpnumber char(32)as if exists ( select * from orders where o_number=xonumber )print該訂單已經(jīng)存在,不需重復(fù)下訂單 else if not exists ( select * from product where p_number=xpnumber ) print倉庫里沒有該產(chǎn)品,不予訂購else if not exists ( select * from customer where c_number=xcnumber ) print你輸入的客戶不存在else if

48、 not exists ( select * from employee where empl_number=xenumber ) print你輸入的雇員不存在else if exists ( select * from product where p_inventoryxquant and p_number=xpnumber ) print該產(chǎn)品庫存不足不予以訂購elsebegininsertinto orders values(xonumber ,xenumber,xcnumber ,xodate ,xpn)insert into povalues(xpnumber ,xonumber,x

49、quant)print訂單下發(fā)成功end;圖21 完整的訂單流程圖6.11 觸發(fā)器的設(shè)計1、建立觸發(fā)器update_invert:當(dāng)插入了一條新的產(chǎn)品訂購信息后,則激活該觸發(fā)器,新的產(chǎn)品庫存量等于舊庫存量減去產(chǎn)品訂購的數(shù)量,。當(dāng)用戶退訂單的時候觸發(fā)庫存量加上訂單退出時的產(chǎn)品數(shù)量。功能:能夠根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的變化來自動進(jìn)行數(shù)據(jù)更新操作。目的:將必備的操作自動化。意義:為數(shù)據(jù)庫用戶提供一種簡便操作,省去了逐項(xiàng)更改數(shù)據(jù)的麻煩。create trigger update_invert實(shí)現(xiàn)當(dāng)插人(退)產(chǎn)品的時候庫存減少(增加)on pofor insert,deleteas update product

50、set p_inventory=p_inventory+(select quantfrom deletedwhere product.p_number=deleted.p_number)from po,product,deletedwhere product.p_number=deleted.p_numberupdate productset p_inventory=p_inventory-(select quantfrom insertedwhere product.p_number=inserted.p_number)from po,product,insertedwhere produc

51、t.p_number=inserted.p_number;函數(shù)的設(shè)計無7.安全性設(shè)計防止用戶直接操作數(shù)據(jù)庫的方法用戶標(biāo)識和鑒別是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定后才提供機(jī)器使用權(quán)。還可以通過建立視圖來控制對數(shù)據(jù)的訪問。用戶帳號密碼的加密方法數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中關(guān)系的有效字段。加密的基本思想是根據(jù)一定的算法講原始數(shù)據(jù)變換為不可直接識別的格式,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容。例如:exec sp_addlogin fanyangcong, 123, xx-創(chuàng)建登入

52、名exec sp_grantdbaccess fanyangcong , xx -在數(shù)據(jù)庫中創(chuàng)建新用戶exec sp_addsrvrolemember fanyangcong,sysadminsp_addrole fanyangcong , db_owner-創(chuàng)建數(shù)據(jù)庫角色GRANT CREATE TABLE TO fanyangcongGRANT CREATE VIEW TO fanyangcongGRANT SELECT ON employee TO fanyangcongWITH GRANT OPTIONREVOKE UPDATEON employeeFROM fanyangcongCA

53、SCADEREVOKE DELETEON employeeFROM fanyangcongCASCADE7.3角色與權(quán)限表5 角色權(quán)限授予表角色可以訪問的表與列操作權(quán)限sa可訪問所有表完全控制權(quán)限admin可訪問所有表部分的控制權(quán)限Fanyangcong可訪問所有表完全控制權(quán)限8.數(shù)據(jù)庫管理與維護(hù)說明數(shù)據(jù)庫維護(hù)計劃設(shè)定完成之后,如果SQL Server代理是啟動的,那么在管理SQL Server代理作業(yè)下面會自動生成若干自動維護(hù)的工作條目,并且每個條目都有相應(yīng)的計劃表,這個才是正常的。系統(tǒng)每天凌晨自動更新系統(tǒng),刪除未銷卡記錄數(shù)據(jù)庫維護(hù)計劃非常強(qiáng)大,里面有各式各樣對數(shù)據(jù)庫的維護(hù)/備份操作,每樣都

54、可以設(shè)定不同的Schedule,當(dāng)然,每設(shè)定一項(xiàng),在JOB里面就會自動多出來一條。SQL Server Agent服務(wù)的正常運(yùn)作是這一切的基礎(chǔ)。系統(tǒng)每天凌晨更新后,自動備份數(shù)據(jù)庫??偨Y(jié)不得不說本次課程設(shè)計給我?guī)砹朔浅4蟮氖斋@。首先我的自學(xué)能力加強(qiáng)了,在這次課程設(shè)計中在網(wǎng)上查閱了許多的資料,學(xué)會了許多sql的語法,在者自己的動手能力加強(qiáng)了,讓我明確了只有自己動手去嘗試才能得到自己想要的東西,自己動手去寫代碼發(fā)現(xiàn)錯誤在去翻閱資料然后改進(jìn)這才是學(xué)習(xí)的樂趣。開始我還以為很簡單,就是建幾個表,在做幾個查詢,后來才發(fā)現(xiàn)要求在么多,要畫E-R圖,要畫數(shù)據(jù)流圖還真有許多的還要做還要寫觸發(fā)器,在這個實(shí)驗(yàn)中我覺

55、得觸發(fā)器是最難的,在這之中我聽從老師的安排努力的在機(jī)房完成每次老師布置的任務(wù),最終還是完成了本次課程設(shè)計的任務(wù)。在這次課程設(shè)計中,離不開老師的教導(dǎo)與同學(xué)的幫助,通過自己的動手完成這次課程設(shè)計我的能力得到了提升,自己感覺也很有成就感,感覺收獲真的很大,知識方面的收獲和實(shí)際動手能力的鍛煉,都讓我感覺進(jìn)步了不少,也為將來進(jìn)一步學(xué)習(xí)和工作打下了基礎(chǔ)。通過這次試驗(yàn)我學(xué)會了,不是拿到題目就建數(shù)據(jù)庫,而是先根據(jù)題目寫好需求分析,然后進(jìn)行概念結(jié)構(gòu)設(shè)計,然后進(jìn)行邏輯結(jié)構(gòu)設(shè)計,然后進(jìn)行物理設(shè)計,然后數(shù)據(jù)庫安全及維護(hù)設(shè)計,最后在建數(shù)據(jù)庫實(shí)施。附錄create table Suppliers-供應(yīng)商表( S_numb

56、er char(32) not null primary key, S_name char(32) not null, S_adress char(32) not null, S_telnub char(32) not null,);create table sup-供應(yīng)表( S_number char(32) not null, p_number char(32) not null, primary key(S_number,p_number), foreign key(S_number)references Suppliers(S_number) on delete cascade on

57、update cascade, foreign key(p_number)references product(p_number) on delete cascade on update cascade);create table orders -訂單表( o_number char(32) not null primary key, empl_number char(32) not null, c_number char(32) not null, times date, pn int,-產(chǎn)品總數(shù) foreign key(c_number)references customer(c_number) on delete cascade on update cascade, foreign key(empl_number)references employee(empl_number) on delete cascade on update cascade );create procedure procedure_inser_suply-增加供應(yīng)商 xSnumber char(32), xSname char(32), xSadress char(32), xStelnub char(32)asif exists(select * from Sup

溫馨提示

  • 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

提交評論