1. 程式人生 > >輕輕的你來了,那麼可愛!

輕輕的你來了,那麼可愛!

1 設計規範:
1.1 採用有意義的欄位名
儘可能地把欄位描述的清楚些。當然,也別做過頭了,比如CustomerShippingAddressStreetLine1 雖然很富有說明性,但沒人願意鍵入這麼長的名字,具體尺度就在你的把握中。
每個單詞的首個字母要求用大寫,不要用下劃線來連線每個單詞!!!

1.2 遵守3NF 標準3NF 規定:
A.表內的每一個值都只能被表達一次。

B.表內的每一行都應該被唯一的標識(有唯一鍵)。

C.表內不應該儲存依賴於其他鍵的非鍵資訊。

1.3 小心保留詞
要保證你的欄位名沒有和保留詞、資料庫系統或者常用訪問方法衝突,比如,寫的一個ODBC 連線程式裡有個表,其中就用了DESC 作為說明欄位名。後果可想而知!DESC 是DESCENDING 縮寫後的保留詞。表裡的一個SELECT *語句倒是能用,但我得到的卻是一大堆毫無用處的資訊。

1.4 保持欄位名和型別的一致性
在命名欄位併為其指定資料型別的時候一定要保證一致性。假如欄位在某個表中叫做“AgreeMentNumber”,你就別在另一個表裡把名字改成“ref1”。假如資料型別在一個表裡是整數,那在另一個表裡可就別變成字元型了。記住,你幹完自己的活了,其他人還要用你的資料庫呢。

2 命名規則:
2.1 資料庫(Database)的定義
資料庫名稱 = 資料庫內容標識(首字大寫)

2.2 表(Table)的定義
命名應儘量反映儲存的資料內容。

表名字首:以該表及與該表相關聯的一系列表的內容而得到一個代表統一的標識

表名稱 = 表名字首 + 表內容標識(首字大寫)

如ClientInfo相關聯的一系的表以ci作為字首,

即有表名:ciHistory,ciContact,ciBusiness

2.25 欄位(Field)的定義
欄位是資料庫中的用途最廣泛的,它的型別非常多,所以必須加型別字首來標示它的型別

欄位名稱 = 欄位型別字首 + 欄位內容標識(首字大寫)

2.2檢視名
  檢視的名稱 = "vw" + 檢視內容標識(首字大寫)

如 vUserPerm

2.3觸發器名
觸發型別觸發標識

-----------------------------------

Inserti

Deleted

Updateu

 觸發名= "tr" + 觸發標識 + 相應的表名

如:triClient,trdClient。

2.4儲存過程名
儲存過程功能儲存過程功能字首

----------------------------------------

新增a

更新u

刪除d

查詢或其它o

儲存過程名稱 = 儲存過程功能字首 + 儲存過程內容標識(首字大寫)

如 spoChkUserPerm

2.5變數名
每個單詞的首個字母為大寫,如@EmployeeName。

2.6命名中其他注意事項
禁止使用中文命名!!!!!

命名都不得超過30個字元的系統限制,變數名的長度限制為29(不包括標識字元@)。

命名都採用英文字元,每個單詞的首個字母要大寫

2.7 SQL語句的編寫規範
資料庫中儲存過程和觸發器中涉及大量的SQL語句,對SQL語句的編寫規範如下:

關鍵字大寫:在SQL語句的編寫中,凡是SQL語句的關鍵字一律大寫,如:SELECT、ORDER BY、 GROUP BY、 FROM、WHERE、 UPDATE、 INSERT INTO、 SET、 BEGIN、 END ......

2.8 Rule
   ru+Rule標識

2.9 主鍵
   pk+表名+主鍵標識

2.10 外來鍵
   fk+表名+主表名+外來鍵標識

2.11 索引
   idx+欄位標識

2.12 Default
   df+Default標識

3 程式設計結構和描述
SQL SERVER系統中,一個批處理是從客戶傳給伺服器的一個完整的包,可以包含若干條SQL語句。批處理中的語句是作為一組去進行語法分析、編譯和執行的。觸發器、儲存過程等資料物件則是將批處理永久化的方法。

3.1註釋
註釋可以包含在批處理中。在觸發器、儲存過程中包含描述性註釋將大大增加文字的可讀性和可維護性。本規範建議:

1、註釋以英文為主。
    實際應用中,發現以中文註釋的SQL語句版本在英文環境中不可用。為避免後續版本執行過程中發生某些異常錯誤,建議使用英文註釋。

2、註釋儘可能詳細、全面。
建立每一資料物件前,應具體描述該物件的功能和用途。

傳入引數的含義應該有所說明。如果取值範圍確定,也應該一併說明。取值有特定含義的變數(如boolean型別變數),應給出每個值的含義。

3、註釋語法包含兩種情況:單行註釋、多行註釋
單行註釋:註釋前有兩個連字元(--),最後以行尾序列(CR-LF)結束。一般,對變數、條件子句可以採用該類註釋。

多行註釋:符號/*和*/之間的內容為註釋內容。對某項完整的操作建議使用該類註釋。

4、註釋簡潔,同時應描述清晰。
3.2函式註釋:
編寫函式文字--如觸發器、儲存過程以及其他資料物件--時,必須為每個函式增加適當註釋。該註釋以多行註釋為主,主要結構如下:

/*******************************************************************************************

*   儲存過程:讀取使用者所分配的操作模組及具體許可權

*   編 制 者 :saiko

*   修 改 人 :

*   編制日期:2004.11.27

*   輸入引數:共有2個引數

*         @cUserNo:使用者編號

*         @cUserPassword:驗證密碼

*   輸出引數:@eResult    1. 成功= 銷售@0001   2. 失敗 =Null    3.與 @eResult  無關  輸出是記錄集

*   呼叫例子:declare @eResult varchar(50)exec  uChkUserPerm  '0755' ,'123456', '銷售'

*   說    明: 

*              

******************************************************************************************/

CREATE PROCEDURE spoxxx

3.3條件執行語句if…else
條件語句塊(statenemt block,以 begin…end為邊界)僅在if子句的條件為真時才被執行。為提高程式碼的可讀性,建議巢狀不多於5層。還有,當巢狀層次太多時,應該考慮是否可以使用case語句。

3.4重複執行while和跳轉語句goto
需要多次執行的語句,可以使用while結構。其中,控制while迴圈的條件在任何處理開始之前需要先執行一次。迴圈體中的保留字break無條件的退出while迴圈,然後繼續處理後續語句;保留字continue重新計算while條件,如果條件為真,則從迴圈開始處重新執行各語句。

使用跳轉語句goto和標籤label也可以方便地實現迴圈和其他更靈活的操作。SQL SERVER僅具有單通道語法分析器,因此不能解析對尚未建立的物件所做的前向參考。換言之,跳轉到某標籤的後續語句應該是可執行的(如不存在可能尚未建立的資料物件)。

3.5書寫格式
資料庫伺服器端的觸發器和儲存過程是一類特殊的文字,為方便開發和維護,提高程式碼的易讀性和可維護性。規範建議按照分級縮排格式編寫該文字。

順序執行的各命令位於同一級;條件語句塊(statenemt block,以 begin…end為邊界)位於下一級,類推。

SQL語句是該文字的主體。為適應某些教複雜的使用者需求,SQL語句可能比較龐大。為方便閱讀和維護,規範建議按照SQL語句中系統保留字的關鍵程度再劃分為三級。具體分級請參照下表。其中,非系統保留字(如欄位名、資料表名、標點符號)相對本級保留字再縮排一級。多個連續的非保留字可以分行書寫,也可以寫在同一行。當WHERE包含的條件子句教複雜時,應該每行只寫一個條件分句,併為重要的條件字句填寫單行註釋。

在保證基本縮排格式的前提下,可以通過對齊某些重要關鍵字(如條件關鍵字AND、OR,符號 = 、 <> 等)來進一步提高文字的易讀性和可維護性。

相鄰兩級的縮排量為10個空格。這也是ISQL編輯器預設的文字縮排量。另外,在ISQL編輯器中,一個TAB鍵也相當於10個空格。

注:按照功能,四類SQL語句(SELECT、INSERT、UPDATE、DELETE)的關鍵字可以劃分為三類:主關鍵字、次關鍵字、一般關鍵字。如下表所示:

主關鍵字次關鍵字一般關鍵字

SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM語句中的SELECT和FROMANDORBETWEENINLIKE

3.6字型
系統保留字應大寫,包括系統公共變數等。其他字元(如使用者自定義變數、使用者自定義資料物件名)小寫。

需要特殊強調的部分可以大寫

一條完整註釋語句的首字元應大寫。對某變數、某條件字句的註釋可以全部使用小寫。

通過下一節中生成表r_a的刪除觸發器的例項可以部分說明物件命名、註釋、基本書寫格式和字元大小寫方面的一些注意事項。

4觸發器程式設計規範
4.1範例
下面通過一個例子,說明觸發器程式設計中應遵守的規範:

 /* delete related r_a according to deleted table */

CREATE TRIGGER r_a_d ON r_a

      FOR DELETE

AS

IF @@ROWCOUNT = 0 -no rows deleted

          RETURN

 /* delete r_b table related to deleted table */

DELETE r_b

          FROM r_b b, deleted d

          WHERE b.id=d.id

IF @@ERROR != 0

    BEGIN

          RAISERROR("Error occurred deleting related records", 16, 1)

          ROLLBACK TRAN

END

RETURN

資料庫設計規範
A.   表命名規則
&#61548;       資料庫中不論是表名還是欄位名,都一律用英文,不準出現其它語言;且保留原來的欄位名,保留它們的規範;

&#61548;       為了不增加資料庫當中的表名的長度,一般不允許出現如Form或者Table的字樣,如:記錄表:應為Record,而不是RecordTable

&#61548;       資料庫當中的表名的命名,一般不準出現空格,假如有幾個單詞出現的話,每個單詞之間不允許留有空格,用 ”_” 隔開如人事資訊表:應為Human_Info,而不是Human Info;每個單詞的第一個字母必須大寫;如果太長,為了不增加程式設計的難度可採用縮寫的方式,每個單詞可取三到四個字母表示,也可根據實際情況,實際習慣進行縮寫

B.   列命名規則
表中的欄位名的命名方式與表名的命名方式一致,只是不需要模組的字首,但是為了程式設計的方便性,可在前面加上欄位型別的字首,一般取用型別的三個字母,但是不需要下化線,而且這三個字母必須小寫;如姓名欄位為字元型的話就應該為chrName;嘗用欄位型別的縮寫可參考下面的表格:

縮寫       型別

chr         char

nvr  nvarchar

num numeric

flt    float

dtm  datetime

int    Int(integer)

mny money

img  image

txt   text

rel    real

ntx   ntext

C. 資料庫物件命名規則

命名規則為 :物件型別  +  變數的含義

資料庫物件命名可歸納如下:

物件       字首       示例

表    無    Sales_Reps

列    資料型別       intAuthorId

視 圖 [View] vw   vwContractAuthors

儲存過程 [Store Procedure] prc  prDeleteTerminatedReps

規 則 [Rules]       rl     rlZipCheck

默 認 [Default]     df    dfStandardQuanity

使用者自定義資料型別    dt    dtAddressLine

使用者自定義功能    fn    fnParser

索引(聚集)     ic     icAuthorFullName

索引(非聚集) in     inClientStateCity

主鍵(聚集)     pc    pcCustomerId

主鍵(非聚集) pk    pnSstateLookupId

外 鍵 [Foreign Key]     fk    fkRepCompanyId

觸發器 [Trigger]   tr     trStoreDelete

遊標 [Cursor]       cr    crTables

D.   特殊規則
&#61548;       在欄位的型別上面,為了不因為系統的設定而造成程式設計上面的問題,所以只要是日期型別,一般都用字元型來代替,其長度不應該小於10位,而且儲存格式統一,如2002-07-15 。

&#61548;       為了避免在以後的程式設計以及字型差異方面帶來不利,因此只要是能下拉的欄位一般都指定統一的編碼,可以取用數字型來代替,但必須著名每個數字代表的意思;如性別欄位:可以採用數字代替的方式,1:代表男,0:代表女;而且要在欄位後面的備註欄中填寫清楚。

相關推薦

輕輕那麼可愛

1 設計規範:1.1 採用有意義的欄位名儘可能地把欄位描述的清楚些。當然,也別做過頭了,比如CustomerShippingAddressStreetLine1 雖然很富有說明性,但沒人願意鍵入這麼長的名字,具體尺度就在你的把握中。每個單詞的首個字母要求用大寫,不要用下劃線來

CorelDRAW購物節福利開獎 | “剁手節”前的攻略請查收

圖片 china com 分享圖片 技術 png ddbd .html 分鐘 距離“剁手節” 還有不到兩周的時間 相信一些線上、線下、微商、電商...都拿出了看家本領進行市場混戰 一場沒有硝煙的戰爭開始啦!! …… 當然,我也不例外 你們誰都別攔著,我要打廣告了 讓你變成了

2018LinuxCon開源界的大咖們趕緊行動

​​​全球頂級開源盛會二度落地中國!很多人都期望有著牛頓的成功之道:我之所以能成功 ,是因為我站在巨人的肩上。但是,最為困惑的是:巨人在哪裡?參加2018年度的 LinuxCon + ContainerCon + CloudOpen (LC3)中國會議,您絕不會有這種尷尬。屆

手機線下支付全面的二維碼防盜支付措施趕緊收藏

https 使用 密碼 tps 第三方 聚合支付 支持 排隊 平臺 隨著二維碼支付越來越普及,不法分子們也想出了各種各樣的盜刷手段,讓消費者和商家防不勝防。人們現在購物,娛樂,停車,繳費等只需要提供一個手機就能解決,商店付款時提供二維碼或者掃碼就可以,正因為如此,最近就有出

微信小程式如何傳送訂閱訊息正確姿勢建議收藏

小程式訂閱訊息公測已經有些日子,今天以世界上最好的語言(PHP)為例,說一下如何傳送訂閱訊息。 1、訂閱訊息 其實如果用過模板訊息的話,改用訂閱訊息挺簡單的,看一下官方文件稍加摸索就能使用。 但是對於那些第一次用的萌新來說,可能會遇到各種各樣的坑,所以我會具體的說一下實現的過程,有經驗的可以直接翻到文章底部檢

JDK15就要卻還不知道JDK8的新特性

> 微信搜「煙雨星空」,白嫖更多好文。 現在 Oracle 官方每隔半年就會出一個 JDK 新版本。按時間來算的話,這個月就要出 JDK15 了。然而,大部分公司還是在使用 JDK7 和 8 。 之前去我朋友家,竟然被嘲笑不會用 JDK8 。 不服氣的我,回來之後,當然是重點學習之啊。 ![](h

“她”們如期而至-微軟中國女性大會

現場 社會 相信自己 麗人 人生 探索 科技 事業 項目管理 微軟2016女性大會於5月順利登錄深圳、上海及北京!職場女神零距離交流,健康講座、溝通講座給小主們工作生活全助攻,還有精美午餐、幸運禮品侍奉左右。精神收貨+物質收貨=滿載而歸,讓我們好好看看微軟鏗鏘麗人如何綻放

“剁手節”紅包搶到嗎?

http 實現 廣告 應用交付 adding 信息 解決方案 -c 管理 雷迪森卷頭們, 又到了一年一度的剁手節,年年節後喊剁手,然鵝並沒有什麽卵用!買買買還是會繼續! 說到買買買,現在的各位童鞋可能並不擔心有沒有錢,而是更擔心能不能搶到貨,以及商家的各路紅包有沒有一個不落

網時|ipone又的腎養好沒?

ipone 網時ipone問世已經10年了,每一次的新品發布會都會讓你的腎顫抖一番。2017年9月13日淩晨1點,在喬布斯劇院舉行新品發布會,這次不僅帶來了4.7英寸ipone8和5.5英寸ipone8 plus,還有10周年的紀念5.8英寸的iponeX,三款手機均為雙面玻璃鏡面,防塵防水,並支持無線充電,

“共享護士”看好這種互聯網+醫療的嘗試嗎?

共享護士 近日,關於共享護士的新聞,引起了社會各界的廣泛關註。這種結合互聯網+醫療的嘗試在方便我們大家的同時,也引發了不少關於整個行業規範以及風險規避制度的討論。目前有看好的,有持懷疑態度者都不占少數。其中關於相關平臺對於簽約護士相關的標準,還有如果出現意外,如何能保障病人權益等的問題都比較受大家關註。今天我

Java 11 快要編譯 & 運行一個命令搞定

新版本 真的 alt eba 符號 pat oot AD 命令編譯 Java 11 馬上要來了,原定於 9 月發布,還有不到 3 個月了,敬請期待更多新功能被加入到 11 當中,本文本講的是 JEP 330 這個新特性。 化繁為簡,一個命令編譯運行源代碼 看下面的代碼。 /

摺疊屏就要適配逼死 Android 開發?谷歌有辦法

1. 異型屏還沒適配好,摺疊屏就要來了,Android 的碎片化,讓開發者又多掉了不少頭髮。 北京時間 11 月 8 日,三星在舊金山向開發者釋出了一款可摺疊螢幕手機。並表示,新技術需要開發者調整其 App,以確保在手機被攤開成平板電腦時,能夠執行流暢。 三星的這款手機,還處

Android9.0這6個重大更新得知道

原標題:Android9.0來了,這6個重大更新你得知道 三月份是手機密集釋出的日子,從MWC之後, 三月份是手機密集釋出的日子,從MWC之後,國內外不少廠商都推出了自家的新品。如果說去年的浪潮是全面屏設計的話,今年的趨勢恐怕就是劉海屏了。不管喜不喜歡,我們都要承認劉海屏是提高屏佔比

還在把幣放在交易所?out如何將幣拿在自己手中?王道

題目這個問題很多剛剛入幣圈的朋友或者是從股市轉到幣圈來的朋友都會有這樣的疑問,疑問是還能把幣提出來?幣放到交易所不是也可以嗎?經常跟一起筆者在一起聊天的時候跟筆者說,虛擬幣和股票都一樣啊,買漲買跌賺錢就好!其實這麼理解是不正確的,股票你是拿不走的,它存在於你開戶的賬號上,於你的身份一一對應,都是由一

雙十一要我去廟裡給一道護身符

  雙十一要來了,   小哥沒來,卻來了一個陌生電話: “王蘑菇先生,請問你是不是最近在X家網購了一套性感睡衣?我是這家網店的客服人員。您買的這套睡衣質量有問題,公司現在需要召回並退款給您。麻煩您提供一下退款賬戶……” 應該是騙子

樸然

哈哈哈 歡迎使用Markdown編輯器 你好! 這是你第一次使用 Markdown編輯器 所展示的歡迎頁。如果你想學習如何使用Markdown編輯器, 可以仔細閱讀這篇文章,瞭解一下Markdown的基本語法知識。 新的改變 我們對Markdown編輯器進行了一些功能拓展與語

微信小程式準備好嗎?

1.小程式是基於webView的開發 2.小程式的伺服器域名一定要支援https 3.單個小程式最多不能超過2MB,小程式可以分包,最多分4個包,所以說小長鬚最大不超過8MB 4.目錄結構 app.js           js邏輯程式碼

Android 摺疊屏就要準備好

北京時間 11 月 8 日,三星在舊金山向開發者釋出了一款可摺疊螢幕手機三星,型號為Infinity Flex Display。視訊的動態圖上我們可以發現,三星的摺疊屏手機是屏內摺疊設計,將螢幕摺疊後手機的外部還有一塊螢幕顯示內容,但是尺寸不大。 三星釋出的這款手機,實際上擁有兩塊螢幕,可摺疊的

實體店看過來無人零售如何破局看這裡

新零售時代的發展中,從使用者消費體驗到支付、物流等環節上,線下的門店面臨著一個全新的機遇和挑戰。 據《日經亞洲評論》報道,7-Eleven正在日本測試新的概念商店,希望徹底取消收銀員,並將使用人臉識別來認證消費者並完成結賬;此前不久,亞馬遜剛剛設立了Amazon Go無人便利店,改變了傳統的便利

物聯網裝置身份認證Link ID²對黑客攻擊:老弟

2018年12月19日,阿里雲宣佈推出新版物聯網裝置身份認證Link ID²及物聯網安全運營中心Link SOC,護航萬物智聯。    隨著越來越多的裝置連線到網路中,隨之而來的安全問題越來越突出。 關鍵基礎設施首當其衝    2015~2016年年底,烏克蘭電網遭到攻擊造成大規模停電!