SnowDream 2010-03-25 16:39
浏览 185
已采纳

问个数据库设计问题

有2张表
order(
int sendCom_id,
int aidCom_id,
.......(大约15个字段)
)
company(
int id,
nvarchar name,
.............(大约10字段)
)

查看order的时候要显示sendcom和aidcom的名字,
有3个方案:
1,在order表中再加2个公司name的字段
2,每次查看时级联查询
3,order表只要2个公司的name,不加公司id,在company表中做索引

不知道这3种方案哪个性价比最高,选用哪个比较好?
希望有经验的朋友能解答下。。谢谢

  • 写回答

1条回答 默认 最新

  • iteye_13500 2010-03-25 16:46
    关注

    [quote]2,每次查看时级联查询 [/quote]

    这个好吧,另外两种方案在公司名字需要更新或修改时代价比较大。

    可以考虑这样:

    1 如果公司名不经常改而且数量不是非常多的话,你可以在系统加载的时候就把所有公司id和对应的名字加载到内存里,具体方法比如可以加载成hibernate的二级缓存,或是读到memcache里,等等

    2 如果有业务问题的话,比如说: 你这个订单下单时对应的公司名是A,公司后来名字改成B,但是你们的业务要求你们在打印或显示订单时仍然要显示A,这时就要采用方案1了,这时加的name,就不是冗余字段了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?