多数据库中怎么取得关联数据?

已答复 多数据库中怎么取得关联数据?

  • 2009年7月11日 8:58
     
     
    大家好,我想请问各位一个问题。我现在想做类似http://club.360buy.com/person/smallrain0122-1-1.html这样的一个页面。
    我把产品放在一个product库中,部署到一个服务器上。把评论信息放到一个comment库中,部署到另外一个服务器上。还有一个Member库用于存放会员信息。这三个库我都使用Ado.net Data Service调用。现在我想做类似上面的页面的时候就不知该怎么下手了。因为不是只有一个comment这么简单,而是一个页面上有多个comment,每个comment又关联到一个可能不同的产品信息,这两个表又不在一个库中,请各位前辈指点一下思路,主要是我取到了comment列表以后怎么根据comment表中存放的产品ID取到异数据库中的产品详细信息。我现在想到的是可以先遍历一个comment库,然后根据comment表中的产品ID循环取到产品详细信息放数组里,呈现的时候用循环。有没有更简便的设计方法或者实现方法呢?
    culmer

全部回复

  • 2009年7月11日 9:26
    版主
     
     
    你好,我不太明白,你为什么要这么做,但感觉这里可能存在一个主次关系,先有产品,然后再有产品的的评论,我觉得通过产品 ID 去找评论更合理一些。产品和评论完全可以放到一个数据中
    知识改变命运,奋斗成就人生!
  • 2009年7月11日 9:28
     
     
    hi 搂主您好,
    1、建议将product、comment和Member设计到一个库中的3个表,不用分数据库增加开发和部署的复杂性。因为从需求上看这3项本就关系紧密,如果您是为将来性能考虑,也建议将这3项放在另一个数据库服务器上做同步。(道理同分布式设计原理)
    2、退一步讲,一定要求这么做,sql语句本就支持跨服务器跨库访问(具体请参考sql帮助)。
  • 2009年7月11日 12:33
    版主
     
     已答复
    呵呵,
     你的设计我也感觉很奇怪啊。这个必须这么做吗?具体对你的项目部清楚。
    企业级数据库也不一定非要这样设计吧。一个实体放一个数据库,而且每个数据库还单独放一个服务器,资源的严重浪费啊。
    1.你可以把几个表放一个数据库,或者非要放几个数据库的话,尽量部署到一个服务器。
    2.如果你是基于性能的考虑,完全可以再表设计,存储过程等方面下功夫。
    3.如果是安全的话,你可以考虑磁盘阵列,实时数据备份等策略。
       你目前的设计方案,如果不是刀架到脖子上肥这样设计,你完全可以推倒。在一个数据的话,表之间数据连接操作会简单很多
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    • 已标记为答案 culmer 2009年7月12日 5:46
    •  
  • 2009年7月11日 14:13
    版主
     
     已答复
    最好是将这些表放在一个数据库中~如果不能放在一起我觉得只能先将comment中用到的产品id放内存中~然后一起从产品信息表中获取出来~再进行显示或放在对应的类实例中~如果产品信息不多的话可以将重要的信息缓存一下~减少读数据库开销~
    宠辱不惊,看庭前花开花落。去留无意,望天上云卷云舒。
    • 已标记为答案 culmer 2009年7月12日 5:46
    •  
  • 2009年7月12日 5:37
     
     
    谢谢各位的回复了。我们这个项目就是要做一个类似京东的商城,我要做的那个页面就是显示一个人一共发布了多少条评论。多个数据库已经是固定的设计了,不过部署倒是可以在一个服务器上。用的时候,商品信息因为基本固定肯定是要放在缓存里的,评论因为要实时所以不放缓存。现在看来要呈现这个页面只能是像我一开始说的那样循环一下取数据了。再次谢谢大家的指点。
    culmer