數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計訂單銷售數(shù)據(jù)庫管理系統(tǒng)
長 沙 學(xué) 院課程設(shè)計說明書題目 _ 系(部) _ 專業(yè)(班級) _ 姓名 _ 學(xué)號 _ 指導(dǎo)教師 _ 起止日期 _課程設(shè)計任務(wù)書課程名稱:數(shù)據(jù)庫系統(tǒng)原理課程名稱:數(shù)據(jù)庫系統(tǒng)原理設(shè)計題目:設(shè)計題目:銷售訂單數(shù)據(jù)庫管理系統(tǒng)1、某銷售商的訂單系統(tǒng)需要如下信息:每個供應(yīng)商包含供應(yīng)商編號、名稱、地址、聯(lián)系電話等信息。每種產(chǎn)品包含產(chǎn)品號、產(chǎn)品名稱、產(chǎn)品類別等信息。每個供應(yīng)商可供應(yīng)多種產(chǎn)品,每種產(chǎn)品可由多個供應(yīng)商供應(yīng)??蛻舭幪?、姓名、通信地址、電話等信息。雇員包括編號、姓名、聯(lián)系電話等信息。訂單包括訂單號等信息。一個客戶可下多個訂單,每個訂單只能由一個客戶下。一個雇員可管理多個訂單,每個訂單只能由一個雇員管理。一個訂單訂購多種產(chǎn)品,每種產(chǎn)品可在不同的訂單中訂購2、系統(tǒng)功能基本要求:按照一定條件查詢、統(tǒng)計訂單信息,例如訂單量最多的客戶或者產(chǎn)品。能夠模擬完成一個訂單交易全過程。設(shè)計工作量:設(shè)計工作量:40 課時工作計劃:工作計劃:班級周次節(jié)次教室內(nèi)容指導(dǎo)教師15 周周一1-4XXX布置任務(wù)15 周周三1-4XXX上機15 周周四9-12XXX答疑15 周周五9-12XXX答疑15 周周六1-4XXX上機16 周周一9-12XXX答疑16 周周二1-2XXX上機16 周周三1-2XXX上機16 周周四9-12XXX答疑16 周周五1-4XXX上機10 軟件7 班16 周周六1-4XXX答辯XXX指導(dǎo)教師簽名:日期:教研室主任簽名: 日期:系主任簽名: 日期: 長沙學(xué)院課程設(shè)計鑒定表姓名學(xué)號專業(yè)班級設(shè)計題目指導(dǎo)教師指導(dǎo)教師意見:評定等級: 教師簽名: 日期: 答辯小組意見:評定等級:答辯小組長簽名:日期:教研室意見:教研室主任簽名: 日期: 系(部)意見:系主任簽名:日期:說明課程設(shè)計成績分“優(yōu)秀” 、 “良好” 、 “及格” 、 “不及格”四類;目 錄一、引言一、引言 .51.1編寫目的.51.2參考資料.5二、二、需求規(guī)約需求規(guī)約.62.1 業(yè)務(wù)描述.62.2 需求分析.6三、三、數(shù)據(jù)庫環(huán)境說明數(shù)據(jù)庫環(huán)境說明.7四、四、數(shù)據(jù)庫的命名規(guī)則數(shù)據(jù)庫的命名規(guī)則.74.1 數(shù)據(jù)庫對象命名規(guī)則.74.2 數(shù)據(jù)項編碼規(guī)則.7五、五、邏輯設(shè)計邏輯設(shè)計.85.1 ER 圖.85.2 關(guān)系模型.8六、六、物理設(shè)計物理設(shè)計.96.1 表匯總.96.2 表1: SUPPLIERS表(供應(yīng)商表).96.3 表2: PRODUCT表(產(chǎn)品表) .106.4 表3: SP 表(供應(yīng)商產(chǎn)品供應(yīng)表).106.5 表4: ORDERS表(訂單表).116.6 表5: PO 表(產(chǎn)品訂購表).126.7 表6: EMPLOYEE表(雇員表) .126.8 表7: CUSTOMER表(客戶表).136.9 視圖的設(shè)計.136.10 存儲過程的設(shè)計.146.11 觸發(fā)器的設(shè)計.186.12 函數(shù)的設(shè)計.18七、七、安全性設(shè)計安全性設(shè)計.197.1 防止用戶直接操作數(shù)據(jù)庫的方法.197.1.1 用戶標(biāo)識和鑒定.197.1.2 存取控制.197.1.3 數(shù)據(jù)加密.197.2 用戶帳號密碼的加密方法.197.3 角色與權(quán)限.19八、八、數(shù)據(jù)庫管理與維護(hù)說明數(shù)據(jù)庫管理與維護(hù)說明.20九、九、總結(jié)總結(jié).21一、引言一、引言1.1編寫目的編寫目的本文檔是銷售訂單數(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.2參考資料參考資料 資料名稱作者文件編號、版本數(shù)據(jù)庫系統(tǒng)概論 王珊、薩師煊2006 年 5 月第 4 版數(shù)據(jù)庫設(shè)計入門經(jīng)典鮑威爾2007 年 3 月第 1 版數(shù)據(jù)庫原理克羅恩科2005 年 6 月第 1 版二、二、需求規(guī)約2.1 業(yè)務(wù)描述業(yè)務(wù)描述銷售訂單數(shù)據(jù)庫管理系統(tǒng)的總目標(biāo)是:在計算機網(wǎng)絡(luò),數(shù)據(jù)庫和先進(jìn)的開發(fā)平臺上,利用現(xiàn)有的軟件,配置一定的硬件,開發(fā)一個具有開放體系結(jié)構(gòu)的、易擴充的、易維護(hù)的、具有良好人機交互界面的銷售訂單數(shù)據(jù)庫管理系統(tǒng),實現(xiàn)訂單銷售的自動化的計算機系統(tǒng),為商品供應(yīng)商提供準(zhǔn)確、精細(xì)、迅速的訂單銷售信息。具體功能為供應(yīng)商供應(yīng)產(chǎn)品、請假的申請,出差的記錄輸入到系統(tǒng)中,系統(tǒng)將為員工記錄這些信息。2.2 需求分析需求分析本銷售訂單數(shù)據(jù)庫管理系統(tǒng),能夠完成插入產(chǎn)品,供應(yīng)記錄,訂購記錄等等這些信息,以能夠模擬完成一次訂單銷售的過程,此外,在一個完整的訂單銷售流程中,本數(shù)據(jù)庫系統(tǒng)還提供查詢某供應(yīng)商供應(yīng)的產(chǎn)品信息,詢某產(chǎn)品信息,查詢某客戶信息,查詢某訂單訂購的產(chǎn)品的信息。對于客戶而言,還提供了查詢訂單最多的客戶的功能??偟膩碚f,本數(shù)據(jù)庫系統(tǒng)能夠達(dá)到模擬完成一次訂單銷售流程的要求。在本銷售訂單數(shù)據(jù)庫管理系統(tǒng)中,有一些限制性條件,比如一個客戶可以下多個訂單,但一個訂單只能由一個客戶下,一個訂單可以訂購多種產(chǎn)品,每種產(chǎn)品可被不同訂單訂購等等,這些限制條件的加入能夠使本數(shù)據(jù)庫管理系統(tǒng)的功能更加完善,能夠滿足更高的要求。三、三、數(shù)據(jù)庫環(huán)境說明數(shù)據(jù)庫實例數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫部署環(huán)境數(shù)據(jù)庫設(shè)計工具數(shù)據(jù)庫存放位置說明銷售訂單數(shù)據(jù)庫管理系統(tǒng)Sql Server 2008Windows XPSql Server存放位置,絕對路徑/相對路徑用于訂單銷售管理四、四、數(shù)據(jù)庫的命名規(guī)則數(shù)據(jù)庫的命名規(guī)則4.1 數(shù)據(jù)庫對象命名規(guī)則數(shù)據(jù)庫對象命名規(guī)則數(shù)據(jù)庫對象命名規(guī)則備注表S 功能描述字符串例如:Suppliers 供應(yīng)商表視圖view_功能描述字符串例如:view_Product 產(chǎn)品視圖觸發(fā)器insert_功能描述字符串例如:insert_PO 更改庫存觸發(fā)器存儲過程Procedure_功能描述字符串例如:pro_insertSuppliers 存儲過程 4.2 數(shù)據(jù)項編碼規(guī)則數(shù)據(jù)項編碼規(guī)則數(shù)據(jù)項命名規(guī)則數(shù)據(jù)類型長度范圍備注供應(yīng)商編號兩位整數(shù)序號(0099)定長字符串12 位無產(chǎn)品號兩 位 整 數(shù) 序 號(0099)定長字符串12 位無訂單號兩位整數(shù)序號(0099)定長字符串12 位無雇員號兩位整數(shù)序號(0099)定長字符串12 位無客戶號兩位整數(shù)序號(0099)定長字符串12 位無五、五、邏輯設(shè)計邏輯設(shè)計5.1 ER 圖圖供應(yīng)商供應(yīng)產(chǎn)品訂購訂單管理雇員下發(fā)客戶名稱地址聯(lián)系電話客戶編號姓名通信地址電話產(chǎn)品編號供應(yīng)商編號產(chǎn)品編號產(chǎn)品名稱產(chǎn)品類型產(chǎn)品編號訂單編號訂單編號雇員編號姓名聯(lián)系電話供應(yīng)商編號售價出廠價存貨量數(shù)量日期雇員編號工資客戶編號5.2 關(guān)系模型關(guān)系模型供應(yīng)商(供應(yīng)商編號,名稱,地址,聯(lián)系電話)產(chǎn)品(產(chǎn)品編號,產(chǎn)品名稱,產(chǎn)品類別,售價,出廠價,存貨量)供應(yīng)(供應(yīng)商編號,產(chǎn)品編號)訂購(產(chǎn)品編號,訂單編號,數(shù)量)客戶(客戶編號,姓名,通信地址,電話)訂單(訂單編號,日期,客戶編號,雇員編號)雇員(雇員編號,姓名,聯(lián)系電話,工資)注:有下劃線的表示該屬性為主碼。六、六、物理設(shè)計6.1 表匯總表匯總表名功能說明表 Suppliers供應(yīng)商表,存儲供應(yīng)商的編號等信息表 Product產(chǎn)品表,存儲產(chǎn)品的編號、數(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)商表供應(yīng)商表)表名Suppliers(供應(yīng)商表)數(shù)據(jù)庫用戶Sa主鍵Snumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空 Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Snumberchar(12)NY高無主鍵/供應(yīng)商號2Snamechar(30)NN中無供應(yīng)商名稱3Saddresschar(30)YN中無供應(yīng)商地址4StelnumintYN高無供應(yīng)商電話sql 腳本-建立供應(yīng)商表create table Suppliers -供應(yīng)商表(Snumber char(12) primary key,-供應(yīng)商編號,主碼 Sname char(30) not null,-姓名 Saddress char(30), -地址 Stelnum int -電話);6.3 表表2: Product 表表(產(chǎn)品表產(chǎn)品表)表名Product(產(chǎn)品表)數(shù)據(jù)庫用戶sa主鍵Pnumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Pnumberchar(12)NY高無主鍵/產(chǎn)品編號2Pnamechar(30)NY高無產(chǎn)品名稱3Pcategorychar(15)YN低無產(chǎn)品類別4PpriceintYN中無產(chǎn)品售價5Pex_pricerealYN中無產(chǎn)品出廠價6PinventoryrealYN中無產(chǎn)品庫存量sql 腳本-建立產(chǎn)品表create table Product -產(chǎn)品表(Pnumber char(12) primary key, -產(chǎn)品編號,主碼 Pname char(30) not null, -產(chǎn)品名稱 Pcategory char(15), -產(chǎn)品類別- Pprice int, -售價- Pex_price real, -出廠價- Pinventory real -存貨量-);6.4 表表3: SP 表表(供應(yīng)商產(chǎn)品供應(yīng)表供應(yīng)商產(chǎn)品供應(yīng)表)表名SP(供應(yīng)商產(chǎn)品供應(yīng)表)數(shù)據(jù)庫用戶sa主鍵Snumber,Pnumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空唯一Y/N區(qū)別度默認(rèn)值約束條件/說明Y/N1Snumberchar(12)NY高無主鍵/供應(yīng)商號2Pnumberchar(12)NY高無主鍵/產(chǎn)品編號sql 腳本-建立供應(yīng)商產(chǎn)品供應(yīng)表create table SP-供應(yīng)商供應(yīng)產(chǎn)品表-(Snumber char(12),-供應(yīng)商編號,外碼 Pnumber char(12),-產(chǎn)品編號,外碼 primary key(Snumber,Pnumber),-聯(lián)合主碼 foreign key (Pnumber) references Product(Pnumber) on delete cascade on update cascade, foreign key (Snumber) references Suppliers(Snumber) on delete cascade on update cascade);6.5 表表4: Orders 表表(訂單表訂單表)表名Orders(訂單表)數(shù)據(jù)庫用戶sa主鍵Onumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Onumberchar(12)NY高無主鍵/訂單號2OdatedateNN低無訂單日期3Enumberchar(12)YN中無雇員號4Cnumberchar(12)NN高無客戶號sql 腳本-建立訂單表create table Orders-訂單表(Onumber char(12)primary key,-編號,主碼 Odate date,-日期 Enumber char(12),-設(shè)置雇員號,外碼 Cnumber char(12),-設(shè)置客戶號,外碼 foreign key (Cnumber) references Customer(Cnumber) on delete cascade on update cascade, foreign key (Enumber) references Employee(Enumber) on delete cascade on update cascade);6.6 表表5: PO 表表(產(chǎn)品訂購表產(chǎn)品訂購表)表名PO(產(chǎn)品訂購表)數(shù)據(jù)庫用戶sa主鍵Pnumber,Onumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Pnumberchar(12)NY高無主鍵/產(chǎn)品號2Onumberchar(12)NY高無主鍵/訂單號3QuantityintNN低無訂購產(chǎn)品數(shù)量sql 腳本-建立產(chǎn)品訂購表create table PO-產(chǎn)品訂購表(Pnumber char(12),-產(chǎn)品編號 Onumber char(12),-訂單編號 Quantity int,-產(chǎn)品數(shù)量 primary key(Pnumber,Onumber),-聯(lián)合主碼 foreign key (Pnumber) references Product(Pnumber)-外碼 on delete cascade on update cascade, foreign key (Onumber) references Orders(Onumber)-外碼 on delete cascade on update cascade); 6.7 表表6: Employee 表表(雇員表雇員表)表名Employee(雇員表)數(shù)據(jù)庫用戶sa主鍵Enumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Enumberchar(12)NY高無主鍵/雇員號2Enamechar(10)NN中無雇員名稱3EtelnumintNY高無雇員電話4EwagesrealNN低無雇員薪資sql 腳本-建立雇員表create table Employee-雇員表(Enumber char(12) primary key,-編號 Ename char(10),-名字 Etelnum int,-電話 Ewages real-工資);6.8 表表7: Customer 表表(客戶表客戶表)表名Customer(客戶表)數(shù)據(jù)庫用戶sa主鍵Cnumber其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明1Cnumberchar(12)NY高無主鍵/客戶表2Cnamechar(10)NN中無客戶名稱3Caddresschar(30)YN中無客戶地址4CtelnumintYY高無客戶電話sql 腳本-建立客戶表create table Customer-客戶表(Cnumber char(12) primary key,-編號 Cname char(10),-姓名 Caddress char(30),-地址 Ctelnum int-電話);6.9 視圖的設(shè)計視圖的設(shè)計1、建立一張雇員信息的視圖目的:屏蔽雇員的工資信息。功能:能夠向管理員提供簡明,直接的雇員信息展示。意義:有利于數(shù)據(jù)庫安全的維護(hù),防止任意修改數(shù)據(jù)庫中的雇員信息。create view view_Employee-建立Employee視圖,屏蔽工資屬性asselect Enumber,Ename,Etelnumfrom Employeewith check option;2、建立一張產(chǎn)品信息的視圖目的:屏蔽產(chǎn)品的出廠價信息。功能:能夠向管理員提供簡明,直接的產(chǎn)品信息展示。意義:有利于數(shù)據(jù)庫安全的維護(hù),防止任意修改數(shù)據(jù)庫中的產(chǎn)品信息。create view view_Producte-建立Product視圖,屏蔽出廠價屬性asselect Pnumber,Pname,Pcategory,Pprice,Pinventoryfrom view_Productewith check option;6.10 存儲過程存儲過程的設(shè)計的設(shè)計1、查詢訂單數(shù)量功能:查詢訂單的數(shù)量目的:存儲查詢訂單數(shù)量的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchOrdersNum -查詢訂單的存儲過程asselect COUNT(*) 訂單總數(shù)-查詢訂單數(shù)量from Orders;2、查詢客戶的訂單信息功能:查詢客戶的訂單信息目的:存儲查詢客戶的訂單信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_CustomerOrders-查詢某個客戶訂單信息Cname char(10)asselect Onumber,Odate,Enumberfrom Orders,Customerwhere Cname like Cname and Customer.Cnumber like Orders.Cnumber;3、查詢訂單最多的客戶信息功能:查詢訂單最多的客戶信息目的:存儲查詢訂單最多的客戶信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchMaxOrders-查詢訂單最多的客戶信息asselect Cnumber,Cname,Caddress,Ctelnumfrom Orders,Customerwhere Orders.Cnunmer=Customer.Cnunmergroup by Cnumber having MAX(Cnumber);4、查詢客戶信息功能:查詢客戶信息目的:存儲查詢客戶信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchCustomer-查詢某客戶信息Cname char(10)asselect *from Customerwhere Cname=Cname;5、查詢雇員信息功能:查詢雇員信息目的:存儲查詢雇員信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchEmployee-查詢某雇員信息Ename char(10)asselect *from Employeewhere Ename=Ename;6、查詢某訂單對應(yīng)的產(chǎn)品信息功能:查詢某訂單對應(yīng)的產(chǎn)品信息目的:存儲查詢某訂單對應(yīng)的產(chǎn)品信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchPO-查詢某訂單的產(chǎn)品信息Onumber char(12)asselect Onumber,Product.Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventoryfrom Product,POwhere Onumber=Onumber and PO.Pnumber=Product.Pnumber;7、查詢產(chǎn)品信息功能:查詢產(chǎn)品信息目的:存儲查詢產(chǎn)品信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_SearchProduct-查詢某產(chǎn)品信息Pnumber char(12)asselect Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory,Snumberfrom Product,SPwhere Pnumber=Pnumber and SP.Pnumber=Pnumber;8、插入供應(yīng)商信息功能:插入供應(yīng)商信息目的:存儲插入供應(yīng)商信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_InsertSuppliers-插入供應(yīng)商信息Snumber char(12),Sname char(30),Saddress char(30),Stelnum intasIF EXISTS(SELECT * FROM Suppliers WHERE Snumber=Snumber)print該供應(yīng)商記錄已經(jīng)存在ELSEinsert into Suppliers(Snumber,Sname,Saddress,Stelnum)values(Snumber,Sname,Saddress,Stelnum);9、插入訂單信息功能:插入訂單信息目的:存儲插入訂單信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_InsertOrders-插入訂單表Onumber char(12),Odate date,Enumber char(12),Cnumber char(12)asIF EXISTS(SELECT * FROM Orders WHERE Onumber=Onumber)print該訂單記錄已經(jīng)存在ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(Onumber,Odate,Enumber,Cnumber);10、插入產(chǎn)品訂購信息功能:插入產(chǎn)品訂購信息目的:存儲插入產(chǎn)品訂購信息的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_InsertPO-插入產(chǎn)品訂購表Pnumber char(12),Onumber char(12),Quantity intasIF EXISTS(SELECT * FROM PO WHERE Pnumber=Pnumber and Onumber=Onumber)-當(dāng)該訂單已經(jīng)訂購改產(chǎn)品時不予重復(fù)訂購print該產(chǎn)品訂購訂單記錄已經(jīng)存在IF EXISTS(SELECT * FROM Product WHERE PinventoryQuantity)-當(dāng)庫存量不足時不予訂購print該產(chǎn)品庫存不足,無法訂購ELSEinsert into PO(Onumber,Pnumber,Quantity)values(Onumber,Pnumber,Quantity);11、插入產(chǎn)品信息功能:插入產(chǎn)品信息目的:存儲產(chǎn)品的操作意義:下次重復(fù)同樣的動作時,可直接執(zhí)行存儲過程,簡化操作步驟create procedure procedure_InsertProduct -插入產(chǎn)品信息Pnumber char(12),Pname char(30),Pcategory char(15),Pprice int,Pex_price real,Pinventory realasIF EXISTS(SELECT * FROM Product WHERE Pnumber=Pnumber)-若有相同產(chǎn)品,只更新庫存量update Productset Pinventory=Pinventory+PinventoryELSEinsert into Product(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory)values(Pnumber,Pname,Pcategory,Pprice,Pex_price,Pinventory);12、完整的訂單銷售流程功能:插入訂單信息和訂購信息以及修改產(chǎn)品庫存等信息目的:存儲從客戶下單到訂單訂購產(chǎn)品的流程的操作意義:直觀展示訂單銷售流程,使用戶能夠更簡明的執(zhí)行完整的訂單銷售流程create procedure procedure_Order -完整的訂單銷售流程Onumber char(12),Odate date,Enumber char(12),Cnumber char(12)Pnumber char(12),Onumber char(12),Quantity intasIF EXISTS(SELECT * FROM Orders WHERE Onumber=Onumber)-若有重復(fù)訂單,則不予下單print該訂單記錄已存在,不能重復(fù)下訂單ELSEinsert into Orders(Onumber,Odate,Enumber,Cnumber)values(Onumber,Odate,Enumber,Cnumber);IF EXISTS(SELECT * FROM PO WHERE Pnumber=Pnumber and Onumber=Onumber)-若有重復(fù)訂購單,則不予訂購print該產(chǎn)品訂購記錄已存在,不能重復(fù)訂購ELSEIF EXISTS(SELECT * FROM Product WHERE PinventoryQuantity)-若產(chǎn)品庫存量不足,則不予訂購print產(chǎn)品庫存量不足,不能訂購ELSEinsert into PO(Onumber,Pnumber,Quantity)values(Onumber,Pnumber,Quantity);6.11 觸發(fā)器的設(shè)計觸發(fā)器的設(shè)計1、建立觸發(fā)器 insert_PO:當(dāng)插入了一條新的產(chǎn)品訂購信息后,則激活該觸發(fā)器,新的產(chǎn)品庫存量等于舊庫存量減去產(chǎn)品訂購的數(shù)量。功能:能夠根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的變化來自動進(jìn)行數(shù)據(jù)更新操作。目的:將必備的操作自動化。意義:為數(shù)據(jù)庫用戶提供一種簡便操作,省去了逐項更改數(shù)據(jù)的麻煩。create trigger insert_PO-AFTER 觸發(fā)器,當(dāng)訂購產(chǎn)品后,自動減少庫存量on po after insertfor each rowas beginupdate Product set new.Pinventory=old.Pinventory-new.Quantity;end;6.12 函數(shù)的設(shè)計函數(shù)的設(shè)計無七、七、安全性設(shè)計7.1 防止用戶直接操作數(shù)據(jù)庫的方法防止用戶直接操作數(shù)據(jù)庫的方法7.1.1 用戶標(biāo)識和鑒定用戶標(biāo)識和鑒別是系統(tǒng)提供的最外層安全保護(hù)措施。其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定后才提供機器使用權(quán)。7.1.2 存取控制數(shù)據(jù)庫安全性所關(guān)心的主要是 DBMS 的存取控制機制。數(shù)據(jù)庫安全最重要的一點就是確保只授權(quán)給由資格的用戶訪問數(shù)據(jù)庫的權(quán)限,同時令所有未授權(quán)的人員無法接近數(shù)據(jù),這主要通過數(shù)據(jù)庫系統(tǒng)的存取控制機實現(xiàn)。7.1.3 數(shù)據(jù)加密 數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中關(guān)系的有效字段。加密的基本思想是根據(jù)一定的算法講原始數(shù)據(jù)變換為不可直接識別的格式,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容。例如:EXEC sp_addlogin Employee_manage,123456,Sales_System;EXEC SP_GRANTDBACCESS Employee_manage,阿萊格里;GRANT ALL privileges -將指定權(quán)限授予該用戶on table Suppliers,Product,SP,Orders,PO,view_Employee,view_productto 阿萊格里7.2 用戶帳號密碼的加密方法用戶帳號密碼的加密方法為用戶帳號密碼加密,需要用程序?qū)崿F(xiàn),對用戶的帳號密碼實行加密算法,并在后臺實現(xiàn)轉(zhuǎn)換。7.3 角色與權(quán)限角色與權(quán)限角色可以訪問的表與列操作權(quán)限ss可訪問所有表完全控制權(quán)限admin可訪問所有表部分的控制權(quán)限Employee_manage可訪問部分表部分的操作權(quán)限八、八、數(shù)據(jù)庫管理與維護(hù)說明數(shù)據(jù)庫管理與維護(hù)說明1)數(shù)據(jù)庫維護(hù)計劃設(shè)定完成之后,如果 SQL Server 代理是啟動的,那么在管理SQL Server代理作業(yè)下面會自動生成若干自動維護(hù)的工作條目,并且每個條目都有相應(yīng)的計劃表,這個才是正常的。系統(tǒng)每天凌晨自動更新系統(tǒng),刪除未銷卡記錄2)數(shù)據(jù)庫維護(hù)計劃非常強大,里面有各式各樣對數(shù)據(jù)庫的維護(hù)/備份操作,每樣都可以設(shè)定不同的 Schedule,當(dāng)然,每設(shè)定一項,在 JOB 里面就會自動多出來一條。SQL Server Agent 服務(wù)的正常運作是這一切的基礎(chǔ)。系統(tǒng)每天凌晨更新后,自動備份數(shù)據(jù)庫。九、九、總結(jié)總結(jié)不得不說本次課程設(shè)計給我?guī)砹朔浅4蟮氖斋@。首先,設(shè)計數(shù)據(jù)庫管理系統(tǒng)本身,鍛煉了自己的能力,增長了自己的實踐經(jīng)驗。其次,課程設(shè)計本身對于學(xué)生的能力鍛煉更是功不可沒,既鞏固了平時學(xué)到的理論知識,又能鍛煉我們發(fā)現(xiàn)、提出、分析和解決實際問題的能力,也能讓學(xué)生體會到數(shù)據(jù)庫開發(fā)的流程。在實際操作中遇到的各種問題,讓我思考、求助,直到最終解決,在此過程中更是獲益匪淺。在最開始數(shù)據(jù)庫系統(tǒng)的時候,感覺設(shè)計一個數(shù)據(jù)庫系統(tǒng)的設(shè)計并不是一件難事,也并沒太放在心上。但是后來開始動手做的時候,才知道做一個完整的數(shù)據(jù)庫管理系統(tǒng)需要做大量的準(zhǔn)備工作,要做出一個功能完善的數(shù)據(jù)庫系統(tǒng),并非易事。數(shù)據(jù)庫系統(tǒng)設(shè)計需要花費大量的時間和精力,必須按照課程設(shè)計的要求,遵循老師的教導(dǎo),一步步的做好需求分析和邏輯設(shè)計,并完成物理設(shè)計,并不斷對數(shù)據(jù)庫系統(tǒng)進(jìn)行改善,最終才能完成一個完善的數(shù)據(jù)庫管理系統(tǒng)。這次課程設(shè)計最后能夠順利完成,離不開老師的悉心教導(dǎo),也離不開同學(xué)間的互相交流和幫助,再通過我自己不斷努力,終于能夠完成完整的數(shù)據(jù)庫管理系統(tǒng)的設(shè)計,能夠完成這次課程設(shè)計,自己感覺也很有成就感,感覺收獲真的很大,知識方面的收獲和實際動手能力的鍛煉,都讓我感覺進(jìn)步了不少,也為將來進(jìn)一步學(xué)習(xí)和工作打下了基礎(chǔ)。每一次動手實際操作的機會都是很珍貴的,這次課程設(shè)計下來,也得出了幾條數(shù)據(jù)庫系統(tǒng)設(shè)計方面的經(jīng)驗,現(xiàn)將所獲知識點或者數(shù)據(jù)庫設(shè)計經(jīng)驗總結(jié)如下:1、如何創(chuàng)建兩張相互參照的表,并插入數(shù)據(jù)。在插入數(shù)據(jù)時,外碼的值必須是作為主碼在被參照表中出現(xiàn)過的值,否則,就會出現(xiàn)異常(不僅屬性必須先存在,屬性值也必須先存在) 。2、以元組為單位插入數(shù)據(jù)時,根據(jù)建表時屬性的順序,屬性值的插入必須嚴(yán)格按照此順序進(jìn)行,也要注意屬性的類型與寬度。3、以上問題自認(rèn)為都注意到了,但是插入數(shù)據(jù)是仍然出錯了,就可以將這些數(shù)據(jù)通過企業(yè)管理器進(jìn)行插入,就可以發(fā)現(xiàn)問題出現(xiàn)在哪。4、為了能對各個表進(jìn)行正常刪除操作,應(yīng)該在創(chuàng)建表時對外碼設(shè)置級聯(lián)刪除。5、最重要的是,通過這次試驗我學(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ù)庫實施。