在數據庫中創建對象時,管理員也要對其進行取名
現在談談取名的壹些技巧
壹、表名大小寫的控制壹般情況下Oracle數據庫中的表名或者列名是不區分大小寫的
在創建表或者列的時候,即使管理員采用了小寫的名字,數據庫在將其保存到數據字典之前,會先將其轉換為大寫,再將他們保存到數據字典中
這也就是為什麽我們取名使用小寫的子母取名,但是下次查看表的名字的時候,卻變成了大寫
雖然說Oracle數據庫中表與列等數據庫對象對於大小寫是不敏感的,但是如果數據庫管理員確實有需要要讓數據庫系統對表的名字區分大小寫,這也是可以做到的
通常情況下,如果把名字使用雙引號括起來,則在Oracle數據字典中就會成為區分大小寫的名字
不過筆者這裏要提醒各位數據庫管理員,雖然說從技術上可以讓數據庫系統強制取分大小寫,但是在實際工作中,包括在內的絕大部分數據庫管理員可能都不建議這麽做
因為如果有混合的大小寫存在,那麽在引用這些表或者列名稱的時候就需要特別的小心
因為即使用戶或者數據庫管理員有著過目不忘的本領,也很難準確的記住這些名稱的大小寫歌時
如果數據庫管理員硬要這麽做的話,那麽很可能是自尋煩惱
在查詢時或者其他作業時,要嚴格區分大小寫那是壹件很頭疼的事情
為此,對於這個大小寫的控制,筆者建議數據庫管理員要謹慎使用
除非有充分的理由,否則的話,不要輕易使用這個雙引號來控制大小寫
這個雙引號不僅可以用來控制大小寫,還有壹個比較特殊的作用,就是用引用壹些特殊的字符
如在建立表格的時候,需要設置壹個名牌號的字段
有些數據庫管理員習慣使用num#類似的名稱
這不會違反數據庫的取名規則
不過在處理的時候會比較麻煩
如利用create語句建立表格的時候,需要給這個字段名稱加上雙引號
否則的話,執行這條語句的時候,數據庫會拒絕執行並向用戶提示錯誤信息
類似的特殊符號還包括壹個$美元符號
他們在建立表格的時候,在語句中都需要使用雙引號
不過字段建立好之後,在引用這些對象的時候,不需要使用雙引號了
同理,雖然Oracle數據庫支持這些特殊符號,但是筆者不鼓勵數據庫管理員在表或者列的取名中采取這些特殊的符號
這有可能給後續的引用帶來不必要的麻煩
二、牢記取名空間在Oracle數據庫中,跟其他的數據庫不同,有壹個叫做取名空間的概念
在同壹個取名空間中,其名字不可以重復
如表與視圖就***享同壹個取名空間,為此就要求不僅表的名字不能夠相同,而且表的名字與視圖的名字也不能夠相同
因為他們處於同壹個取名空間
類似的,表與函數也是同處於壹個表空間,為此他們也不能夠同名
不過表與索引、表與約束等等卻屬於不同的取名空間
也就是說,表的名字可以與約束的名字相同
所以說,數據庫管理員在給表等對象取名的時候,壹定要了解哪些對象***享同壹個名稱空間
如果在同壹個名稱空間內的,即使對象不同(如視圖與表),但是他們仍然不能夠取相同的名字
為了避免同壹個取名空間內重名的現象,筆者建立在取名的時候最好能夠根據對象的不同加上對象的固有前綴
如大部分的數據庫管理員,在給表取名的時候,壹般不會表名前面加上表對象的前綴
但是在定義函數或者視圖對象的時候,則會加上前綴
如在函數前面可能會加上FN的前綴,而在視圖前面可能會加上vi的前綴
如此的話,在同壹個取名空間內也不用擔心對象重名的問題
不過無論怎麽說,這個取名空間的概念數據庫管理員必須牢記
即使在實際的工作中,可以通過前綴等手段輕易的避免這個陷阱,但是在Oracle數據庫管理員的認證考試中,這個取名空間也是壹個必要的知識點
所以無論從實際的工作還是認證考試的需要,對於這個取名空間管理員都必須要有壹個清晰的認識
三、在表、索引、約束、列之間設置密切的聯系在創建表的同時,可以給表中的某些列添加索引、約束等等
如在員工信息表中,會設置員工編號唯壹性約束
在創建約束的時候,也需要對約束進行取名
雖然說也約束與表、列不屬於同壹個取名空間,所以在取名的時候基本上沒有限制
但是為了後續使用的方便,筆者對約束的取名還有壹個小小的建議
簡單的說,就是給壹個與表直接有關的其他對象具有該表的名字是壹種好的做法
如現在有壹張用戶表名字叫做ad_user(在表名前面壹般不加對象名,但是可以根據應用軟件的模塊設計加上模塊的前綴),這種表中有壹個字段叫做叫做vlaue,用來存儲員工的編號
在表設計的時候,需要給這個字段加壹個索引
那麽這個索引的名字就可以取名為IDX_USER_VALUE(也就是索引前綴表名字段名的形式)
這麽做有什麽好處呢?壹是可以確保相關對象的名字不會重復
因為表的名字不會重復,所以將表的名字與列的名字壹起組成某個對象的名字,那麽其重復的幾率可以說基本上沒有
二是方便管理員閱讀、理解、維護等等
壹看到索引或者約束對象的名字時,就可以看到這個是索引或者約束是用在哪個表的那個字段上的
而且也可以知道這個約束是唯壹性約束還是檢查約束;索引時主鍵索引還是外鍵索引
給數據庫管理員壹目了然的感覺
這對於後續的維護、升級、調整、引用等等都提供了方便
雖然說Oracle數據庫中表與列等數據庫對象對於大小寫是不敏感的,但是如果數據庫管理員確實有需要要讓數據庫系統對表的名字區分大小寫,這也是可以做到的
通常情況下,如果把名字使用雙引號括起來,則在Oracle數據字典中就會成為區分大小寫的名字
不過筆者這裏要提醒各位數據庫管理員,雖然說從技術上可以讓數據庫系統強制取分大小寫,但是在實際工作中,包括在內的絕大部分數據庫管理員可能都不建議這麽做
因為如果有混合的大小寫存在,那麽在引用這些表或者列名稱的時候就需要特別的小心
因為即使用戶或者數據庫管理員有著過目不忘的本領,也很難準確的記住這些名稱的大小寫歌時
如果數據庫管理員硬要這麽做的話,那麽很可能是自尋煩惱
在查詢時或者其他作業時,要嚴格區分大小寫那是壹件很頭疼的事情
為此,對於這個大小寫的控制,筆者建議數據庫管理員要謹慎使用
除非有充分的理由,否則的話,不要輕易使用這個雙引號來控制大小寫