SQL樣式指南 SQL Style Guide

上傳人:ta****fu 文檔編號:210920316 上傳時間:2023-05-18 格式:DOCX 頁數(shù):11 大?。?5.21KB
收藏 版權(quán)申訴 舉報 下載
SQL樣式指南 SQL Style Guide_第1頁
第1頁 / 共11頁
SQL樣式指南 SQL Style Guide_第2頁
第2頁 / 共11頁
SQL樣式指南 SQL Style Guide_第3頁
第3頁 / 共11頁

下載文檔到電腦,查找使用更方便

9.98 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《SQL樣式指南 SQL Style Guide》由會員分享,可在線閱讀,更多相關(guān)《SQL樣式指南 SQL Style Guide(11頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、SQL樣式指南 SQL Style GuideOverview 綜述你可以直接使用這些指導方針,或者fork后創(chuàng)建自己的版本最重要的是選擇一套方針并嚴格遵守它。歡迎通過提交issue或pull request來提交建議或修復bug。為了讓閱讀了Joe Celko的SQL ProgrammingStyle的團隊能更容易采用這套規(guī)則, 這套原則被設(shè)計成與該書的兼容的形式。該指南在某些領(lǐng)域嚴格一些,在另一些領(lǐng)域松懈一些。 當然該指南比Celko的書更簡潔一些,因為Celko的書包含了一些趣聞和每一條原則后的理由。將該文檔的Markdown format格式添加到項目代碼庫中或?qū)⒃擁撁娴逆溄影l(fā)送給所有

2、項目的參與者要比傳閱實體書容易得多。Simon Holywell所著的SQL樣式指南以署名-相同方式共享 4.0 國際協(xié)議發(fā)布,改編自sqlstyle.guide。General 一般原則Do 應(yīng)該做的事情 使用一致的、敘述性的名稱。 靈活使用空格和縮進來增強可讀性。 存儲符合ISO-8601標準的日期格式(YYYY-MM-DD HH:MM:SS.SSSSS)。 最好使用標準SQL函數(shù)而不是特定供應(yīng)商的函數(shù)以提高可移植性。 保證代碼簡潔明了并消除多余的SQL比如非必要的引號或括號,或者可以推導出的多余WHERE語句。 必要時在SQL代碼中加入注釋。優(yōu)先使用C語言式的以/*開始以*/結(jié)束的塊注釋

3、,或使用以-開始的行注釋。Avoid 應(yīng)避免的事情 駝峰命名法它不適合快速掃描。 描述性的前綴或匈牙利命名法比如sp_或tbl。 復數(shù)形式盡量使用更自然的集合術(shù)語。比如,用“staff”替代“employees”,或用“people”替代“individuals”。 需要引用號的標識符如果你必須使用這樣的標識符,最好堅持用SQL92的雙引號來提高可移植性。 面向?qū)ο缶幊痰脑瓌t不該應(yīng)用到結(jié)構(gòu)化查詢語言或數(shù)據(jù)庫結(jié)構(gòu)上。Naming conventions 命名慣例General 一般原則 保證名字獨一無二且不是保留字。 保證名字長度不超過30個字節(jié)。 名字要以字母開頭,不能以下劃線結(jié)尾。 只在名字

4、中使用字母、數(shù)字和下劃線。 不要在名字中出現(xiàn)連續(xù)下劃線這樣很難辨認。 在名字中需要空格的地方用下劃線代替。 盡量避免使用縮寫詞。使用時一定確定這個縮寫簡明易懂。Tables 表名 用集群名稱,或在不那么理想的情況下,復數(shù)形式。如staff和employees。 不要使用類似tbl或其他的描述性的前綴或匈牙利命名法。 表不應(yīng)該同它的列同名,反之亦然。 盡量避免連接兩個表的名字作為關(guān)系表(relationship table)的名字。與其使用cars_mechanics做表名不如使用services。Columns 列名 總是使用單數(shù)形式。 避免直接使用id做表的主標識符。 避免列名同表名同名,反

5、之亦然。 總是使用小寫字母,除非是特殊情況,如專有名詞。Aliasing or correlations 別名與關(guān)聯(lián)名 應(yīng)該與它們別名的對象或與它們代表的表達式相關(guān)聯(lián)。 一般來說,關(guān)聯(lián)名應(yīng)該是對象名的第一個字母。 如果已經(jīng)有相同的關(guān)聯(lián)名了,那么在關(guān)聯(lián)名后加一個數(shù)字。 總是加上AS關(guān)鍵字,因為這樣的顯示聲明易于閱讀。 為計算出的數(shù)據(jù)命名時,用一個將這條數(shù)據(jù)存在表里時會使用的列名。Stored procedures 過程名 名字一定要包含動詞。 不要附加sp_或任何其他這樣的敘述性前綴或使用匈牙利表示法。Uniform suffix 統(tǒng)一的后綴下列后綴有統(tǒng)一的意義,能保證SQL代碼更容易被理解。在

6、合適的時候使用正確的后綴。 _id獨一無二的標識符,如主鍵。 _status標識值或任何表示狀態(tài)的值,比如publication_status。 _total總和或某些值的和。 _num表示該域包含數(shù)值。 _name表示名字。 _seq包含一系列數(shù)值。 _date表示該列包含日期。 _tally計數(shù)值。 _size大小,如文件大小或服裝大小。 _addr地址,有形的或無形的,如ip_addrQuery syntax 查詢語句Reserved words 保留字保留字總是大寫,如SELECT和WHERE。最好使用保留字的全稱而不是簡寫,用ABSOLUTE而不用ABS。當標準ANSI SQL關(guān)鍵字

7、能完成相同的事情時,不要使用數(shù)據(jù)庫服務(wù)器相關(guān)的關(guān)鍵字,這樣能增強可移植性。White space 空白字符正確地使用空白字符對清晰的代碼十分重要。不要把代碼堆再一起或移除自然語言中的空格。Spaces 空格用空格使根關(guān)鍵字都結(jié)束在同一列上。在代碼中形成一個從上到下的“川流”,這樣幫助讀者快速掃描代碼并將關(guān)鍵字和實現(xiàn)細節(jié)分開。川流在排版時應(yīng)該避免,但是對書寫SQL語句是有幫助的。注意WHERE和FROM等關(guān)鍵字,都右對齊,而真實的列名都左對齊。注意下列情況總是加入空格: 在等號前后(=) 在逗號后(,) 單引號前后(),除非單引號后面是括號、逗號或分號Line spacing 換行總是換行的情況

8、: 在AND或OR前。 在分號后(分隔語句以提高可讀性)。 在每個關(guān)鍵詞定以后。 將多個列組成一個邏輯組時的逗號后。 將代碼分隔成相關(guān)聯(lián)的多個部分,幫助提高大段代碼的可讀性。讓所有的關(guān)鍵字右對齊,讓所有的值左對齊,在查詢語句中間留出一個空隙。這樣能提高速讀代碼的速讀。Identation 縮進為確保SQL的可讀性,一定要遵守下列規(guī)則。Joins Join語句Join語句應(yīng)該縮進到川流的另一側(cè)并在必要的時候添加一個換行。Subqueries 子查詢子查詢應(yīng)該在川流的右側(cè)對齊并使用其他查詢相同的樣式。有時候?qū)⒂依ㄌ枂为氈糜谝恍胁⑼c它配對的左括號對齊是有意義的尤其是當存在嵌套子查詢的時候。Pref

9、erred formalisms 推薦的形式 盡量使用BETWEEN而不是多個AND語句。 同樣地,使用IN()而不是多個OR語句。 當數(shù)據(jù)輸出數(shù)據(jù)庫時需要處理時,使用CASE表達式。CASE語句能嵌套形成更復雜的邏輯結(jié)構(gòu)。 盡量避免UNION語句和臨時表。如果數(shù)據(jù)庫架構(gòu)能夠不靠這些語句運行,那么多數(shù)情況下它就不應(yīng)該依靠這些語句。Create syntax 創(chuàng)建語句聲明模式信息時維護可讀代碼也很重要。所以列定義的順序和分組一定要有意義。在CREATE定義中,每列要縮進4個空格。Choosing data types 選擇數(shù)據(jù)類型 盡量不使用供應(yīng)商相關(guān)的數(shù)據(jù)類型這些類型可不能能在老系統(tǒng)上使用。

10、只在真的需要浮點數(shù)運算的時候才使用REAL和FLOAT類型,否則使用NUMERIC和DECIMAL類型。浮點數(shù)舍入誤差是個麻煩。Specifying default values 指定默認類型 默認值一定與列的類型相同如果一個列的類型是DECIMAL那么就不要使用INTEGER類型作為默認值。 默認值要緊跟類型聲明并在NOT NULL聲明前。約束和鍵約束和鍵是構(gòu)成數(shù)據(jù)庫系統(tǒng)的重要組成部分。它們能很快地變得難以閱讀和理解,所以遵從指導方針是很重要的。Choosing keys 選擇鍵設(shè)計時應(yīng)該謹慎選擇構(gòu)成鍵的列,因為鍵既明顯影響著性能和數(shù)據(jù)完整性。1. 鍵在某種程度上應(yīng)該是獨一無二的。2. 該值

11、在不同表中的類型應(yīng)該相同并且盡量不會更改。3. 該值是否會無法通過某種標準格式(如ISO發(fā)布的標準)?如4. 盡量讓鍵保持簡單,但在適當情況下不要害怕使用復合鍵。以上是定義數(shù)據(jù)庫時合乎邏輯的平衡做法。當需求變更時,鍵也應(yīng)該根據(jù)情況更新。Defining constraints 定義約束確定鍵后,就可以用約束和字值段驗證來定義它們。General 概述 表至少需要一個鍵來保證其完整性和可用性。 約束應(yīng)該有名字,除了UNIQUE、PRIMARY KEY和FOREIGN KEY之外。Layout and order 布局和順序 在CREATE TABLE語句后先定義主鍵。 約束的定義應(yīng)該緊跟它相應(yīng)的

12、列的定義后。 如果該約束與多個列相關(guān),那么讓它盡量離與其相關(guān)的列距離越近越好。實在不行就講它放在表定義的最后。 如果是與整個表相關(guān)聯(lián)表級別的約束,那么就將放在表的定義的最后。 按照字母順序安排定義,ON DELETE排在ON UPDATE前。 有道理的話,把所有相關(guān)的語句對齊。比如,把所有NOT NULL定義對齊到同一列。雖然這樣的做法有些慢,但是能提高可讀性。Validation 校驗 用LIKE和SIMILAR TO約束來保證格式已知字符串的數(shù)據(jù)完整性。 當數(shù)字的值的范圍可以確定時,用CHECK()來防止錯誤的值進入數(shù)據(jù)庫或被錯誤地轉(zhuǎn)換。大部分情況下至少要確認值要大于零。 CHECK()約束應(yīng)該在單獨的語句中以便debug。Example:Design to avoid 面向?qū)ο笤O(shè)計思想并不適用于關(guān)系型數(shù)據(jù)庫避免這個陷阱。 將值存入一列并將單位存在另一列。列的定義應(yīng)該讓自己的單位不言自明以避免在應(yīng)用內(nèi)進行合并。使用CHECK()來保證數(shù)據(jù)庫中的數(shù)據(jù)是合法的。 EAV (Entity Attribute Value)表用特殊的產(chǎn)品來處理無模式數(shù)據(jù)。 因為某些原因(如為了歸檔、為了劃分跨國公司的區(qū)域)將能合并在一起的表分開。這樣的設(shè)計導致以后必須使用UNION操作而不能直接查詢一個表。

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!