黃雅瓊
(江西旅游商貿(mào)職業(yè)學(xué)院 江西 南昌 330000)
數(shù)據(jù)庫設(shè)計(jì)的主要內(nèi)容一般包括數(shù)據(jù)庫邏輯設(shè)計(jì)、數(shù)據(jù)庫概念設(shè)計(jì)以及數(shù)據(jù)庫物理設(shè)計(jì)。數(shù)據(jù)庫設(shè)計(jì)中的每一項(xiàng)內(nèi)容都是至關(guān)重要的,關(guān)系到數(shù)據(jù)庫的正常應(yīng)用,而數(shù)據(jù)庫系統(tǒng)則在信息化技術(shù)應(yīng)用系統(tǒng)中占據(jù)著重要的地位。在眾多應(yīng)用系統(tǒng)之中,由于數(shù)據(jù)庫設(shè)計(jì)方面存在著不規(guī)范、不合理等狀況,直接導(dǎo)致了數(shù)據(jù)庫系統(tǒng)出現(xiàn)異常狀態(tài),嚴(yán)重的情況下,還會(huì)出現(xiàn)系統(tǒng)崩潰的現(xiàn)象。因此,在對(duì)數(shù)據(jù)庫系統(tǒng)進(jìn)行設(shè)計(jì)的過程中,保持其設(shè)計(jì)的規(guī)范化是非常必要的。在對(duì)項(xiàng)目數(shù)據(jù)庫進(jìn)行設(shè)計(jì)的過程中,應(yīng)以項(xiàng)目的具體需求作為出發(fā)點(diǎn),并從各階段數(shù)據(jù)庫出發(fā),使數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)更加合理化、規(guī)范化。本文主要從數(shù)據(jù)庫邏輯設(shè)計(jì)著手,并從范式、約束、命名等方面來實(shí)現(xiàn)規(guī)范化檢查和設(shè)計(jì)。
為了使數(shù)據(jù)庫邏輯設(shè)計(jì)在結(jié)構(gòu)方面更加清晰化、合理化,并保證數(shù)據(jù)庫中的冗余數(shù)據(jù)能夠減少,從而在對(duì)數(shù)據(jù)進(jìn)行插入、修改以及刪除的過程中,使其出現(xiàn)的異常能夠得以避免,在進(jìn)行數(shù)據(jù)庫邏輯設(shè)計(jì)的過程中應(yīng)該對(duì)相應(yīng)的規(guī)則進(jìn)行遵循,當(dāng)數(shù)據(jù)庫的類型為關(guān)系型時(shí),此規(guī)則及被稱作范式。從當(dāng)前關(guān)系數(shù)據(jù)庫的范式來看,主要有6種,分別為第一范式(簡稱為1NF)、第二范式(簡稱為2NF)、第三范式(簡稱3NF)、第四范式(簡稱4NF)、第五范式(簡稱5NF)以及Boyce-Codd范式(簡稱BCNF)。以上6種范式的具體規(guī)則和要求存在的差異,其中,第一范式的要求是最低的,同時(shí)其要求也是最基本的。因應(yīng)用系統(tǒng)在具體需求方面存在著差異,因此,在進(jìn)行數(shù)據(jù)庫邏輯設(shè)計(jì)過程中,應(yīng)該使各種范式的具體要求得到滿足。但著并不意味著在滿足范式方面最好能夠做到更多范式的滿足,而是需要以應(yīng)用系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行訪問的情況以及數(shù)據(jù)庫存儲(chǔ)過程中的數(shù)據(jù)記錄的具體情況為根據(jù),一般來講,若要能夠使第三范式(3NF)得到滿足即可。
其目的是為了使實(shí)體中形成的完整性得以實(shí)現(xiàn),包括分布在唯一標(biāo)識(shí)表內(nèi)部的各實(shí)體。通常而言,各數(shù)據(jù)表都應(yīng)該對(duì)主鍵進(jìn)行設(shè)置,并且一個(gè)數(shù)據(jù)表只能夠設(shè)置單個(gè)主鍵,所設(shè)置的這一主鍵可以選擇某一字段,也能夠選擇多字段相互組合而形成的復(fù)合字段,也稱之為復(fù)合主鍵。對(duì)表中的字段進(jìn)行選擇,使其成為主鍵的關(guān)鍵點(diǎn)在于這一字段是否能夠?qū)Ρ碇懈鲗?shí)體進(jìn)行唯一標(biāo)識(shí)。
對(duì)數(shù)據(jù)表本身的參照完整性進(jìn)行實(shí)現(xiàn),能夠?qū)Ω鲾?shù)據(jù)表之間形成的聯(lián)系進(jìn)行體現(xiàn),這是使各數(shù)據(jù)表之間出現(xiàn)的數(shù)據(jù)能夠保持一致性的主要方法。例如,對(duì)b表中出現(xiàn)的主鍵字段進(jìn)行引用,并將其當(dāng)做a表中的某一字段,這種情況下,上表中的這一字段就是它的外鍵,這就使a表和b表之間外鍵約束的這種關(guān)系得以形成和實(shí)現(xiàn),在a表之中這一字段的值應(yīng)該對(duì)b表中的與這一字段相互對(duì)應(yīng)的NULL值或是有效值,若對(duì)應(yīng)的是NULL值,則其前提條件是a表之中的這一字段必須允許NULL值的出現(xiàn)和存在。
主要用于特定數(shù)據(jù)表之中的某一字段或者是多個(gè)字段能夠接受的格式或者數(shù)據(jù)值。例如,在某一特定數(shù)據(jù)表之中,對(duì)“性別”這一字段進(jìn)行檢查約束的設(shè)置時(shí),使這一字段的值僅僅能夠接受“男”或者是“女”,當(dāng)其他值進(jìn)行輸入時(shí),則顯示無效。當(dāng)對(duì)字段“郵政編碼”進(jìn)行檢查約束的設(shè)置時(shí),所接受的數(shù)字位數(shù)只能是六位數(shù)。
對(duì)于出現(xiàn)在數(shù)據(jù)表之后總的某一非主鍵類型的字段,若要保證其輸入的值不重復(fù),這是對(duì)這一字段的設(shè)置便需要進(jìn)行唯一約束。例如,若要保證數(shù)據(jù)表中的“用戶名”這一字段不出現(xiàn)重復(fù)值,在這一字段中對(duì)唯一約束進(jìn)行設(shè)置便可。
主要是在數(shù)據(jù)表之中,對(duì)某一個(gè)字段的值進(jìn)行單個(gè)定義,當(dāng)相應(yīng)的輸入值不存在時(shí),則將此單個(gè)定義的字段值使用系統(tǒng)中默認(rèn)自動(dòng)提供的字段值進(jìn)行代替。
在對(duì)數(shù)據(jù)庫邏輯結(jié)構(gòu)進(jìn)行設(shè)計(jì)的過程中,無論是為數(shù)據(jù)表之中的某一字段進(jìn)行命名,還是為數(shù)據(jù)庫之中的某一對(duì)象進(jìn)行命名,都應(yīng)該對(duì)相應(yīng)的命名規(guī)則進(jìn)行遵循,從而保證其規(guī)范化。在項(xiàng)目之中,對(duì)數(shù)據(jù)庫字段或是對(duì)象的命名規(guī)范化過程中,需要對(duì)以下原則進(jìn)行遵循:
4.1 對(duì)數(shù)據(jù)庫對(duì)象命名所采用的規(guī)則應(yīng)該是此類行業(yè)中被廣泛認(rèn)可的共性規(guī)則,并不建議應(yīng)用與這一規(guī)則相悖逆的規(guī)則而自成的相關(guān)體系,不應(yīng)該特立獨(dú)行。若命名的過程中需要以字母進(jìn)行命名時(shí),應(yīng)該使用較為容易看懂的常用英文單詞或者是有英文單詞組合而成的短語,而不應(yīng)該對(duì)一些不常使用的、難以理解的英文單詞或是短語進(jìn)行應(yīng)用,同時(shí),也不應(yīng)該使用漢語拼音來對(duì)其命名。
4.2 在進(jìn)行命名的過程中,應(yīng)該保證對(duì)共性規(guī)則進(jìn)行遵循,這是最基本的前提條件,當(dāng)然,在進(jìn)行命名的過程中,可以通過以及的命名風(fēng)格來進(jìn)行命名,但是若要采取這種命名方法,應(yīng)該使同一個(gè)項(xiàng)目之中所采取的命名風(fēng)格保持相應(yīng)的一致性,而不應(yīng)該出現(xiàn)需要命名的對(duì)象采取的命名風(fēng)格存在差異,若在命名風(fēng)格方面出現(xiàn)差異,則在整體上會(huì)給人一種雜亂感,顯得沒有規(guī)律感,從而使命名的規(guī)范化程度得以降低,從而不利于滿足命名的規(guī)范化。
4.3 在使用單詞或是縮寫單詞時(shí),應(yīng)該保證這些單詞以及縮寫單詞能夠被使用者顧名思義,使單詞或者縮寫單詞的顯性含義得以明顯化,也就是說,再低單詞以及縮寫單詞進(jìn)行應(yīng)用時(shí),應(yīng)該保證單詞及縮寫單詞的含義清晰、明確,讓人一看便懂,在進(jìn)行縮寫的過程中,應(yīng)該使其含義的被理解程度偏重于大眾化,并且縮寫的形式不會(huì)出現(xiàn)任何歧義,所采取的縮寫方式最好是經(jīng)常見到的縮寫方式。例如,在對(duì)數(shù)量英文單詞“Quantity”進(jìn)行縮寫時(shí),應(yīng)該使用“Qty”進(jìn)行代表縮寫,而不要使用“Qua”、“Qat”等重復(fù)可能性較多的縮寫詞進(jìn)行代表縮寫。除此之外,對(duì)于英文縮寫而言,還應(yīng)該有相應(yīng)的注釋對(duì)縮寫進(jìn)行說明。
4.4 命名的過程中,不要對(duì)一些特殊性的符號(hào)或是全數(shù)字進(jìn)行使用,并且更不應(yīng)該對(duì)數(shù)字和符號(hào)混合使用來進(jìn)行命名。例如,命名時(shí)不應(yīng)使用特殊符號(hào)“?”、“¥”、“%”等;命名時(shí)不應(yīng)使用全數(shù)字“12”、“5”“789”等;命名時(shí)更不應(yīng)對(duì)數(shù)字和符號(hào)混合使用,如“71#”、“9&”等。命名的過程中,必須保證名稱的首字符為英文字母。
4.5 在命名的過程中,不應(yīng)該對(duì)數(shù)據(jù)庫系統(tǒng)之中出現(xiàn)的關(guān)鍵字來進(jìn)行使用命名。例如,英文單詞“join”、“table”以及“create”等,這些詞匯在數(shù)據(jù)庫系統(tǒng)中較為容易出現(xiàn),并且在數(shù)據(jù)庫系統(tǒng)之中還具有某些特殊的含義。
4.6 在命名的過程中,應(yīng)該避免使用空格來進(jìn)行命名,在使用短語進(jìn)行命名時(shí),單詞之間也不應(yīng)該存有空格。
綜上所述,數(shù)據(jù)庫邏輯設(shè)計(jì)要求一般較為嚴(yán)格,尤其特定的規(guī)范,若在設(shè)計(jì)之中出現(xiàn)不符合相應(yīng)規(guī)范的情況,那么將會(huì)導(dǎo)致數(shù)據(jù)庫邏輯設(shè)計(jì)出現(xiàn)錯(cuò)亂,失去其應(yīng)用的效果,因此,在對(duì)數(shù)據(jù)庫邏輯設(shè)計(jì)過程中應(yīng)注重設(shè)計(jì)的規(guī)范性,從而使數(shù)據(jù)庫能夠更好的被應(yīng)用。
[1]劉中勝.數(shù)據(jù)庫邏輯設(shè)計(jì)中的規(guī)范化[J].數(shù)字技術(shù)與應(yīng)用,2017(1):188-188.
[2]邢泉.數(shù)據(jù)庫邏輯設(shè)計(jì)中消除規(guī)范化處理問題[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(6):179-181.