数据库的另一种设计方法
最近参与了一个项目的开发,在开发的过程中发现数据库的设计有点意思,顺便拿来给大家分享一下。
对于一个项目来说,数据库无疑是很重要,如果数据库设计不好,项目就很难开发的优秀,所以一个数据库的设计就显得尤其重要。
在我这个项目中,有一个订单表(orderform),一个商品信息表(googsinfo),一个系统参数表(Syspram)暂且拿这几张表做例子.在表orderform和googsinfo中,所有的字段一律全部都为WG01, WG02, WG03, WG04…..WG30这样的30个字段,这些字段全都是无意义的,如图:
然后在系统参数表(Sysparam)里就标明这些表的意义,包括表里字段的意义,如图
这里每个表里的所有字段都被清楚的表述出它的意义,然后我们在操作SQL语句的时候就只操作系统参数表。比如一条select语句:
原句:SELECT WG01,WG02 FROM FreightInfo
改变后的:SELECT (SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’配送编号’),
(SELECT FIELDNAME FROM SYSParma WHERE SHOWNAME=’联系人电话’) FROM FreightInfo.
当然,大家现在看起来好像改变后的比原句复杂多了,但是如果我们写一个公共类来解析系统参数表里的字段,那我们在写类似SELECT WG01,WG02 FROM FreightInfo
这样的查询语句时,就完全没有必要硬编码在代码中,只要通过改变你传入的参数就可以获取到不通过的字段,如果你的公共类做得更强大的话,那SQL语句的类型(比如:SELECT,UPDAE,DELETE,INSERT)等你都可以通过传入参数来得到不同的SQL语句,这就有点像HRIBERNATE,不过不同的是HREBERNATE把配置写到了XML文件里,而这里是把配置写到了数据库里,操作起来更方便。在以后我们就根本不用关心表的结构问题,哪怕它换成了其他的系统,我也只要改动一下系统参数表里的数据就可以了,完全不用担心字段的问题,因为所有的字段都是无意义,这样使用的重复性就可以大大提高。
这就是我的见解,有什么不足的地方,还请多多请教!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?