免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2232 | 回复: 3
打印 上一主题 下一主题

请教:小型数据库在应用系统中的设计方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-17 23:00 |只看该作者 |倒序浏览
开发一个软件,要用到小型数据库(类似access,不需要安装,也是软件对数据库的要求。一个文件就是一个数据库。),有两种设计方案,确定不了那种比较好。

第一种方案:所有的数据表放在一个数据文件中。
优点:
  1、在表之间存在外码关联的情况下很好操作。
  2、只需要打开一个数据库文件。

缺点:
  1、如果在一个表中有100w条数据,但是程序在某一段时间内只会用的其中的3k条数据(这个特点是有软件本身的逻辑决定的,用3k条数据的时候肯定不会用到这个表中的其他数据。),这样在100w条数据中操作3k条数据效率会有影响(因为这个是小型数据库)
  
第二种方案:把不同的数据放在不同的数据文件中
优点:
  1、每个数据文件存储一次操作的数据,克服的方案一的缺点。
  2、和实际情况更加贴切。
缺点:
  1、程序需要同时打开多个数据库,因为不同的数据放在不同的数据文件中。
  2、若在不同的数据文件的表中存在外码的情况,没有存储在一个数据库中使用方便。

举例说明:

假设:做一个考试系统(单机版),在这个系统中要存储600本书的试题,每一本书分若干个单元,当学完一个单元就会进行测试。


情况一(对应方案一):
  
   把所有的试题存储在一个表中,但每次考试只会用到一个单元的试题,肯定不会考到其他单元的试题。
   
  优点:在表之间存在外码关联的情况下很好操作。因为都在一个数据库中。
  缺点:若表中有100w道试题,每次只用的300道(因为是只考查一个单元的学习情况),效率得考虑。
情况二(对应方案二):
  
   把每一本书放入一个单独的数据库文件中。
   
   优点:1、不会出现方案一的缺点,每次操作的数据量很少。
         2、每一本书存储一个数据文件,更加符合实际。如果出现添加书籍,删除书籍等操作非常方便,不需要改动其他数据库。
   缺点:
    每本书一个数据文件,如果要进行考试,就要打开相应的数据库文件。有可能同时会打开多个数据库文件,例如:系统数据库,试题数据库,等等。
    在不同的数据库中存在外码,不方便(不过可以通过数据库设计来回避该问题)。

问题:
1、那种方案更好?
2、现在一般的做法是怎么做的?
3、有没有比上述更好的方案?

谢谢!!!

论坛徽章:
0
2 [报告]
发表于 2008-06-18 15:40 |只看该作者

回复 #1 upcorange 的帖子

自己定

论坛徽章:
0
3 [报告]
发表于 2008-06-19 09:48 |只看该作者
The first one is enough, just adding appropriate index can solve your issue.

论坛徽章:
0
4 [报告]
发表于 2008-06-19 23:20 |只看该作者

回复 #3 yueliangdao0608 的帖子

Thanks
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP