摘要:本文重點闡述如何運用技術手段通過關系型數據庫管理系統進行數據庫表格的創建及數據維護。
關鍵詞:關系型數據庫管理系統;數據庫;表;技術
關系型的數據庫管理系統在各種不同的業務應用系統中得到了廣泛的運用,它不僅提供了大量數據的存儲及檢索功能,還提供了數據的安全與管理功能。在進行業務系統的數據庫設計時,一般都要從數據庫的概念設計開始,然后進行數據庫的邏輯設計,最后進行數據庫的物理設計三個步驟。本文僅探討如何通過不同的技術手段進行有效的數據庫表格的物理設計,從而提高數據庫數據的完整性及有效性。
一、數據庫表格創建的依據
在系統的設計中,有一部分是數據庫設計,數據庫的設計通常分為概念設計、邏輯設計和物理設計三個部分,每個步驟需要循序漸進,根據項目分析做好概念設計后,才能根據概念設計進行邏輯設計,而物理設計則是根據邏輯設計的結果進行。數據庫表格主要作用是用來進行數據存儲的,屬于數據庫設計的一部分內容,數據庫表格創建屬于物理設計階段的工作,因此表格的創建需要根據邏輯設計展開。在進行數據庫物理設計時,需要在邏輯設計的基礎之上充分考慮不同類型的數據庫,如:Oracle和SQL Server它們在表示表格中列的數據類型就存在差異,它們數據存儲設計也不一樣。
二、數據庫表格創建的技術要點
(一)屬性的原子性
在創建數據庫表時,需要根據邏輯設計中的每個實體建立,這些實體需要確定含有哪些屬性,屬性對應數據庫表中的列,每個屬性的劃分建議是原子性,即屬性最小化,不可再分解;屬性的多少建議與項目實用性關聯綜合考慮。另外,屬性不可以亂分,例如不能將屬于A實體的屬性劃分給B,將B的屬性劃分給A或其他。
(二)數據類型約束
在創建數據表對應E-R圖中的實體,表中的列對應實體中的屬性,在建立數據庫表時,需要確定屬性對應的列的數據類型,如果數據類型選擇錯誤,會導致意想不到的后果。例如:員工實體中,存在屬性工號,在設置的工號屬性列選擇的數據類型建議使用varchar(10),如果用戶建表時采用int類型,結果將無法達到用戶想要的結果。假定張三的工號為004,如果是varchar類型,數據按照用戶要求進行,如果采用int類型存儲,結果數據只能以4的形式存在,顯然這不是用戶想看到的結果。
自定義的數據類型也是維護數據完整性的一個手段,例如在員工表中,有性別屬性列,可以采用nchar(1)來存儲,用戶可以輸入性別男或女的值,但是卻無法控制輸入男或女之外的值,如果是之外的值,顯然不符合客觀事實要求。針對這種問題,用戶可以采用自定義性別數據類型,確保用戶只能輸入性別男和女,先定義一種規則:
create rule sexRule as @value in (‘男, ‘女)
定義完規則后,創建性別數據類型:
create type sex from nchar(1)
將創建好的數據類型sex與定義好的sexRule規則進行綁定,然后將性別一列設置成數據類型為sex,這樣將確保性別列的數據正確有效,只能是“男”或者“女”中的任何一個值。
(三)Check條件約束
在數據的有效性控制方面,光靠數據類型約束控件是不夠的,例如,如果有學生信息表中存在入學年齡一列,在數據類型的選擇是整型,可是年齡不能是任何整數,不能太大,也不太小,必須是一個有效的范圍,例如:17-30年齡范圍內,要做到這點,使用check約束條件可以實現,在年齡列設置check約束,輸入SQL代碼:
([NianLing]>=(17) AND [NianLing]<=(30))
設置完成后,年齡的約束會自動應用,您只要在輸入年齡列數據時,數據只能在17-30之間,包含17和30。
(四)主鍵技術
主鍵(primary key) 是表中的一個或多個字段,它的值用于唯一地標識表中的某一條記錄。也就是說,在一張表格記錄中,每行記錄的數據如果出現重復,只要存在一列數據的不同,這是用來實體之間不同的唯一標識。例如在學生表中,“學號”可以是主鍵,姓名可以一樣,但“學號”不一樣;在教師表中,教師的“工號”可以是主鍵。在創建數據庫表時,建議每張表至少設置一個主鍵。
(五)參照完整性
數據庫設計中,為了數據的完整有效,且減低數據的冗余度,一般要求做到實體的完整性、用戶定義的完整性和參照的完整性。例如有班級和學生兩張表,學生表中,存在“班級”列,該列如果存班級的名稱,在數據管理中會出現難以預料的嚴重后果,例如庫中有幾萬名學生,出現某個的班級信息錯誤,這時需要對這些記錄進行修改,一是工作量大,二是容易出現錯誤。為了解決類似于這樣的問題,建議將班級表與學生表中的“班級”列進行關聯,在學生表中的“班級”列中存放班級表的主鍵值,這樣在設計要求將班級表中的班級“編號”列主鍵作為學生表“班級”列的外鍵(外鍵:某表的主鍵作為其他表的列),學生表“班級”列的數據類型、長度要求和班級表中的“編號”列的數據類型、長度一致。例如前面提到的學生表班級名稱錯誤,只需要修改班級表中的班級“名稱”列即可,無需修改學生表中的“班級”列信息,這樣維護的數據量大大減少,且容易控制,如果需要查看學生表中的完整班級信息,只需要參照班級表即可。在關聯的表格中建立主外鍵就是參照完整性的技術應用體現。
作者簡介:王平華,江西波陽,江西現代職業技術學院研究生,研究方向:軟件工程。