計算機專業(yè)課程論文范文
在計算機日益普及的今天,對個人而言若采用一套行之有效的餐飲管理系統(tǒng)來管理自己的酒店,會方便許多。下面是學習啦小編給大家推薦的計算機專業(yè)課程論文范文,希望大家喜歡!
計算機專業(yè)課程論文范文篇一
《餐飲管理系統(tǒng)中數(shù)據(jù)完整性的設計》
摘 要:以餐飲管理系統(tǒng)數(shù)據(jù)庫中部分表為例,詳細介紹個人對數(shù)據(jù)完整性設計思路和設計方法,通過實例闡述數(shù)據(jù)完整性在實踐中的應用,并給出基于SQLSERVERDE語言的描述。
關鍵詞:數(shù)據(jù)庫;數(shù)據(jù)完整性;約束;觸發(fā)器
數(shù)據(jù)庫的創(chuàng)建是一件非常容易的事情,但是設計一個嚴謹、安全、可靠的數(shù)據(jù)庫就不那么容易了,它需要你有扎實的理論知識做基礎,還需要具備一定的分析問題解決問題的能力。數(shù)據(jù)庫的設計經(jīng)過需求分析、數(shù)據(jù)庫概念機構設計、邏輯結構設計之后我們就應考慮數(shù)據(jù)完整性的設計了。數(shù)據(jù)完整性是最大限度的保證數(shù)據(jù)的正確性、可靠性、一致性。數(shù)據(jù)完整性包含三個方面的內(nèi)容即實體完整性、參照完整性(引用完整性)和用戶自定義完整性(域完整性)。
下面以餐飲管理系統(tǒng)部分可以實現(xiàn)點菜和結賬的表為例闡述以上完整性的設計。餐飲管理涉及的表的關系模式為:桌臺表zt(桌號zh,桌名zm,容納人數(shù)rnrs,狀態(tài)zt,類型lx),菜單表cd(菜品編號cpbh,菜品名稱cpmc,規(guī)格gg,類別lb,單價dj,成本價cbj),訂單表dd(訂單編號ddbh,訂單日期ddrq,桌號zh,消費金額xfje),點菜表dc(訂單編號ddbh,菜品編號cpbh,數(shù)量sl)。以上四個表的定義如下:
Create table zt (zh char(4) primary key ,zm char(8) unique, rnrs int check (rnrs>=0),zt bit,lx char(8) check (lx='大廳' or lx='包廂' lx='vip'))
Create table cd(cpbh char(5) primary key, cpmc char(12),gg char(10),lb char(8),dj numeric(6,1) check(dj>=0),cbj numeric(6,1) check(cbj>=0))
Create table dd (ddbh char(10) primary key,ddrq datetime,zh char(4) foreign key references zt(zh), xfje numeric(10,1))
Create table dc (ddbh char(10) foreign key references dd(ddbh),cpbh char(5) foreign key references cd(cpbh),sl int check(sl>=0) default 1,primary key(ddbh,cpbh))
1 實體完整性(表完整性)
實體完整性又叫做表完整性,是對表中主鍵的約束。實體完整性的規(guī)則要求:在任何關系的任何一個元組中,主鍵的值不能為空值、也不能取重復的值。建立實體完整性的目的是用于保證數(shù)據(jù)庫表中的每一個元組都是惟一的。是否可以改變主鍵值或刪除一整行,取決于主鍵和其他表之間要求的完整性級別。實體完整性的定義比較簡單。實現(xiàn)“實體完整性”的方法有primary key約束、unique約束、標識列、惟一索引。在此對桌臺表zt中的桌號zh、菜單表cd表中的菜品編號cpbh以及訂單表dd中的訂單編號ddbh定義了primary key約束。在定義的時候一定要注意,一張完整的表定義只能有一個主鍵(PRIMARY KEY),但是可以沒有UNIQUE約束。
2 參照完整性規(guī)則(引用完整性規(guī)則)
現(xiàn)實世界中的實體之間存在某種聯(lián)系。在關系模型中實體及實體間的聯(lián)系都是用關系來描述的,這樣就自然存在著關系與關系間的引用。通過在同一個數(shù)據(jù)庫的兩個表中進行主鍵約束和外鍵約束來實現(xiàn),參照的列和被參照的列的必須具有相同的屬性。
參照完整性規(guī)則規(guī)則要求:“不引用不存在的實體”。即:不允許在一個關系中引用另一個關系中不存在的元組。其目的用于確保相關聯(lián)的表間的數(shù)據(jù)保持一致。參照完整性是對外鍵的約束,要求外鍵的取值只能為兩種情況:若取非空值,則它必須是主表中存在的值。要么取空值(null)。設置了參照完整性禁止在從表中插入包含主表中不存在的關鍵字的數(shù)據(jù)行;禁止刪除在從表中的有對應記錄的主表記錄。
在如上四個表中對訂單表dd的桌號zh、點菜表對此dc的訂單編號ddbh及菜品編號cpbh分別設置了外鍵。另外外鍵的設計也可由觸發(fā)器或編程語言來設定。以訂單表dd為例觸發(fā)器設置方法如下:
CREATE TRIGGER insert_xs ON dd
AFTER INSERT
AS
IF EXISTS
(SELECT * FROM INSERTED
WHERE zh IN (SELECT zh FROM zt))
PRINT '添加成功!’
ELSE
BEGIN
PRINT '桌號與存在的桌號不符!’
ROLLBACK TRANSACTION
END
同樣可以對點菜表設置一個觸發(fā)器要求dc的訂單編號ddbh及菜品編號cpbh也具有參照性。參照完整性是用來維護相關數(shù)據(jù)表之間數(shù)據(jù)一致性的手段,通過實現(xiàn)引用完整性,可以避免因一個數(shù)據(jù)表的記錄改變而使另一個數(shù)據(jù)表內(nèi)的數(shù)據(jù)變成無效的值。
3 域完整性
域完整性也稱為列完整性或用戶定義的完整性,用于限制用戶向列中輸入的內(nèi)容。域完整性規(guī)則要求由用戶根據(jù)實際情況,定義表中屬性的取值范圍。其目的用于保證給定字段中數(shù)據(jù)的有效性,即保證數(shù)據(jù)的取值在有效的范圍內(nèi)。
設置域完整性的方法是限制列的數(shù)據(jù)類型、精度、范圍、格式和長度等。可以通過指定數(shù)據(jù)類型、CHECK約束、DEFAULT約束、NOT NULL約束和創(chuàng)建規(guī)則、默認值等數(shù)據(jù)庫對象來實施。
數(shù)據(jù)庫中存儲的數(shù)據(jù)多種多樣,為每一列指定一個準確的數(shù)據(jù)類型是設計表的第一步,列的數(shù)據(jù)類型規(guī)定了列上允許的數(shù)據(jù)值。當添加或修改數(shù)據(jù)時,其類型必須要符合建表時所指定的數(shù)據(jù)類型。這種方式為數(shù)據(jù)庫中的數(shù)據(jù)完整性提供了最基本的保障。
約束是SQL Server提供的自動保持數(shù)據(jù)完整性的一種方法,是獨立于表結構的。規(guī)則是實現(xiàn)域完整性的方法之一,用來驗證一個數(shù)據(jù)庫中的數(shù)據(jù)是否處于一個指定的值域范圍內(nèi),是否與特定的格式相匹配。當數(shù)據(jù)庫中的數(shù)據(jù)值被更新或插入時,就要檢查新值是否遵循規(guī)則。如果不符合規(guī)則就拒絕執(zhí)行更新或插入操作。
在餐飲系統(tǒng)相關表中我們對相應的列設置了數(shù)據(jù)類型及長度度限制,并對菜單表cd的單價dj設置了check(dj>=0)的約束,對點菜表dc的數(shù)量sl列(sl int check(sl>=0) default 1)設置了check約束和默認值的約束。當然對于以上約束我們都可通過定義規(guī)則的方法實現(xiàn)。如:
用create rule dyl as@x>=0來定義一個大于零的約束,然后用sp_bindrule dyl,'cd.dj‘語句和sp_bindrule dyl,'dc.sl'語句將其綁定到菜單表cd的單價dj列及點菜表dc的數(shù)量sl列上。
對于菜品編號cpbh我們規(guī)定菜類必須以類別的代表字母作為第一個字符,小分類的代表字母為第二個字符后面跟3位數(shù)字來表示。如CL001表示青菜類、LN001可表示奶類飲料。
為了實現(xiàn)上述編碼我們用規(guī)則來實現(xiàn)如下:
Create rule cpbm as
@BM like 'C[LQRT][0-9][0-9][0-9]'
Or @BM like 'J[PBNM][0-9][0-9][0-9]'
Or @BM like 'Y[CNGT][0-9][0-9][0-9]'
Or @BM like 'z[fm][0-9][0-9][0-9]'
sp_bindrule cpbm, 'cd.cpbh'
4 觸發(fā)器實現(xiàn)數(shù)據(jù)完整性
當用戶對數(shù)據(jù)的完整性要求更為特殊,更為復雜,以上3種完整性就無法滿足用戶的要求。在這種情況下,用戶需要自己定義所需的完整性。實現(xiàn)自定義完整性的重要方法是創(chuàng)建觸發(fā)器。觸發(fā)器是一種數(shù)據(jù)庫對象。是一種表或視圖執(zhí)行insert、delete、update操作時,被系統(tǒng)自動執(zhí)行的特殊的存儲過程。創(chuàng)建觸發(fā)器的目的是對表實現(xiàn)復雜的數(shù)據(jù)完整性約束,以防止不正確的操作。它與數(shù)據(jù)庫中的某個表的數(shù)據(jù)修改操作相關聯(lián),修改操作可以是INSERT、UPDATE、和DELETE這3種操作中其中一種或幾種。當用戶對相關表執(zhí)行觸發(fā)器相關的修改操作時觸發(fā)器自動執(zhí)行。常用于數(shù)據(jù)的參照完整性限制及級聯(lián)刪除、級聯(lián)更新等操作的設置。以級聯(lián)更新為例,分析當菜單表中的菜品編號修改時,點菜表中的菜品編號同時更新這樣的操作用觸發(fā)器如何實現(xiàn):
create trigger upd on cd after update
as
declare @jbh char(5),@xbh char(5)
select @jbh=deleted.cpbh, @xbh= inserted.cpbh
from deleted,inserted where deleted.cpbh=inserted.cpbh
print '準備級聯(lián)更新點菜表中的菜品編號信息….'
update dc set cpbh=@xbh where cpbh=@jbh
print '已經(jīng)級聯(lián)更新了點菜表原菜品編號為'+ @jbh +'的信息'
5 應用接口編程
應用接口編程對數(shù)據(jù)庫應用設計來說是負擔最重的方法,但同時又是最基本、最靈活的方法。不論數(shù)據(jù)庫管理系統(tǒng)提供了多么豐富的完整性的約束手段,利用編程接口保證數(shù)據(jù)完整性仍是所有數(shù)據(jù)庫應用設計者必須掌握的關鍵技術之一。
6 總結
保證數(shù)據(jù)庫的數(shù)據(jù)完整性,在數(shù)據(jù)庫管理系統(tǒng)中是十分重要的。合理地使用SQL Server為數(shù)據(jù)完整性提供的各項措施,對數(shù)據(jù)進行所需的約束限制,可以有效降低數(shù)據(jù)庫在使用過程中可能出現(xiàn)的錯誤,提高數(shù)據(jù)庫系統(tǒng)的可用性,減少處理數(shù)據(jù)錯誤所耗的費用。
參考文獻:
[1]陳偉,Sql Server2005應用系統(tǒng)開發(fā)教程[M].北京:清華大學出版社.
[2]Andrew J.Brust Stephen Forte著,精通SQLServer 2005程序設計,賈洪峰譯,清華大學出版社,2007.
[3]薩師煊、王珊,數(shù)據(jù)庫系統(tǒng)概論(第三版)[M].北京:高等教育出版社,2004.
作者簡介:
白楊(1978-),女,蒙古族,河北省香河縣人,學位碩士,講師,研究方向:數(shù)據(jù)庫。
點擊下頁還有更多>>>計算機專業(yè)課程論文范文