【正文】
declare @count int select @count=count(*) from 產品 ,倉庫 where = and =39。S00139。 and =2print @count l 運用觸發(fā)器產品入庫+1,則庫存容量+1(觸發(fā)器)create trigger tri_產品入庫 on 產品 for insert as update 倉庫set 庫存容量 = 庫存容量 + (select COUNT(*) from INSERTED where = )。執(zhí)行語句:exec proc_產品 ‘P007’,‘蠶豆’,‘周展’,2,3,‘C001’,‘S001’; exec proc_產品 ‘P006’,‘花生’,‘周展’,5,2,‘C002’,‘S003’;產品入庫前:產品入庫后:產品出庫1,庫存容量1(觸發(fā)器)create trigger tri_產品出庫 on 產品 for delete As update 倉庫set 庫存容量 = 庫存容量(select COUNT(*) from deleted where = )。執(zhí)行語句:exec proc_產品出庫 39。P00139。檢驗產品出庫前:(產品、倉庫情況)產品出庫后:(產品、倉庫情況) 零件入庫+1,則庫存容量+1(觸發(fā)器)create trigger tri_零件入庫on 零件 for insert as update 倉庫set 庫存容量 = 庫存容量 + (select COUNT(*) from INSERTED where = )。執(zhí)行語句:exec proc_零件 39。L00139。,39。塑料袋39。,3,39。S00139。 exec proc_零件 39。L00239。,39。包裝盒39。,2,39。S00239。零件入庫前:(零件、倉庫情況)零件入庫后:(零件、倉庫情況) 一個零件出庫,零件庫存容量1(觸發(fā)器)create trigger tri_零件出庫on 零件 for deleteasupdate 倉庫set 庫存容量 = 庫存容量 (select COUNT(*) from deleted where = );執(zhí)行語句:exec proc_零件出庫 39。L00139。檢驗零件出庫前:(零件、倉庫情況)零件出庫后:(零件、倉庫情況) 安全設計階段l 給工廠數據庫管理系統(tǒng)設置用戶權限:1) 廠長是整個數據庫的管理員,對數據庫中的所有數據具有增加,刪除,修改,查詢。2) 車間主任可以管理工人,對工人可以進行修改,增加,刪除,查詢。3) 產品經理可以管理產品,對產品可以進行修改,增加,刪除,查詢。4) 倉庫主任可以管理倉庫,對產品跟零件可以進行修改,增加,刪除,查詢。l 用戶身份認證創(chuàng)建登錄名,添加角色exec sp_addlogin 39。panqiufang39。,39。11439739。,39。factory39。exec sp_addsrvrolemember 39。panqiufang39。,39。sysadmin39。在數據庫中添加新用戶use factory exec sp_grantdbaccess 39。panqiufang39。,39。qiuqiu39。角色可以訪問的表與列操作權限廠長工廠增,刪,改,查車間增,刪,改,查工人增,刪,改,查產品增,刪,改,查零件增,刪,改,查倉庫增,刪,改,查生產增,刪,改,查產品_零件增,刪,改,查車間主任車間增,刪,改,查工人增,刪,改,查工廠查產品經理車間查產品增,刪,改,查零件增,刪,改,查工廠查生產查倉庫查產品_零件查倉庫主任倉庫查工廠查產品增,刪,改,查零件增,刪,改,查車間查l 創(chuàng)建角色并授予相應的權限:創(chuàng)建廠長角色create role 廠長授予權限grant select,delete,update,insert on 工廠 to 廠長。grant select,delete,update,insert on 車間 to 廠長。grant select,delete,update,insert on 產品 to 廠長。grant select,delete,update,insert on 零件 to 廠長。grant select,delete,update,insert on 工人 to 廠長。grant select,delete,update,insert on 倉庫 to 廠長。grant select,delete,update,insert on 生產 to 廠長。grant select,delete,update,insert on 產品_零件 to 廠長。創(chuàng)建車間主任角色create role 車間主任授予權限grant select,delete,update,insert on 車間 to 車間主任。grant select,delete,update,insert on 工人 to 車間主任。grant select on 工廠 to 車間主任。授予查看視圖權限grant select on v_renshu to 車間主任。grant select on v_worker to 車間主任。grant select on count_員工 to 車間主任。創(chuàng)建產品經理角色create role 產品經理授予權限grant select on 車間 to 產品經理。grant select,delete,update,insert on 產品 to 產品經理。grant select,delete,update,insert on 零件 to 產品經理。grant select on 工廠 to 產品經理。grant select on 生產 to 產品經理。grant select on 倉庫 to 產品經理。grant select on 產品_零件 to 產品經理。授予查看視圖權限grant select on v_shop to 產品經理。grant select on v_CNO to 產品經理。創(chuàng)建倉庫主任角色create role 倉庫主任授予權限grant select on 倉庫 to 倉庫主任。grant select on 工廠 to 倉庫主任。grant select,delete,update,insert on 產品 to 倉庫主任。grant select,delete,update,insert on 零件 to 倉庫主任。grant select on 車間 to 倉庫主任。授予查看視圖權限grant select on v_store to 倉庫主任。grant select on V_use to 倉庫主任。grant select on v_produce to 倉庫主任。 總結關于數據庫課程設計,總的來說,受益匪淺。此次課程設計主要是通過運用所學的數據庫系統(tǒng)理論這門課程的相關知識設計工廠數據庫管理系統(tǒng),模擬工廠的生產過程。在這些天的課程設計中,我覺得自己還是學到了很多東西,包括建表、建存儲過程、建觸發(fā)器、查詢語句、插入數據、更新數據以及數據庫安全性等內容都有了更深層次的理解。在這次課程設計過程中,我對建立基本表、視圖、存儲過程等,都比以前更加的熟練。在解決課程設計遇到的各種問題的過程中,學到了很多新的知識。比如在刪除和更新數據時,由于外鍵約束的存在,經常會出現錯誤,這就要注意各個表導入的順序問題。一般是先導入主鍵表,后導入外鍵表,這樣可以避免很多的錯誤。另外我還充分體會了從事軟件開發(fā)工作需要特別嚴謹認真的態(tài)度和作風,一點都馬虎不得。每一個細微的細節(jié)都必須十分的注意,如果不認真思考決策,就會出現或大或小的錯誤,如果早期的錯誤隱藏下來,對后面的工作影響就會很大,甚至有時要推倒很多前面做的工作重來。SQL Sever數據庫課程設計主要可分兩大塊,一塊是開發(fā),一塊是管理。開發(fā)主要是編寫存儲過程、觸發(fā)器等,有些類似于程序員,開發(fā)還需要有較強的邏輯思維和創(chuàng)造能力;管理則需要對SQL Sever數據庫的原理有深刻的認識,有全局操縱的能力和緊密的思維,責任較大,因為一個小的失誤就會弄掉整個數據庫,相對前者來說,后者更看重經驗。數據庫的課程設計學習使我對數據庫的有了新的進步,順利完成了整個工廠數據庫管理系統(tǒng)的設計,收獲頗多。同時,也便于我在以后學習或認識更多的內容能有新的方法和思維,也能更加有效和快速的去消化吸收新的東西。希望在今后中,SQL Server能給我更多幫助。最后,還要感謝數據庫老師對我的幫助,給我提供了許多寶貴的意見。