编写一个简版的数据库维护框架02-详细设计

本文将把摘要设计中的 “实现”部分,具体化。

一、实体映射

功能限定:我们规定每一个界面指完成对一个表的维护。目的很明确,这样做编程简单,用户使用也比较简单,菜单功能项和界面是一一对应的。

1、实体设计约定(表设计约定)

为了后期处理的方便,我们对表的设计进行一些约定。
1. 总则
遵守1-3NF,或者 4NF,5NF
2.部分数据冗余的支持
由于严格遵守NF的规定,数据库在维护时,需要对编程者要求比较高,一般情况下会影响编程质量,或者导致效率下降。因此,允许冗余字段,减少过多的表引用。
3.不支持复杂类型数据
复杂数据类型是指 json 数据类型,这种类型的维护,需要单独代码实现。
2. 每个表的主键名固定为pk
3. 每个表需包含一个 name字段,用以标识行的名称
4. 每个需包含以下三个辅助字段(mysql语法)
1) last_modi_by varchar(16) 最后更新的账号
2) last_modi_time datetime 最好更新的时间
3) remark varchar(128) 备注
框架默认这三个字段存在,尤其是 1和2 两个字段,会自动更新。

2、界面元素和实体映射约定

为了简化代码实现,引入框架之后,只需要编程人员进行界面设计,就可以完成基本的增删改查功能,要实现这一点,需要对界面元素属性进行约定,从而“自动”完成界面元素和实体的映射;
1、界面名称命名约定
总则:遵守常规的C#变量命名方法
特殊约定:和实体变量无关的控件命名遵守总则要求,和实体变量相关的控件名称命名规则如下
名称由三部分组成,前缀_实体字段名
前缀:用以标明控件的类型
_: 标明此控件是映射的实体变量
实体字段名: 和实体字段名相同,框架据此名称生成sql语句。
2、控件使用约定
使用 Panel 和Group 控件记录表名称,tag中标明是主表数据还是字表辅助显示数据。其内部元素属于这个表。
其余字段约定如下:
字符型数据:textBox
数据类型:NumericUpDown
bool 类型: CheckBox
时间类型: DateTimePicker
3、其他约定
浏览数据显示:DataGridView , 控件名称的后缀是 表名称
引用表数据:后面将专门讨论这个问题

二、数据输入合法性检查

1、输入时合法性检查

两种方式:1)利用现有控件的自身的类型属性进行限制 2)tag中增加正则表达式进行类型限定

2、保存合法性检查

单值唯一性检查:在tag中增加 正则表达式,表示检查唯一性
多值唯一性检查:在tag中增加正则表达式,建立字段的关联关系(暂不支持)

3、删除合法性检查

主要利用数据库的引用关系

4、信息提示

tag中保存提示信息。
另外框架提供统一的信息提示框。

三、引用表数据录入和显示

有两种情况

1、没有冗余信息

即主表中指包含一个外键,实际信息要通过查询引用表获得。

2、含有冗余信息的引用

主表中除了外键,还有部分引用表的数据,这样做的目的是方便。(有错误数据的风险)

这两种情况,都使用DataGridView 来作为输入和显示控件。
约定如下:
1) tag: 标明这个dgv是一个引用表
2) dgv的名字的第三部分是外键名
3) dgv的column 是字段名称
4) 用Column 的headtitle 进行内容的显示,并且为了符合一般意义的显示,将外键值设置为隐藏模式。(框架自动处理为这种模式)
5)获得焦点时,增加高度,便于选择;失去焦点时,表现为单行模式;
6)冗余字段在tag中标识

4、辅助工具类

将提供一个辅助工具类,用来进行上面各种功能的支持

1、数据输出函数

功能:给定DataRow 数据,映射到界面控件上并进行显示;

2、SQL 语句生成函数

根据增删改查和界面字段映射,生成 SQL语句(insert , update ,select , delete)

3、其他

正则表达式识别函数,消息显示函数等等等等。

MaraSun BJFWDQ
2023-01-29

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值