从零开始编写自己的C#框架(9)——数据库设计与创建

c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比 ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比 阅读详情

 对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合;空间换性能;空间换开发效率;减少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查询分析器中直接运行就可以了。


附件下载

C#使用西门子S7 协议读写PLC DB块 1.Nuget 安装s7 驱动包 2.例如,西门子有一个db块,这个是我们上位机要读写的DB 3. 根据西门子S7 协议文档3.1 读写类的原理,是通过反射处理的,不过我们并不需要关心它是如何反射的,我们只关心我们要如何使用。3.2 首先,需要建立一个类,跟西门子 DB块 名称一样的实体类 4. 类建立完成,我们通过接口的方式实现读写数据4.1 普通接口的实现 4.2 我们知道该方法的参数后,接着需要定义接口的方法。 4.3 调用该接口,就能获取到plc 的值了。 PLC DB5的值 5. 以上就是普通 阅读详情

相关推荐

c#编写简易框架

今天在这里写一套简单的框架,主要用于一些小型的项目,用于数据的增删改查,通用分页查询等操作.所以功能并不强大,而且笔者也是新手,这里面也难免会有bug,忘读者朋友提醒. 现在我们进入正题吧,想要写一套通用的框架,反射是必须要熟知的.至少你需要知道如何通过反射获取属性和值.然后我们自定义一些特性,用于和数据库的连接. 完成框架的制作,我们分步骤来说 1.编写自定义特性 2.通过发射,拼接字符

xoshinilaozide61585的专栏 2659

C#语言入门(三):C#程序的基本结构

C#程序的基本结构 1.命名空间 C#程序中的一种代码组织形式,主要用来表示类的可见范围。 语法:namespace 命名空间名称 (补充:一般我们在创建项目时会自动生成一个与项目名称相同的命名空间,所以一般情况下不需要再另外创建) 引用:using 命名空间名称 当我们想要使用现成的命名空间时,用using关键字就可以引用。 ...

summersneverdie的博客 3215

关于Berkeley DB打开创建数据库文件

<br />使用BDB C# API进行基于数据库应用程序的开发,需要libdb51.dll,libdb_csharp51.dll和libdb_dotnet51.dll三个动态链接库。首先,在开发的工程中添加libdb_dotnet51.dll的引用,由于libdb_dotnet51.dll需要调用本地代码得到的libdb51.dll和libdb_csharp51.dll。因此,libdb51.dll,libdb_csharp51.dll应放在本工程路径或者环境变量中,以便运行时加载。开发过程中,在代码中添

dgh_85的专栏 2998

C# SqlSugar框架的学习使用(一)--SqlSugar简介及创建

前言最近有个开发项目准备启动,由于要求的开发周期较短,所以准备用个C#的框架,原本最初考虑用成熟的EF框架,但是觉得那个框架也太重了,就在网上找找了别的,无意间发现了SqlSugar的框...

Vaccae的博客 1万+

C#语言实现的ACCESS数据库创建指南

本文还有配套的精品资源,点击获取 简介:本教程将向你展示如何使用C#和ADOX组件创建Microsoft Access数据库。内容涵盖了必要的引用命名空间、连接字符串的设置、以及创建数据库、表和添加列的具体步骤。通过这个指南,你将能够掌握在.NET环境中利用C#编程语言进行数据库操作的基础知识,并理解如何添加和管理数据库对象。 1. .NET框架下的C#编程 1...

weixin_35677363的博客 1748

C#数据库创建与管理实战指南

ADO.NET 是一个用于连接、操作和管理数据的 .NET Framework 组件,旨在构建高效且可扩展的 Web 应用程序。它为数据提供者提供了一种从 .NET 程序访问数据源的机制。其核心架构包括以下几个关键部分:Data Provider(数据提供者):负责与数据源进行通信,数据提供者组件包括了针对特定数据源(如 SQL Server、Oracle 等)的专有组件。DataSet:一个在内存中表示数据的复杂结构,可以包含多个数据表、关系、约束等。

weixin_34162851的博客 963

从零开始编写自己的C#框架(1)——前言

本文转载连接:https://www.cnblogs.com/EmptyFS/p/3621484.html 记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子。十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书。而再后来也差不多,自学了很多不同的知识,都一直只能自己默默的克服一个又一个困难。所以这几...

newbie的博客 389

ASP.NET C# 实现SqlServer数据库自动化创建指南

ASP.NET是一套用于构建Web应用程序的.NET框架。它是用于Internet的服务器端技术,主要用C#编写。其架构分为Web窗体、MVC(Model-View-Controller)、Web API和SignalR等多个组件。ASP.NET允许开发者使用HTML、CSS和JavaScript等前端技术,以及服务器端的C#来构建交互式网站。数据库权限可以大致分为以下几个类别:- 数据操作权限:如SELECT, INSERT, UPDATE, DELETE等,用于数据的增删改查操作。

weixin_42405592的博客 1055

【数据库】从零开始C#开发数据库并搭建完整系统

【数据库】从零开始C#开发数据库并搭建完整系统选择窗体应用程序系统概览找到工具箱选择LabelLabelLabel,右键属性修改名称,在TextTextText旁边进行修改选择修改文字大小加入TextBoxTextBoxTextBox,即图中小白框选择一个ButtonButtonButton拖下去选择RadioButtonRadioButtonRadioButton拖下去刚开始RadioButtonRadioButtonRadioButton得有个初始选中添加类选择ADO.NETADO.NETADO.NET

一拳Marx 1万+

3dMax效率翻倍!用Octopus章鱼插件打造你的专属快捷菜单(附MaxScript入门指南)

本文详细介绍了如何利用Octopus插件和MaxScript脚本在3dMax中打造高效快捷菜单,显著提升三维建模与动画制作的工作效率。通过饼状菜单系统、自动化宏录制和脚本控制,用户可实现个性化工作流,节省大量操作时间。文章还提供了MaxScript入门指南,帮助开发者快速掌握这一强大工具。

weixin_30920853的博客 152

GD32F303串口DMA发送数据避坑指南:为什么你的发送函数会卡住?

本文深入解析GD32F303单片机串口DMA发送数据时常见的卡死问题,提供详细的避坑指南。从DMA传输完成中断时序、发送状态管理到双通道DMA的特别注意事项,全面剖析问题根源并给出解决方案,帮助开发者构建健壮的DMA发送机制。

weixin_27038245的博客 295

C#如何创建SQL server数据库

在这里插入代码片@TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这## 标题篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全...

星期一兴起 5772

微信小程序使用ucharts折线图,有负数显示0刻度线

当数据有负数和正数的时候默认不会显示0刻度线,不方便看出正负对比。

欢迎来到我的博客!在这里,我将分享我在前端开发方面的知识和经验。让我们一起探索前端开发的无限可能! 1581

从零开始用WPF+C#打造MySQL数据管理系统:完整项目搭建指南

本文详细介绍了如何使用WPF和C#从零开始构建一个完整的MySQL数据管理系统。涵盖环境配置、数据库设计、ORM映射、WPF界面开发以及性能优化等关键环节,帮助开发者掌握桌面应用与数据库集成的核心技术,实现高效的数据管理解决方案。

bush的博客 543

基于单片机的室内空气质量监控系统设计

摘 要 I Abstract II 引 言 1 1 控制系统设计 3 1.1 方案选择 3 1.2 系统控制原理 4 2系统硬件设计 5 2.1 单片机的选择与设计 5 2.2 温湿度模块设计 6 2.3 甲醛采集模块设计 8 2.4 显示器模块设计 9 2.5 按键模块设计 10 2.6 报警模块设计 11 2.7 加湿及风扇模块设计 11 3系统软件设计 13 3.1 总流程方案设计 13 3.2 温湿度获取的软件设计 14 3.3 液晶屏LCD1602的软件设计 15 4系统调试 13 4

Q_1928499906的博客 2701

让 ME51N 在采购信息记录过期时不要带出上一次采购订单的价格

在采购信息记录(PIR)价格条件无效或过期时,到上一次采购订单价格进行提议;你可以通过关闭,并在把PO price设置为不采纳,再辅以把过期的价格来源直接拦截为错误。若仍需 100% 阻断,可用在保存前清空估价价格作为技术兜底。标准行为与配置证据见文内引用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 661
上一篇: 从零开始编写自己的C#框架(8)——后台管理系统功能设计
下一篇: 从零开始编写自己的C#框架(10)——项目实施计划与甘特图
假牙
博客等级 码龄19年 69粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值