掃碼下載APP
及時接收最新考試資訊及
備考信息
做父母的總希望給自己的子女取一個響亮的、富有含義的名字。有時候家長為了找到一個合適的名字,會拿起平時碰都不碰的漢語大辭典翻個好幾天。天下父母心呀。其實在數(shù)據(jù)庫中創(chuàng)建對象時,管理員也要對其進行命名。
其實在數(shù)據(jù)庫中創(chuàng)建對象時,管理員也要對其進行命名。一些有經(jīng)驗的數(shù)據(jù)庫管理員,對其命名也會小心翼翼。既要能夠叫的響亮,又要能夠代表具體的應(yīng)用場景。有時候?qū)Ρ淼葦?shù)據(jù)庫對象進行命名的時候,可能比維護數(shù)據(jù)庫還要傷腦筋。筆者對此就有非常深的感受。在數(shù)據(jù)庫設(shè)計的時候,一套命名規(guī)則編制下來,腦袋就會覺得很累。不過等大家多編制幾套后,就會掌握其中的規(guī)律。熟能生巧,掌握了規(guī)律再去取名的話,就會簡單許多。有時候甚至可以信手拿來。筆者這次就跟大家分享一下對數(shù)據(jù)庫對象進行命名的一些規(guī)律。簡單起見,筆者以數(shù)據(jù)庫對象表為例,談?wù)劽囊恍┘记伞?
一、牢記命名空間
在Oracle數(shù)據(jù)庫中,跟其他的數(shù)據(jù)庫不同,有一個叫做命名空間的概念。在同一個命名空間中,其名字不可以重復。如表與視圖就共享同一個命名空間,為此就要求不僅表的名字不能夠相同,而且表的名字與視圖的名字也不能夠相同。因為他們處于同一個命名空間。類似的,表與函數(shù)也是同處于一個表空間,為此他們也不能夠同名。不過表與索引、表與約束等等卻屬于不同的命名空間。也就是說,表的名字可以與約束的名字相同。所以說,數(shù)據(jù)庫管理員在給表等對象命名的時候,一定要了解哪些對象共享同一個名稱空間。如果在同一個名稱空間內(nèi)的,即使對象不同(如視圖與表),但是他們?nèi)匀徊荒軌蛉∠嗤拿帧?
為了避免同一個命名空間內(nèi)重名的現(xiàn)象,筆者建立在命名的時候最好能夠根據(jù)對象的不同加上對象的固有前綴。如大部分的數(shù)據(jù)庫管理員,在給表取名的時候,一般不會表名前面加上表對象的前綴。但是在定義函數(shù)或者視圖對象的時候,則會加上前綴。如在函數(shù)前面可能會加上FN的前綴,而在視圖前面可能會加上vi的前綴。如此的話,在同一個命名空間內(nèi)也不用擔心對象重名的問題。不過無論怎么說,這個命名空間的概念數(shù)據(jù)庫管理員必須牢記。即使在實際的工作中,可以通過前綴等手段輕易的避免這個陷阱,但是在Oracle數(shù)據(jù)庫管理員的認證考試中,這個命名空間也是一個必要的知識點。所以無論從實際的工作還是認證考試的需要,對于這個命名空間管理員都必須要有一個清晰的認識。
二、表名大小寫的控制
一般情況下Oracle數(shù)據(jù)庫中的表名或者列名是不區(qū)分大小寫的。在創(chuàng)建表或者列的時候,即使管理員采用了小寫的名字,數(shù)據(jù)庫在將其保存到數(shù)據(jù)字典之前,會先將其轉(zhuǎn)換為大寫,再將他們保存到數(shù)據(jù)字典中。這也就是為什么我們命名使用小寫的子母命名,但是下次查看表的名字的時候,卻變成了大寫。
雖然說Oracle數(shù)據(jù)庫中表與列等數(shù)據(jù)庫對象對于大小寫是不敏感的,但是如果數(shù)據(jù)庫管理員確實有需要要讓數(shù)據(jù)庫系統(tǒng)對表的名字區(qū)分大小寫,這也是可以做到的。通常情況下,如果把名字使用雙引號括起來,則在Oracle數(shù)據(jù)字典中就會成為區(qū)分大小寫的名字。不過筆者這里要提醒各位數(shù)據(jù)庫管理員,雖然說從技術(shù)上可以讓數(shù)據(jù)庫系統(tǒng)強制取分大小寫,但是在實際工作中,包括在內(nèi)的絕大部分數(shù)據(jù)庫管理員可能都不建議這么做。因為如果有混合的大小寫存在,那么在引用這些表或者列名稱的時候就需要特別的小心。因為即使用戶或者數(shù)據(jù)庫管理員有著過目不忘的本領(lǐng),也很難準確的記住這些名稱的大小寫歌時。如果數(shù)據(jù)庫管理員硬要這么做的話,那么很可能是自尋煩惱。在查詢時或者其他作業(yè)時,要嚴格區(qū)分大小寫那是一件很頭疼的事情。為此,對于這個大小寫的控制,筆者建議數(shù)據(jù)庫管理員要謹慎使用。除非有充分的理由,否則的話,不要輕易使用這個雙引號來控制大小寫。
這個雙引號不僅可以用來控制大小寫,還有一個比較特殊的作用,就是用引用一些特殊的字符。如在建立表格的時候,需要設(shè)置一個名牌號的字段。有些數(shù)據(jù)庫管理員習慣使用num#類似的名稱。這不會違反數(shù)據(jù)庫的命名規(guī)則。不過在處理的時候會比較麻煩。如利用create語句建立表格的時候,需要給這個字段名稱加上雙引號。否則的話,執(zhí)行這條語句的時候,數(shù)據(jù)庫會拒絕執(zhí)行并向用戶提示錯誤信息。類似的特殊符號還包括一個$美元符號。他們在建立表格的時候,在語句中都需要使用雙引號。不過字段建立好之后,在引用這些對象的時候,不需要使用雙引號了。同理,雖然Oracle數(shù)據(jù)庫支持這些特殊符號,但是筆者不鼓勵數(shù)據(jù)庫管理員在表或者列的命名中采取這些特殊的符號。這有可能給后續(xù)的引用帶來不必要的麻煩。
三、在表、索引、約束、列之間設(shè)置密切的聯(lián)系
在創(chuàng)建表的同時,可以給表中的某些列添加索引、約束等等。如在員工信息表中,會設(shè)置員工編號唯一性約束。在創(chuàng)建約束的時候,也需要對約束進行命名。雖然說也約束與表、列不屬于同一個命名空間,所以在取名的時候基本上沒有限制。但是為了后續(xù)使用的方便,筆者對約束的命名還有一個小小的建議。簡單的說,就是給一個與表直接有關(guān)的其他對象具有該表的名字是一種好的做法。如現(xiàn)在有一張用戶表名字叫做ad_user(在表名前面一般不加對象名,但是可以根據(jù)應(yīng)用軟件的模塊設(shè)計加上模塊的前綴),這種表中有一個字段叫做叫做vlaue,用來存儲員工的編號。在表設(shè)計的時候,需要給這個字段加一個索引。那么這個索引的名字就可以取名為IDX_USER_VALUE(也就是索引前綴+表名+字段名的形式)。這么做有什么好處呢?一是可以確保相關(guān)對象的名字不會重復。因為表的名字不會重復,所以將表的名字與列的名字一起組成某個對象的名字,那么其重復的幾率可以說基本上沒有。二是方便管理員閱讀、理解、維護等等。一看到索引或者約束對象的名字時,就可以看到這個是索引或者約束是用在哪個表的那個字段上的。而且也可以知道這個約束是唯一性約束還是檢查約束;索引時主鍵索引還是外鍵索引。給數(shù)據(jù)庫管理員一目了然的感覺。這對于后續(xù)的維護、升級、調(diào)整、引用等等都提供了方便。
四、讓表名與列名反應(yīng)該表與列的含義
有些數(shù)據(jù)庫在設(shè)計的時候,給表與列取名的時候采用的是阿拉伯的隨機數(shù)字。如1111、1112等等。這雖然便于擴展,但是筆者并不贊同這種命名方法。因為此時數(shù)據(jù)庫管理員在工作的時候,旁邊還不得不有一份對象名與實際內(nèi)容對應(yīng)的一份表格。這操作起來非常的麻煩。有些管理員也許會說,可以通過同義詞功能來為這些表取具有一定含義的別名呀。這對于數(shù)據(jù)庫規(guī)模比較小的應(yīng)用,如總共只有幾十張表格,或許是可行的。但是如果有成千上百張表格,這個定義同義詞的作業(yè)就比較累人了。所必這認為這是的得不償失的。在給表或者列命名的時候,最好能夠反映該表與列的含義。
另外有時候?qū)Ρ磉M行命名的時候,還需要考慮應(yīng)用軟件的設(shè)計。因為程序開發(fā)人員需要引用數(shù)據(jù)庫中的對象。所以在命名時也需要考慮到他們的便利。筆者建議如果應(yīng)用軟件考慮到模塊化設(shè)計的時候,如將一個應(yīng)用軟件分為銷售、生產(chǎn)、采購、倉庫、財務(wù)等模塊時,那么各個模塊在數(shù)據(jù)庫中對應(yīng)的表最好加上相關(guān)的前綴。如此的話,無論是數(shù)據(jù)庫管理員還是程序開發(fā)人員,在使用這些表的時候,都可以通過前綴來縮小其選擇的范圍。從而提高其工作的效率。只要在應(yīng)用程序設(shè)計時規(guī)劃好模塊,然后為每一個模塊取一個簡單易懂的前綴(最好具有相同的字符數(shù)),就可以了。這一點小小的改進,就可以為后續(xù)使用這些數(shù)據(jù)庫對象提供很大的方便。為此筆者強烈建議讓表名反應(yīng)表的用途,反應(yīng)應(yīng)用軟件的設(shè)計思路。
安卓版本:8.7.50 蘋果版本:8.7.50
開發(fā)者:北京正保會計科技有限公司
應(yīng)用涉及權(quán)限:查看權(quán)限>
APP隱私政策:查看政策>
HD版本上線:點擊下載>
官方公眾號
微信掃一掃
官方視頻號
微信掃一掃
官方抖音號
抖音掃一掃
Copyright © 2000 - odtgfuq.cn All Rights Reserved. 北京正保會計科技有限公司 版權(quán)所有
京B2-20200959 京ICP備20012371號-7 出版物經(jīng)營許可證 京公網(wǎng)安備 11010802044457號