標籤: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)——資料庫設計與建立