SQL Server數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)范簡(jiǎn)介
我們?cè)谠O(shè)計(jì)SQL Server數(shù)據(jù)庫(kù)的時(shí)候,要遵循一定的設(shè)計(jì)規(guī)范,這樣設(shè)計(jì)出來的數(shù)據(jù)庫(kù)才能高效、安全、可靠。本文我們就介紹一下SQL Server數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)范,接下來就讓我們來一起了解一下這部分內(nèi)容。
1、對(duì)象注釋規(guī)則:
注釋頭:注釋頭應(yīng)該表明此對(duì)象具體實(shí)現(xiàn)功能,與之相關(guān)的對(duì)象以及操作參數(shù)、作者及最后修改時(shí)間。
存儲(chǔ)過程:CalLnIncome
相關(guān)數(shù)據(jù):
LnLineInfo,lnStation:提供線路及線路分成信息。
pbTransportBill,pbTrnasInfo:提供運(yùn)量單數(shù)據(jù)。
lnInComeList:計(jì)算結(jié)果保存在此表中。
執(zhí)行成功標(biāo)記:lnCostList表內(nèi)有最新時(shí)段的加總分成數(shù)據(jù)最后修改:By yczyk,2003.11.20
注釋內(nèi)容:系統(tǒng)操作類一般都寫在語(yǔ)句開始和最后,它與具體業(yè)務(wù)語(yǔ)句用分隔符分開!
- SET QUOTED_IDENTIFIER ON
- SET ANSI_NULLS ON
- SET ANSI_WARNINGS ON
- SET XACT_ABORT ON declare @ServerName varchar(50),@UserName varchar(20),@Password varchar(20),@DBName varchar(30),
- @TableQuery varchar(4000)--參數(shù)定義
- select @ServerName=vcComputer,@UserName=vcUserName,@Password=vcPassword,@DBName=vcDataBase
- from smDataParam set @TableQuery='select * into ##QJGroupInfo from opendatasource('+'''SQLOLEDB'','+'''Data
- Source='+rtrim(@ServerName)+';User ID='+rtrim(@UserName)+';Password='
- +rtrim(@Password)+''').'+rtrim(@DBName)+'.dbo.QJGroupInfo'
- --將數(shù)據(jù)導(dǎo)到當(dāng)前連接服務(wù)器的全局臨時(shí)表中備用,以后只要操作##QJGroupInfo表就可以
- exec (@TableQuery) update smDept set vcDeptName=t.GroupName from (
- select m.vcTransDeptNo,g.GroupName from ##QJGroupInfo g inner join smDeptRelate m
- on m.vcSourceDeptNo=g.GroupID where m.RelateKind=0)as t where cDeptNo=t.vcTransDeptNo
2、數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范數(shù)據(jù)庫(kù)設(shè)計(jì)分為邏輯設(shè)計(jì)和物理設(shè)計(jì)
・ RecoredID ,記錄唯一編號(hào),不建議采用業(yè)務(wù)數(shù)據(jù)作為記錄的唯一編號(hào)。
・ CreationDate,而在SQL Server 下默認(rèn)為GETDATE()。
・ RecordCreator,在SQL Server 下默認(rèn)為NOT NULL DEFAULT USER。
・ RecordVersion,記錄的版本標(biāo)記;有助于準(zhǔn)確說明記錄中出現(xiàn)null 數(shù)據(jù)或者丟失數(shù)據(jù)的原因數(shù)據(jù)類型:一般不建議采用char而采用varchar數(shù)據(jù)類型,除非當(dāng)這列數(shù)據(jù)的長(zhǎng)度特別固定時(shí)可以考慮用char。
char存在不足數(shù)值類型
如果表示金額貨幣建議用money型數(shù)據(jù),如果表示科學(xué)記數(shù)建議用numeric數(shù)據(jù)類型。一般采用int類型標(biāo)識(shí)唯一一行記錄。此列是否采用自動(dòng)累增視具體情況而定。如果需要在保存之前得到此標(biāo)記次序,如果你要嚴(yán)格控制記錄的加入次序,也不能用自動(dòng)累增類型。
所有的表都應(yīng)該有一個(gè)主鍵索引,這對(duì)提高數(shù)據(jù)庫(kù)的性能很有幫助。如果表中能夠用幾個(gè)字段確定一筆記錄,可以考慮建立唯一索引,但建立了唯一索引后就有了一個(gè)約束,如,如果一個(gè)表記錄數(shù)過多,而自己如何建立索引不太熟悉,可以考慮在查詢分析器里索引優(yōu)化向?qū)У玫絊QLServer 。你可以在分析器里執(zhí)行指定語(yǔ)句的查詢執(zhí)行計(jì)劃,根據(jù)執(zhí)行計(jì)劃顯示的查詢成本來調(diào)整相應(yīng)的查詢語(yǔ)句。
保證數(shù)據(jù)的一致性和完整性:
主外鍵關(guān)聯(lián)
建立主外鍵關(guān)聯(lián)可以降低數(shù)據(jù)冗余,提高查詢效率。雖然平時(shí)我們可以用join語(yǔ)句在不同的表之間進(jìn)行關(guān)聯(lián),以在設(shè)計(jì)完表后通過企業(yè)管理器的關(guān)系圖統(tǒng)一建立好關(guān)聯(lián)圖。所有的關(guān)聯(lián)都建立好了后,我們可以在視圖的建立里表中就應(yīng)該記錄當(dāng)時(shí)的商品售價(jià)了。
建立約束實(shí)現(xiàn)數(shù)據(jù)有效性檢測(cè)
你可以為某一列特別重要的值建立好約束。例如,你需要憑數(shù)據(jù)庫(kù)里面的SaleKind列數(shù)據(jù)判定銷售類別,你有0值為門店銷售,1為網(wǎng)上銷售。你系統(tǒng)只有這兩種銷售渠道,你就應(yīng)該為它建立約束,它的值只能在0和1之間。即SaleKind>0 and SaleKind<3 。設(shè)置默認(rèn)值操作數(shù)據(jù)庫(kù)不建議用SA用戶,因?yàn)镾A用戶權(quán)限過大。具體的應(yīng)用應(yīng)該創(chuàng)建相應(yīng)的數(shù)據(jù)庫(kù)操作用戶,并只賦給它指定了異常建議寫入數(shù)據(jù)庫(kù)的日志表,查詢?nèi)罩颈硪园l(fā)現(xiàn)自己程序中操作數(shù)據(jù)庫(kù)中的失誤。
關(guān)于SQL Server數(shù)據(jù)庫(kù)的設(shè)計(jì)規(guī)范的知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!更多SQL Server數(shù)據(jù)庫(kù)的知識(shí),請(qǐng)參考:http://database.51cto.com/sqlserver/。
【編輯推薦】
- SQL Server 2008數(shù)據(jù)庫(kù)學(xué)習(xí)筆記
- SQL Server 2005數(shù)據(jù)庫(kù)nolock使用詳解
- SQL Server如何啟用Ad Hoc Distributed Queries?
- SQL Server 2008用存儲(chǔ)過程實(shí)現(xiàn)插入更新數(shù)據(jù)的實(shí)例
- 含有GROUP BY子句的查詢中如何顯示COUNT()為0的結(jié)果






