【正文】
。希望在今后中,SQL Server能給我更多幫助。數(shù)據(jù)庫(kù)的課程設(shè)計(jì)學(xué)習(xí)使我對(duì)數(shù)據(jù)庫(kù)的有了新的進(jìn)步,順利完成了整個(gè)工廠(chǎng)數(shù)據(jù)庫(kù)管理系統(tǒng)的設(shè)計(jì),收獲頗多。SQL Sever數(shù)據(jù)庫(kù)課程設(shè)計(jì)主要可分兩大塊,一塊是開(kāi)發(fā),一塊是管理。另外我還充分體會(huì)了從事軟件開(kāi)發(fā)工作需要特別嚴(yán)謹(jǐn)認(rèn)真的態(tài)度和作風(fēng),一點(diǎn)都馬虎不得。比如在刪除和更新數(shù)據(jù)時(shí),由于外鍵約束的存在,經(jīng)常會(huì)出現(xiàn)錯(cuò)誤,這就要注意各個(gè)表導(dǎo)入的順序問(wèn)題。在這次課程設(shè)計(jì)過(guò)程中,我對(duì)建立基本表、視圖、存儲(chǔ)過(guò)程等,都比以前更加的熟練。此次課程設(shè)計(jì)主要是通過(guò)運(yùn)用所學(xué)的數(shù)據(jù)庫(kù)系統(tǒng)理論這門(mén)課程的相關(guān)知識(shí)設(shè)計(jì)工廠(chǎng)數(shù)據(jù)庫(kù)管理系統(tǒng),模擬工廠(chǎng)的生產(chǎn)過(guò)程。grant select on v_produce to 倉(cāng)庫(kù)主任。授予查看視圖權(quán)限grant select on v_store to 倉(cāng)庫(kù)主任。grant select,delete,update,insert on 零件 to 倉(cāng)庫(kù)主任。grant select on 工廠(chǎng) to 倉(cāng)庫(kù)主任。grant select on v_CNO to 產(chǎn)品經(jīng)理。grant select on 產(chǎn)品_零件 to 產(chǎn)品經(jīng)理。grant select on 生產(chǎn) to 產(chǎn)品經(jīng)理。grant select,delete,update,insert on 零件 to 產(chǎn)品經(jīng)理。創(chuàng)建產(chǎn)品經(jīng)理角色create role 產(chǎn)品經(jīng)理授予權(quán)限grant select on 車(chē)間 to 產(chǎn)品經(jīng)理。grant select on v_worker to 車(chē)間主任。grant select on 工廠(chǎng) to 車(chē)間主任。創(chuàng)建車(chē)間主任角色create role 車(chē)間主任授予權(quán)限grant select,delete,update,insert on 車(chē)間 to 車(chē)間主任。grant select,delete,update,insert on 生產(chǎn) to 廠(chǎng)長(zhǎng)。grant select,delete,update,insert on 工人 to 廠(chǎng)長(zhǎng)。grant select,delete,update,insert on 產(chǎn)品 to 廠(chǎng)長(zhǎng)。角色可以訪(fǎng)問(wèn)的表與列操作權(quán)限廠(chǎng)長(zhǎng)工廠(chǎng)增,刪,改,查車(chē)間增,刪,改,查工人增,刪,改,查產(chǎn)品增,刪,改,查零件增,刪,改,查倉(cāng)庫(kù)增,刪,改,查生產(chǎn)增,刪,改,查產(chǎn)品_零件增,刪,改,查車(chē)間主任車(chē)間增,刪,改,查工人增,刪,改,查工廠(chǎng)查產(chǎn)品經(jīng)理車(chē)間查產(chǎn)品增,刪,改,查零件增,刪,改,查工廠(chǎng)查生產(chǎn)查倉(cāng)庫(kù)查產(chǎn)品_零件查倉(cāng)庫(kù)主任倉(cāng)庫(kù)查工廠(chǎng)查產(chǎn)品增,刪,改,查零件增,刪,改,查車(chē)間查l 創(chuàng)建角色并授予相應(yīng)的權(quán)限:創(chuàng)建廠(chǎng)長(zhǎng)角色create role 廠(chǎng)長(zhǎng)授予權(quán)限grant select,delete,update,insert on 工廠(chǎng) to 廠(chǎng)長(zhǎng)。,39。在數(shù)據(jù)庫(kù)中添加新用戶(hù)use factory exec sp_grantdbaccess 39。,39。exec sp_addsrvrolemember 39。,39。,39。l 用戶(hù)身份認(rèn)證創(chuàng)建登錄名,添加角色exec sp_addlogin 39。3) 產(chǎn)品經(jīng)理可以管理產(chǎn)品,對(duì)產(chǎn)品可以進(jìn)行修改,增加,刪除,查詢(xún)。檢驗(yàn)零件出庫(kù)前:(零件、倉(cāng)庫(kù)情況)零件出庫(kù)后:(零件、倉(cāng)庫(kù)情況) 安全設(shè)計(jì)階段l 給工廠(chǎng)數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)置用戶(hù)權(quán)限:1) 廠(chǎng)長(zhǎng)是整個(gè)數(shù)據(jù)庫(kù)的管理員,對(duì)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)具有增加,刪除,修改,查詢(xún)。零件入庫(kù)前:(零件、倉(cāng)庫(kù)情況)零件入庫(kù)后:(零件、倉(cāng)庫(kù)情況) 一個(gè)零件出庫(kù),零件庫(kù)存容量1(觸發(fā)器)create trigger tri_零件出庫(kù)on 零件 for deleteasupdate 倉(cāng)庫(kù)set 庫(kù)存容量 = 庫(kù)存容量 (select COUNT(*) from deleted where = );執(zhí)行語(yǔ)句:exec proc_零件出庫(kù) 39。,2,39。,39。 exec proc_零件 39。,3,39。,39。執(zhí)行語(yǔ)句:exec proc_零件 39。P00139。執(zhí)行語(yǔ)句:exec proc_產(chǎn)品 ‘P007’,‘蠶豆’,‘周展’,2,3,‘C001’,‘S001’; exec proc_產(chǎn)品 ‘P006’,‘花生’,‘周展’,5,2,‘C002’,‘S003’;產(chǎn)品入庫(kù)前:產(chǎn)品入庫(kù)后:產(chǎn)品出庫(kù)1,庫(kù)存容量1(觸發(fā)器)create trigger tri_產(chǎn)品出庫(kù) on 產(chǎn)品 for delete As update 倉(cāng)庫(kù)set 庫(kù)存容量 = 庫(kù)存容量(select COUNT(*) from deleted where = )。S00139。S00139。 通過(guò)產(chǎn)品名稱(chēng)查詢(xún)?cè)摦a(chǎn)品所用的零件與零件數(shù)量(存儲(chǔ)過(guò)程) create procedure proc_PLno(產(chǎn)品名稱(chēng) varchar(10))asselect ,零件號(hào),count(*) as 零件數(shù)量 from 產(chǎn)品,產(chǎn)品_零件where = and 產(chǎn)品名稱(chēng)=產(chǎn)品名稱(chēng) group by 零件號(hào),。通過(guò)職工號(hào)查詢(xún)職工的信息(存儲(chǔ)過(guò)程)create procedure pro_worker(職工號(hào) varchar(10))asselect 姓名,年齡,性別,工種,車(chē)間號(hào) from 工人 where 職工號(hào)=職工號(hào)執(zhí)行語(yǔ)句: exec pro_worker 39。檢驗(yàn)零件出庫(kù)前:(零件、倉(cāng)庫(kù)情況)零件出庫(kù)后:(零件、倉(cāng)庫(kù)情況) 通過(guò)零件的名稱(chēng)查詢(xún)?cè)摿慵膸?kù)存數(shù)量(存儲(chǔ)過(guò)程)create procedure proc_productname(零件名稱(chēng) varchar(10))asselect 零件號(hào),count(*) as 零件數(shù)量 from 零件,倉(cāng)庫(kù)where = and 零件名稱(chēng)=零件名稱(chēng) group by 零件號(hào)執(zhí)行語(yǔ)句:Exec proc_productname 39。 end end執(zhí)行語(yǔ)句:exec proc_零件出庫(kù) 39。 print 零件號(hào) + 39。S00339。罐頭39。L00539。S00239。紙質(zhì)包裝袋39。L00539。S00139。塑料袋39。L00439。S00239。罐頭39。L00339。S00239。包裝盒39。L00239。S00139。塑料袋39。L00139。檢驗(yàn)不合格,不能入庫(kù)39。成功入庫(kù)39。檢驗(yàn)執(zhí)行前產(chǎn)品與庫(kù)存容量情況:執(zhí)行后產(chǎn)品與庫(kù)存容量情況:檢驗(yàn)零件入庫(kù)并插入數(shù)據(jù)(存儲(chǔ)過(guò)程)create Procedure proc_零件(零件號(hào) varchar(10) ,零件名稱(chēng) varchar(10) ,重量 float,價(jià)格 float ,質(zhì)量 int,倉(cāng)庫(kù)號(hào) varchar(10))as begin if 質(zhì)量 =3 begin insert into 零件 values(零件號(hào),零件名稱(chēng),重量,價(jià)格,質(zhì)量,倉(cāng)庫(kù)號(hào))。 end End執(zhí)行語(yǔ)句:exec proc_產(chǎn)品出庫(kù) 39。 print 產(chǎn)品號(hào) + 39。S00139?!獧z驗(yàn)不合格 選擇倉(cāng)庫(kù)庫(kù)存容量=100,則選擇倉(cāng)庫(kù)中庫(kù)存容量數(shù)最少的倉(cāng)庫(kù)create procedure proc_選擇倉(cāng)庫(kù) (store varchar(20) output)store是倉(cāng)庫(kù)號(hào)asbegin if (select 庫(kù)存容量 from 倉(cāng)庫(kù) where store=倉(cāng)庫(kù)號(hào))=100 begin set store = (select top 1 倉(cāng)庫(kù)號(hào) from 倉(cāng)庫(kù) order by 庫(kù)存容量 )。,39。,4,5,39。,39。,39。檢驗(yàn)合格執(zhí)行前:執(zhí)行后:成功入庫(kù)產(chǎn)品:P005執(zhí)行語(yǔ)句:exec proc_產(chǎn)品 39。,39。, 3,39。,39。,39。執(zhí)行語(yǔ)句:exec proc_產(chǎn)品 39。,39。, 1,39。,39。,39。exec proc_產(chǎn)品 39。,39。,5, 2,39。,39。,39。exec proc_產(chǎn)品 39。,39。,10, 1,39。,39。,39。exec proc_產(chǎn)品 39。,39。,3, 1,39。,39。,39。 endEndexec proc_產(chǎn)品 39。 end else begin print 39。 print 39。建立查詢(xún)倉(cāng)庫(kù)產(chǎn)品質(zhì)量=1的視圖create view v_produceasselect 倉(cāng)庫(kù)號(hào),產(chǎn)品名