CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  其他数据库开发 >  MySQL/Postgresql

难题征求最佳解决方案

楼主binbin(破坏分子)2002-04-01 17:08:06 在 其他数据库开发 / MySQL/Postgresql 提问

我的数据库中几个人员表  
   
  一个是市人武部干部  
  一个是基层人武干部  
  一个是科技人员  
  一个是退役军人  
   
  因为是数据是分次收集,按用户的工作计划分别收集。因此,各个表之间有重复数据,字段不一样(单位,姓名,生日,文化程度,政治面貌等字段相同)即科技人员有可能是基层干部,也同时可能是退役军人,或者是市人武干部,退役军人可能是科技人员,而且可能在基层做干部,也可能不做干部。从集合的角度来看,找不到能不重复又能构成人员全集的组合。  
  表与表完全是交叉重复,不是包含。  
  现在要查询数据库中不同文化程度/政治面貌...有多少人并列出数据。  
  我看只能按姓名+生日来去重。  
  但是,怎么写这个SQL语句呢?  
  还是把所有表的相同字段数据都取出来放入一个临时表,再对临时表去重?——对于大量的数据来说好象不太妙——我做的这个是网络版的,MYSQL在网络服务器上。  
   
  此外,用户要求能给出一定条件如专业,从各个单位随机抽指定的人数,所抽人数不能超过给定的比例,由于没有一个确切的人员全集,必须到这些表里去分别找,同样有重复问题,此操作必须在上一步的基础上做,如何随机抽取呢?  
   
  问题点数:100、回复次数:10Top

1 楼binbin(破坏分子)回复于 2002-04-01 17:17:39 得分 30

我感觉缺少一个Master表,一个全体人员表,将这些detail表联系起来,但用户的数据都是分散统计的,在录入时也要求分别输入,怎么办呢?Top

2 楼trainee(春泥)回复于 2002-04-01 17:55:06 得分 10

你最好统一成一张表,否则现在或以后会很麻烦,Top

3 楼zydmoon(想成为树的一棵草)回复于 2002-04-01 21:43:26 得分 10

我觉得你的这个数据库在建表时不太科学,冗余较多,而且也容易造成更新和插入删除异常,最好还是建立一个全体人员表。不知你认为如何?大家讨论讨论。Top

4 楼binbin(破坏分子)回复于 2002-04-12 23:48:13 得分 0

现在问题是没法得到全体人员表。  
  在一个地区内该系统内有多少人?不知道。  
  全体人员的资料是否全部得到了?不知道。  
  已得到的数据中包含了多少人的资料?不知道。  
  有多少人在几统计中重复计算了?不知道。  
   
  现在手中只有从几种渠道(这些渠道不可能同时开展工作)得到的资料,  
  已知有重复统计,  
  已知可能有人不在这些资料中,系统也不关心这些人(假设其不存在)。  
   
  如何解决?即使现在花大力气整理出来,将来下一次统计来的资料还是这样,计算机管理还有何意义?不如手工做算了。Top

5 楼kinlam()回复于 2002-04-13 09:21:40 得分 10

其实可不可以用一个表处理,当他们是一种类别那就更方便.Top

6 楼bombshell(水中鱼)回复于 2002-04-16 10:52:08 得分 10

你先伪造几个表,贴出来,那样分析问题更清楚。现在只看文字脑子都有点乱了。Top

7 楼Vitty(天狼)回复于 2002-04-16 11:26:11 得分 10

应该一开始就建立一个表,在提交时查询要提交的人是否存在于数据库中,如果存在,直接update相应的项,如果不存在,直接insert就可以了。Top

8 楼sandj(不了)回复于 2002-04-18 14:50:38 得分 20

看情况是够复杂的了  
  不过估计到你手里也就是这样子了,现在说什么也晚了  
  除非能够重头在来,……也不现实  
   
  那么,你现在把所有的饿记录放到一个完整的表中,  
  当然,有重复的记录,那么我们现在就是要把这些部分重复的记录给合并就好了  
  但是有一个问题,就是如果有某字段内容不是完全相同  
  (当然不是单位、名字、性别这些完全用来定位的字段了,你所列出的某些字段有变更的可能吗?比如学历、政治面貌等)  
  我们如何处理?直接覆盖还是列出人工处理?  
   
  举例子说吧:  
  合并成一个包含所有记录和字段的完整表我就不说了,想必你自己就能够完成  
  那么当我以某些条件确定出某些记录是一个人的信息后,我对于重复的字段该如何处理?  
  比如原始表1的住址是AAAA原始表2的住址是BBBB,而已经通过其他的条件得知这些记录确实是同一个人的,我要怎么处理?  
  是直接用其中一个覆盖掉吗?  
  那么就需要用最新的表的数据了  
  当然,也可以作为一个长字段直接相加也可以  
  还有一个方法就是将这些列出来你手工做,不过推测不可行  
  这样处理后的结果放到一个新表中应该就出现你所要的数据了  
  这样做可以吗?Top

9 楼Suddy(风)回复于 2002-04-18 21:09:34 得分 0

分析唯一性和多重性,了解重复机制  
  引用机制  
   
  听不懂?  
  唉Top

10 楼shuixin13(犬犬(心帆))回复于 2002-11-17 18:47:11 得分 0

发表时间:     2002-4-1   17:08:07    
  最后回复:       2002-4-18   21:09:34  
  如果楼主未回复,  
  帖分将无法返还帖主!  
   
  犬犬结帖!Top

相关问题

  • 征求方案:Delphi+SQL7(C/S、ADO)实现数据录入的最佳方案!
  • 征求实现方案!
  • 征求解决方案
  • 征求解决方案
  • 征求多系统安装最佳方案,分数不是问题不够再加
  • 仙来无事,征求最佳或经典的解决方案:Client端调用Server端的Java应用程序
  • *********** 高分征求软件方案 *************
  • ********** 高分征求软件方案 *************
  • ********** 高分征求软件方案 ************
  • 高分征求系统规划方案!!!!

关键词

  • 字段
  • 数据
  • 数据库
  • 资料
  • 科技
  • 用户
  • 表
  • 重复
  • 干部
  • 人员

得分解答快速导航

  • 帖主:binbin
  • binbin
  • trainee
  • zydmoon
  • kinlam
  • bombshell
  • Vitty
  • sandj

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo