從零開始編寫自己的C#架構(9)——資料庫設計與建立

來源:互聯網
上載者:User

標籤:font   系統   int   小型   通過   tag   資料庫預存程序   其他   代碼   

對於千萬級與百萬級資料庫設計是有所區別的,由於本項目是基於中小型軟體開發架構來設計,記錄量相對會比較少,所以資料庫設計時考慮的角度是:與開發相結合;空間換效能;空間換開發效率;減少null異常......當然不同的公司與項目要求不同,初學者要學會適應不同的項目開發要求,使用本架構開發時,必須嚴格按照本章節的要求來設計資料庫,不然可能會產生不可控的異常。

 

從零開始編寫自己的C#架構

資料庫設計規範

 

檔案狀態:

[√] 草稿

[  ] 正式發布

[  ] 正在修改

檔案標識:

C#架構

目前的版本:

0.1

作    者:

陳煥(AllEmpty)

連絡方式:

[email protected]

更新日期:

2014-04-26

 

版本/狀態

作者

參與者

起止日期

備忘

0.1

陳煥(AllEmpty)

 

2014-04-26

建立

         
         

 

 

目    錄
一、    文檔介紹    3 1、文檔目的    3 2、文檔說明    3 3、讀者對象    3 4、系統開發強度等級    3 5、使用工具    3 6、ExcelToSQLString2.91 for July軟體介紹    3 二、    建立資料庫    4 1、    資料表設計要求    4 2、    資料字典設計要求    4 3、    資料庫預存程序建立規範    5 4、    產生SQL代碼    5

 

一、文檔介紹 1、文檔目的 本文檔是《從零開始編寫自己的C#架構》項目後台管理系統的開發指引說明。

2、文檔說明 本文主要講述資料庫設計的要求與規範,開發人員必須嚴格按照本規範來設計,不然可能在開發中會產生不可控的異常。 本項目是基於中小型軟體開發架構來設計,記錄量相對會比較少,所以資料庫設計時考慮的角度是:與開發相結合;空間換效能;空間換開發效率;減少null異常。

3、讀者對象 本項目的開發人員。

4、系統開發強度等級 (強度分為:容易、中等、困難) 當前難度為:容易

5、使用工具 Excel + ExcelToSQLString2.91 for July軟體。

6、ExcelToSQLString2.91 for July軟體介紹 這個軟體是我身邊的大神July開發的,將指定格式的資料字典(Excel格式)轉為SQL執行語句,減輕開發工作量。 經得July同意,現在無嘗共用出來,後面代碼中也會使用到大神開發的一些功能非常強大的函數或類,所以在這裡也為他宣傳一下,以對他無嘗奉獻的精神表示感謝。

July有十多年的開發經驗,在我們的小圈子裡的全能型開發人員(除了UI設計不會)。ASP、ASP.NET、PHP都有十年左右的開發經驗,經手過的大中小型項目幾十個(估計快上百個了),前後端(包括WinFrom開發各種進銷存軟體與應用、開發、WAP站開發)開發都非常擅長,非常精通前端切圖、JS、CSS,在他手上沒有解決不了的瀏覽器安全色問題。開發速度效率非常高,承接各種類型的外包開發。想聯絡他的話請加群327360708找July。

二、    建立資料庫 1、    資料表設計要求 1.    資料庫表名與欄位名應遵守Pascal風格,包含一到多個單詞,每一個單詞第一個字母大寫,其餘字母均小寫。(具體命名要求請查看第3章節) 2.    如果是關聯表,則命名規則為R_表A_表B,如R_ProductInfo_Tag等。 4.    對於視圖命名,規則為View_表A,視圖由多個表產生,就用底線串連幾個表名,如View_ProductInfo_ProductClass。 5.    預存程序,命名規則為P_表名_預存程序功能名稱。如P_ProductInfo_Add;如果該預存程序是很多表共用的,命名為:P_All_預存程序功能名稱 6.    資料欄位命名,也使用Pascal風格。當欄位引用的是其他表欄位時,使用表名_其他表欄位名稱,間用底線隔開,命名規則:表名_單詞。如ProductInfo表與ProductClass表關聯的欄位:ProductClass_Id,ProductClass_Name等。與外表的主鍵或相關欄位引用時(包括狀態值),須加同時添加外表所引用主鍵(或狀態值)對應的名稱,以方便查詢時減少多表關聯語句的編寫,提高代碼執行效率,詳細請看《資料字典》中的設計。

2、    資料字典設計要求 必須使用附件中的Excel表並按裡面設計格式來設計資料庫(如)。

可能有的朋友會說,既然要按軟體工程開發規範來做,為什麼不用建模工具呢? 呃……其實對於中小型項目來說,我覺得不必要用建模工具來處理,那樣很麻煩且更費時間,而使用本文介紹的工具,操作起來方便快捷,直接查看資料字典也很直觀明了。

在設計欄位名時,除了上面要求外,還有一些特殊的命名規則要求,這將會影響邏輯層產生的函數,當然有些函數如果名稱與下面要求一致,而它卻不是你想要的功能定義時,你可以忽略該產生函數,不去調用即可。具體如下: 1)    主鍵Id必須命名為“Id”,將會產生UpdateValue()函數,用來更新指定Id的記錄; 2)    欄位名包涵Name這個字串的,會產生GetXxxName()函數,可以直接讀取該欄位值; 3)    欄位名包涵_Id這個字串的,會預設為該欄位是外鍵Id,將會產生DeleteByXxx_Id()函數,用來刪除當前表值為指定外鍵的所有記錄;還會產生UpdateValue_For_Xxx_Id()函數,用來更新當前表值為指定外鍵的記錄值; 4)    欄位類型為tinyint的欄位,會被預設為狀態欄位,會產生UpdateXxx()函數,用來更新該狀態值; 5)    欄位名包涵Key這個字串且該欄位為string類型的,會產生GetModelByXxxKey()函數,主要功能是通過Key這個欄位值來擷取目前記錄實體; 6)    欄位名包涵Count這個字串且該欄位為int型的,預設為訪問計數欄位,會產生UpdateXxxCount()函數,用來執行該欄位值累加功能; 7)    欄位名包涵Img這個字串且該欄位為string類型的,預設為圖片路徑儲存欄位,會產生DeleteXxx函數,用來執行圖片刪除功能; 以上規則大家在開發中可以根據需要自己在T4模板中任意添加或修改,使用這種規則產生後,將會大大減輕開發人員的代碼量與出錯次數(主要減少重複代碼的開發),提高開發效率。

 

另外單獨說明一下《資料字典》中“上傳管理”與“上傳配置明細”這個工作表,它們是July開發的上傳組件所要使用的相關配置表,只要配置好相要產生的圖片大小與路徑,那麼就可以通過簡單的調用得取想要的效果,在後面代碼編輯章節會有詳細例子介紹說明。

 

3、    資料庫預存程序建立規範 在建立預存程序時,頭部必須寫上功能、建立人、建立日期及修改情況。預存程序主體必須寫上清晰的注釋說明。 例:

-----------------------------------------------------------功能說明:刪除使用者使用日誌--操作曆史------操作    操作人        日期------建立    Empty        2013-11-20------修改            ---------------------------------------------------------CREATE PROCEDURE [dbo].[P_Userlog_Delete] ASBEGIN    --定義臨時變數    DECLARE @UseLogReserveTime INT    --擷取系統設定的動作記錄保留日期    SELECT TOP 1 @UseLogReserveTime = UseLogReserveTime FROM WebConfig    --如果設定為無限制,則不執行刪除程式    IF @UseLogReserveTime <= 0        RETURN 0    --執行日誌刪除程式    DELETE FROM UseLog WHERE DATEDIFF(d, AddDate, DATEADD(d, -@UseLogReserveTime, CONVERT(VARCHAR(10),GETDATE(),110))) >= 0END

從零開始編寫自己的C#架構(9)——資料庫設計與建立

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.