首页 新闻 会员 周边 捐助

C#MySQL数据库这样设计是否合理?

0
悬赏园豆:50 [已解决问题] 解决于 2020-04-15 11:04

本人使用C#的window项目写了一个管理系统,然后要使用Mysql数据库作为辅助,目前在解决方案里新建了一个类,用来包装操作MySQL的代码,如下图所示:

然后每个操作数据库的操作,都是相同的操作(打开数据库,操作数据库,关闭数据库),如下图所示:

软件设计最终目的是:可移植到其他电脑使用,可供多人连接数据库,同时操作数据库(就是要满足普通的管理系统所具备的能力)

现在就想请问:
1、这样设计管理系统的数据库,是否合理?是否符合管理系统的的正确设计?
2、这样设计,软件的移植性怎样?怎样连带数据库一起移植这个软件到其他电脑?
3、设计不合理,或者代码书写有问题,希望能得到广大厉害有经验的大佬们的帮助!!!

😀明笔记的主页 😀明笔记 | 初学一级 | 园豆:13
提问于:2020-04-13 09:08
< >
分享
最佳答案
0
  1. 这样是看不出来数据库是怎样设计的,只能看到你用的SQL访问数据库。数据库设计基本,先看三范式(如果你知道当我没说),然后再考虑什么时候不用三范式。
  2. 软件的移植性是一个比较大的话题,并不只是复制到其他电脑这么简单。通常数据库(如果是多人使用连接),那么通常是一个中心数据库,所以到其他电脑,只需要客户端可以运行就行。客户端运行,有多种考虑,比如操作系统,Win2000,不支持 .net framework 3.5, WinXP 最高到 4.0, 通常这些东西是当你软件要大规模部署的时候,才需要考虑的,三五台电脑,大不了电脑安装一个合适的系统就行。
  3. 多人得看多少人,通常三五个人,十几二十个人的时候,随便怎么写问题都不大。当然你数据量大了就有差别,比如1000万行数据。可是从截图是看不出这些的。
    截图唯一能看出来的就是,你的SQL是拼接出来的,这样容易会导致 SQL 注入漏洞,使用 Parameter 方式或者使用 ORM 可以避免一些,但建议你可以搜索一下“SQL 注入漏洞”,看看它是什么,为什么拼接会导致问题。
收获园豆:25
爱编程的大叔 | 高人七级 |园豆:30844 | 2020-04-13 10:12

1、我重点是想知道,我的SQL代码用一个类文件(.cs)来封装合适吗?是不是存在专门写/装SQL代码的东西??
我最终目的是要把这个软件放在校园里用,多人应该达到上百人以上。
2、.net framework不支持,不可以通过下载高级版本的.net framework解决吗?
3、人数可能上百上千,除了你上面说的。我还有什么特别需要注意的问题吗?比如客户端连接数据库的方式之类的?多人同时访问数据库,修改数据库要注意上面的?
问题比较多。还请原谅我的愚昧。

😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 10:22

@😀明笔记:

  1. 不合适。以你目前的水平,谁交给你这个任务,是不合适的,但只要不出事,你说合适就合适。
  2. 客户端软件的问题是,每一台使用这个软件的电脑。操作系统都必须兼容这个软件,或者说软件必须兼容操作系统,看谁腰板粗。比如我们公司内部,还有电脑安装WINXP,那么,开发的软件客户端就必须只能用 .net framework 4.0 或以下,要不然那些电脑要么升级操作系统,要么就没法用。
  3. 针对第一点,再解释一下,不是看不起谁,而是所有的客户端软件,一旦连接数据库,那么数据库连接字符串就无法保密,最多只能对普通人不可见而已,对稍微懂点的(比如学校,学生好歹懂点),这个数据库就是案板上的鱼肉,任人宰割了。
  4. 几百上千,到达上千的时候,就会出现一些意想不到的事情,并发问题就需要考虑。
  5. 通常如果是考虑给这么多人用的话,现在的学生通常都使用WEB来完成这个任务,可能正好你学习的是WINFORM。毕竟不是每个人都愿意安装一个不知道会干点啥的客户端软件到自己的电脑上,除非你用行政命令硬来,但当年的绿坝也没做到这一点。
爱编程的大叔 | 园豆:30844 (高人七级) | 2020-04-13 13:02

@爱编程的大叔:
没有谁给的任务,全设计都属于本人操作,这个是我的毕业设计 -!!第一次做这么全面的设计,所以有很多问题没有考虑周全。
1、合适的封装对数据库操作方法的方法就是使用 Parameter 或者使用 ORM方式?
2、对于WEB来说,WINFORM就没有一点优点吗?还是说,我做管理类系统,选择WINFORM就是一个错呢?

😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 14:09

@😀明笔记:

  1. 毕业设计的话,不要问这样大的问题,你知道的只是1%,如何写代码。
  2. 先完成,再优化,不管是毕业设计还是以后的工作。
  3. 没有人可以把1万小时学习到的知识在1个小时里面告诉你,并希望你明白。
  4. 人家突然告诉你的新技术和新东西(比如ORM),你掌握的速度并不如你想象的那么快,而这些都会影响你完成毕业设计,花点时间了解一下别人提过的术语,确实简单而有效的,尝试一下。
  5. 相对于Web来说,Winform 的优点很多,我就不一一列举了。
爱编程的大叔 | 园豆:30844 (高人七级) | 2020-04-13 14:36

@爱编程的大叔:
说明一下为什么要问这么大的问题,前几天看到同学的毕业设计,同样是管理系统,同样是Winform(他是网上请的枪手,所以很多疑问不能通过他解决),它的MySQL设计方式和我的完全不一样,他的软件连接数据库,不是通过代码连接数据库,而是通过配置MySQL数据库连接的(具体不知道怎么弄的),而且数据库操作代码不是在同一个解决方案里面的。对于一个刚入门数据库的人,好奇心和茫然让我感到很不安,总觉得自己这样写数据库的方式很不对,同时也害怕面对答辩会遇到未知的问题被老师卡住,所以才会产生这一系列的问题和此贴的由来。

😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 14:47
其他回答(3)
0

我回答3吧。既然都是简单的insert,建议使用现成的orm来做吧,这样就不用你为每个实体都写一遍insert语句了。

收获园豆:10
会长 | 园豆:12463 (专家六级) | 2020-04-13 09:48

我目前这样写,会不会导致多人访问数据库时,出现阻塞现象?我是个新手,可以详细介绍一下你的orm吗?

支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 10:00

@😀明笔记: 那到不会,就是这么写的。感觉你的代码不太好,同一个类里职责太多。orm你可以百度下,很多的

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2020-04-13 10:04
@会长: 你的意思是,代码是可行的,只是不太美观,重复代码太多的意思吗?然后使用orm可以重写代码,让代码更简洁吗?
支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 10:07

@😀明笔记: 可以的

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2020-04-13 12:59

@😀明笔记: 如果用户就像淘宝那么多,考虑并发是很复杂的事情,除了软件要考虑,硬件上也得考虑。通常情况下,并发不是很高时,你这样写可以。只是你的代码组织太凌乱,复用性也不高

支持(0) 反对(0) 会长 | 园豆:12463 (专家六级) | 2020-04-15 14:49
0

其实你的代码 主要来讲,就是复用性太低

收获园豆:15
A股天才交易猿 | 园豆:1542 (小虾三级) | 2020-04-13 11:37

所以你的建议和做法,和其他网友回答的一致?

支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-13 11:40

@😀明笔记: 差不多吧, 设计的代码要像一颗大树,只有根茁壮了,才不怕任何风吹雨打, 分工明确,低耦合, 需要很多东西配合在一起
再者说,一个管理系统,怎么仅仅是你写的这种,还有权限等等,我看你这个, 一个 mysql 就能搞定所有的数据库表操作,你觉得 一个系统,一个程序, 有这么简单嘛?

支持(0) 反对(0) A股天才交易猿 | 园豆:1542 (小虾三级) | 2020-04-13 19:21

@Cgrain: 把数据库操作封装在一个类了。然后其他的封装在其他地方 -

支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-14 14:11

@😀明笔记: 类的职责单一性,后面维护也简单,否则照你的逻辑,一个类有上千行或者上万,这就回影响性能了

支持(0) 反对(0) A股天才交易猿 | 园豆:1542 (小虾三级) | 2020-04-14 14:45

@Cgrain: 你的意思是,用多个类分别写少数的函数,要比,用少数的类分别写大量的函数性能要好吗????

支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-15 10:05

@😀明笔记: 维护方便,你想想,你一个类就几千行代码,,F12 的查看方法, 所有的方法都聚集在一个类,你觉得好嘛? 而且,你user类,放user用到的方法, login 放login 的方法,人家一眼就能看出关系来,总的来说,
你用一个类完成项目,只能让你方便,而别人会在心里骂你,你分开来弄,至少代码量减少了,而且也分开了逻辑,至少维护就方便了,很多人不喜欢老项目,大多数原因就是 代码量太多 什么都往里面写,看着就烦
设计的合理 才有信心更新与维护, 否则 你还考虑什么 并发与 性能?
至少在大佬眼中, 你这代码 肯定要重构

支持(0) 反对(0) A股天才交易猿 | 园豆:1542 (小虾三级) | 2020-04-15 10:57

@Cgrain: 有理!

支持(0) 反对(0) 😀明笔记 | 园豆:13 (初学一级) | 2020-04-15 10:59

@😀明笔记: thx!

支持(0) 反对(0) A股天才交易猿 | 园豆:1542 (小虾三级) | 2020-04-15 11:11
0

建议直接使用orm dapper freesql等 都比原始的好 重用性更好

初夏的阳光丶 | 园豆:641 (小虾三级) | 2020-04-13 17:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册