標簽:com http class blog style code div img java size javascript
对于千万级与百万级數據庫设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以數據庫设计时考虑的角度是:与开发相结合;空间换性能;空间换开发效率;减少null异常......当然不同的公司与项目要求不同,初学者要学会适应不同的项目开发要求,使用本框架开发时,必须严格按照本章节的要求来设计數據庫,不然可能会产生不可控的异常。
從零開始編寫自己的C#框架
數據庫设计规范
文件狀態: [√] 草稿 [ ] 正式发布 [ ] 正在修改 |
文件標識: |
C#框架 |
當前版本: |
0.1 | |
作 者: |
陳煥(AllEmpty) | |
聯系方式: |
1654937@qq.com | |
更新日期: |
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]
AS
BEGIN
--定義臨時變量
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))) >= 0
END
4、
生成SQL代码
在数据字典(Excel表)里设计好數據庫架构后,用ExcelToSQLString2.91生成相应的SQL代码,然后打开SQL查询分析器运行后生成相应的数据表。
在Excel表中设计好數據庫架构,设置好主键与排序标识,生成的SQL语句就会自动創建对应的主键和绑定排序列。(主意事项:主键Id设计时,名称必须为Key、Id、表名
+ Id或 表名 + _Id,不然使用SubSonic3.0插件时会出错)
打開ExcelToSQLString2.91軟件
打開軟件,選擇《數據字典》文件路徑,設置好要生成的表格名稱,按圖中的選項全部打好勾。
然後點擊運行,生成對應的SQL語句。
將上面語句複制到SQL查詢分析器中直接運行就可以了。
附件下載
版權聲明:
本文由AllEmpty原創並發布于博客園,歡迎轉載,未經本人同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如有問題,可以通過1654937@qq.com
聯系我,非常感謝。
发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 ,大家一起探讨。
更多內容,敬請觀注博客:http://www.cnblogs.com/EmptyFS/
從零開始編寫自己的C#框架(9)——數據庫設計與創建,码迷,mamicode.com
標簽:com http class blog style code div img java size javascript
原文地址:http://www.cnblogs.com/EmptyFS/p/3690870.html