oracle 之 COMMENT
http://blog.csdn.net/liguihan88/article/details/3002403
無疑注釋現在都被大家接受和認可,在大家編程用的IDE中都提供或有第三方插件來支持提取注釋內容實現
快速了解結構的功能。但在數據庫的腳本編寫方面我也是經歷了百般折磨后總結了一些東西發來與大家切磋。
下面來看一個Oracle建表的方式。
create table ctable_name
(
?????? field1 varchar2(20), --注釋的內容1
?????? field2 number,?????? --注釋的內容2
?????? field3 char(2),????? --注釋的內容3
?????? field4 date????????? /*注釋的內容4*/?
)
之前一直都是這樣來建表,覺得快速也好理解,其實數據庫結構不復雜的情況下我也喜歡這種方式,但當數據庫結構很復雜的時候維護起來就很頭疼,一個SQL幾百K,看的你眼都花了,而且有N個這樣的SQL文件,那么在對不了解的復雜的數據庫結構實現快速編程方面,為了了解結構查找注釋的工作量也很大。
尤其公司項目已經做了5年了,好多SQL腳本都沒了,那么數據結構只能問老的同事,但對于人員更替頻繁的公司當老程同事都換了幾批,都不在了,沒人可問,那么維護人員或后續開發人員就掉進了無盡的痛苦中,好多問題都是出在這上面。后期投入成本也是很巨大的。如果數據庫結構命名什么的比較規范還好,可以憑字面意思確定大概用途,反之真實苦不堪言。而且知識的傳遞當中是有人為因素導致的缺失的。舉例來說就是一般員工離開公司之前會用一個月的時間來交接,但大部分都是用
一周左右的時間來交接工作,那么交接的自然會有意識的忽略一些小的或掩蓋一些有問題的地方只說主要好使的地方,如果交接的是一個對結構了解的同事還好,根據相應的經驗,承接不是問題,但如果交接給新的同事,新同事接起來很費勁,而要走的同事要進的公司還催他速度辦離職,那么缺失的部分就要新同事來彌補,當然如果他是個負責的人當他發現雖然項目可以進行或說程序可以跑起來但有些東西,一般是細節的東西他還不了解需要打電話給原來的同事來弄清楚,那么也不會有什么問題,但我說的是如果,一般的人在看到項目能夠進行(程序能跑起來)是不會去弄那些東西的,這樣循環下去,最后維護這個程序或后續開發的倒霉蛋就有的苦吃了,我體會過這樣的痛苦,所以我深有體會,估計別的公司一定也會有這種現象。
?
那么總結下可能出現的情況:
1.SQL腳本內容很多,格式不規范,閱讀不方便,連帶查找也不是很高效。
2.SQL腳本很多,且每個都存在1的問題,仍然不效率。
3.數據庫工作交接中存在的細節遺失。
4.出現3的問題而且數據庫對象命名不規范,后續維護人員對數據庫對象含義存在歧義性,連帶產生的問題趨近與無窮大,
精神折磨趨近與無窮大,導致不想干下去跳槽走人的概率趨近于1。
那么總結后當然要提出一個我認為好的解決方案,用comment關鍵字來解決這個問題,看看下面的方式
create table ctable_name
(
?
?????? field1 varchar2(20), --注釋的內容1
?????? field2 number,?????? --注釋的內容2
?????? field3 char(2),????? --注釋的內容3
?????? field4 date????????? /*注釋的內容4*/?
)
--select * from ctable_name;
comment on table ctable_name is '對表注釋的內容';/*給表添加注釋的方式*/
select * from user_tab_comments where table_name = 'CTABLE_NAME';/*查詢某表的注釋*/
?
comment on column ctable_name.field1 is '對field1列注釋的內容';/*給列添加注釋內容的方式,有多少個列應該寫多少個*/
select * from user_col_comments where table_name = 'CTABLE_NAME' and column_name = 'FIELD1';/*查詢某表下某列的注釋*/
?
上面解決方案把我上面提到的問題都解決了,本質是利用ORACLE中的數據字典的功能,那么雖然在編寫腳本的時候可能會多一些工作量,但他能達到的效果遠大于那一點工作量。
?
這里的編輯器真爛,截圖就不傳了,到時候你在數據庫里執行上面的語句自己看吧。下面說說他的好處。
1.可以通過SQL語句快速查詢,只要知道表名和字段名定位注釋極方便快速。
2.注釋內容是存儲在字典表里的,只要表結構還在,那么SQL腳本即使沒有了也可以定位查詢。
3.不需要猜字段是什么意思,因為在簡表的時候已經給了沒有二意的注釋,后期承接明確。
4.可以編寫自己的小工具來加速數據結構的學習過程,方便新員工。
5.極力推薦大家這么做,同事也可以現在對原庫表結構填補注釋。
?
匆匆寫了一點,很多地方沒說的清楚,歡迎的大家來一起切磋。我已經在我后續的項目中這么做了,確實好處頗多,最后套用趙本山的話來結束“誰用誰知道”。
http://blog.sina.com.cn/s/blog_6b7c2750010174oc.html
二、comment關鍵字用于對表,字段添加注釋,有利于用戶對表結構以及數據庫對象含義的理解。
三、用戶可以通過數據字典視圖來查詢表或字段的數據信息,可查詢的相應視圖為:
1. 訪問自己用戶的注釋信息要查詢的數據字典視圖(the date directory views)
user_tab_comments;表注釋:有三個字段TABLE_NAME,TABLE_TPYE,COMMENTS
user_col_comments;表字段注釋:有三個字段TABLE_NAME,CLUMN_NAME,COMMENTS
2. 訪問其他用戶的注釋信息要查詢的數據字典視圖(the date directory views)
all_tab_comments;表注釋:有四個字段OWNER,TABLE_NAME,TABLE_TPYE,COMMENTS
all_col_comments;表字段注釋:有四個字段OWNER,TABLE_NAME,CLUMN_NAME,COMMENTS
3. DBA權限用戶可訪問所有用戶的注釋信息要查詢的數據字典視圖(the date directory views):
dba_tab_comments;表注釋:有四個字段OWNER,TABLE_NAME,TABLE_TPYE,COMMENTS
dba_col_comments;表字段注釋:有四個字段OWNER,TABLE_NAME,CLUMN_NAME,COMMENTS
四、comment的使用實例:
create table OB_CALL_DATE_LOG
(
CALL_ID VARCHAR2(60);
PROJECT_ID VARCHAR2(30);
COMMENTS VARCHAR2(200)
)
則在sql腳本中可以寫:
select * from OB_CALL_DATE_LOG;
comment on table OB_CALL_DATE_LOG is ‘該表是話單信息表’
select * from user_tab_comments where TABLE_NAME=’OB_CALL_DATE_LOG’
comment on columm OB_CALL_DATE_LOG.PROJECT_ID is ‘項目標識’
select * from user_col_comments where TABLE_NAME=’OB_CALL_DATE_LOG’ and column_name=‘PROJECT_ID’
這樣就對數據庫表,表的各個字段有了了解。
總結
以上是生活随笔為你收集整理的oracle 之 COMMENT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【典型错误】The type java.
- 下一篇: 《大型网站技术架构》1:概述