国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Microsoft SQL Server之?dāng)?shù)據(jù)庫存檔

2009-12-17 14:40:35 5526



本文將為大家講述如何注釋自己的SQL Server,這些原理適用于所有的SQL Server版本,雖然SQL Server 2005及更高的版本包含了一些增強(qiáng)數(shù)據(jù)存檔功能的巧妙設(shè)置。本文大部分涉及的原理也同樣適用于其他的關(guān)系數(shù)據(jù)庫,如Oracle、 MySQL、Microsoft Access和PostgreSQL等。
  數(shù)據(jù)庫命名規(guī)范
  如果你是從頭開始設(shè)計(jì)一個(gè)數(shù)據(jù)庫,那遵循邏輯數(shù)據(jù)實(shí)體命名規(guī)范將是明智之舉。下面為您提供在新數(shù)據(jù)庫中給對(duì)象命名時(shí)會(huì)用到的一些建議。
  一般命名規(guī)范
  如果可以,數(shù)據(jù)庫名稱應(yīng)當(dāng)只使用文字和數(shù)據(jù)這兩種字符。避免使用連字號(hào),因?yàn)橹髸?huì)給編寫某些T-SQL查詢命令造成困難。
  如果可能,盡量避免在數(shù)據(jù)庫實(shí)例中使用空格符,特別是為表和列命名時(shí)。雖然如果用方括號(hào)括起來的話,T-SQL還是可以辨認(rèn)這些實(shí)體,不過在某些情況下也有可能導(dǎo)致混淆和代碼錯(cuò)誤。此外,還要盡量避免在表名和列名中使用T-SQL的保留詞,例如month、year和user等。
  表命名規(guī)范
  當(dāng)我們?yōu)楸砻麜r(shí),應(yīng)當(dāng)使用與該表存儲(chǔ)的數(shù)據(jù)相關(guān)的名稱。例如,存儲(chǔ)企業(yè)員工數(shù)據(jù)的表可以命名為employees,注意這里使用的是名詞的復(fù)數(shù)形式,因?yàn)橐粋€(gè)表里很可能存儲(chǔ)一個(gè)以上員工信息。
  有一些程序開發(fā)人員會(huì)為表名附上像t_這樣的前綴。如果這些表是引用了應(yīng)用程序的源代碼而來,那么這些前綴就非常有用,這樣能夠使軟件開發(fā)團(tuán)隊(duì)一眼就看出來這是一個(gè)表,而不是一個(gè)視圖或其他被引用的實(shí)體。
  給表名附上與其功能相關(guān)的前綴(如StudentID_)可以幫助我們把表分門別類。SQL Server 2005引入了模式的概念,可以為表分類。例如StudentsEnrollments數(shù)據(jù)庫中包含了StudentResources模式,而相關(guān)的表(StudentID、StudentAddress、StudentCredits等)就會(huì)在SQL Server 管理工作室表列中的這個(gè)模式下全部列出。
  外鍵命名規(guī)范
  如果能在一個(gè)數(shù)據(jù)表中識(shí)別出哪些是外鍵(foreign keys)會(huì)非常有用,所以在為外鍵命名的時(shí)候,可以添加一些類似于fk_的前綴,這樣可以更直接的從表的字段中看出表的關(guān)系。
  存儲(chǔ)過程命名規(guī)范
  根據(jù)用途來為存儲(chǔ)過程命名是很有意義的。例如,GetUserID、InsertDateOfBirth、UpdateEnrollInfo等等,這樣對(duì)于存儲(chǔ)過程的用途就一目了然了。
  有時(shí)候,可以適當(dāng)添加后綴來表示存儲(chǔ)過程的輸入?yún)?shù)。例如GetUserIDByUserNameAndPassword這名稱表示該存儲(chǔ)過程會(huì)通過一個(gè)用戶名和密碼作為輸入?yún)?shù)返回用戶ID。這可以用來區(qū)分功能相似但參數(shù)設(shè)置不同的存儲(chǔ)過程,還可以添加其他相關(guān)的存儲(chǔ)過程,例如GetUserIDByGUID和GetUserIDByApplicantID。這種命名規(guī)范的缺陷就是存儲(chǔ)過程的名字會(huì)變得很長。
  一些開發(fā)人員會(huì)用特定的標(biāo)簽來為所有的存儲(chǔ)程序添加前綴。其中很流行的做法是為存儲(chǔ)程序名添加sp_前綴。不過,這里并不推薦這種做法,原因有二。首先,這對(duì)數(shù)據(jù)庫性能有輕微的影響,因?yàn)镾QL Server會(huì)先在主數(shù)據(jù)庫中查找所有帶有這個(gè)前綴的存儲(chǔ)過程,雖然這會(huì)性能的影響很小,不過在高級(jí)和企業(yè)系統(tǒng)中,影響可能會(huì)放大。其次,由于微軟在設(shè)計(jì)的時(shí)候也為系統(tǒng)的存儲(chǔ)過程使用了這個(gè)前綴,所以始終存在著這種可能,那就是你為自己的存儲(chǔ)過程起的名字和某個(gè)系統(tǒng)存儲(chǔ)過程的名字相同。而且,SQL Server未來發(fā)布的版本中可能會(huì)引入一個(gè)新的系統(tǒng)存儲(chǔ)過程,而這個(gè)過程與你現(xiàn)有的用戶存儲(chǔ)過程的名字相同。
  如果你實(shí)在想要為自己的存儲(chǔ)過程添加前綴,那么建議你使用usp_或sproc_這樣的前綴。同樣的,你可以為某個(gè)函數(shù)名加上func_這樣的前綴,特別是在從應(yīng)用程序源代碼調(diào)用存儲(chǔ)程序的時(shí)候非常有用,因?yàn)檫@讓軟件開發(fā)團(tuán)隊(duì)清楚的了解到這是在調(diào)用一個(gè)存儲(chǔ)過程。
  SQL存儲(chǔ)過程的存檔
  千萬不要忘記把存儲(chǔ)過程和函數(shù)的T-SQL代碼存檔。由于簡單的查詢代碼應(yīng)該是自注釋的,而存檔將對(duì)大型的查詢代碼非常有用。而存儲(chǔ)過程的標(biāo)準(zhǔn)化標(biāo)頭也非常有用,至少能夠說明該存儲(chǔ)過程的功能。如果手頭上沒有任何源控制系統(tǒng),在標(biāo)頭中包括日志變化的內(nèi)容還能夠幫助我們追蹤變化的發(fā)生。
  數(shù)據(jù)庫對(duì)象描述
  能夠?qū)?shù)據(jù)庫對(duì)象進(jìn)行描述在某種程度上意味著能夠創(chuàng)建自我存檔的數(shù)據(jù)庫。
  微軟早在SQL Server 7.0就引入了一個(gè)有用的功能,就是通過表設(shè)計(jì)窗口為某個(gè)表添加描述(Description)。SQL Server 2000通過引入擴(kuò)展屬性(extended properties)加強(qiáng)了這一功能。然而,SQL Server 2000的企業(yè)管理器限制了允許屬性編輯的功能。不過在 SQL Server 2005中的SQL Server管理工作室GUI允許對(duì)擴(kuò)展屬性進(jìn)行編輯。數(shù)據(jù)庫中的大部分對(duì)象(如表、列、視圖、函數(shù)、存儲(chǔ)過程和數(shù)據(jù)庫本身)都具有可編輯的擴(kuò)展屬性。默認(rèn)狀態(tài)下,只有單一的擴(kuò)展屬性MS_Description。而且,雖然你可以利用MS_Description擴(kuò)展屬性來為對(duì)象添加描述,但如果沒有第三方加載工具,就算添加了,用處也并不大。

提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: