【发布时间】:2009-04-03 06:45:04
【问题描述】:
将一对多关系从数据库服务器传递到客户端的最佳(更简洁、资源成本更低)的方法是什么?
假设我有一个 Author 表和一个 Book 表。我想检索名字以“a”开头的所有作者以及他们写过的所有书。然后,在客户端,生成一个对象数组“Author”,其“Books”字段是一个对象数组“Books”。
我想到的两个穷人解决方案是:
- 检索所有作者,在客户端循环浏览他们并执行附加查询以获取所有书籍
- "SELECT a.* FROM author a, book b WHERE a.name like 'A%' and b.author_id = a.id"
第一个解决方案确实是数据库端密集型的(如果我有 1000 个作者,我必须执行 1001 个查询)。
第二个需要在客户端进行一些密集的工作,因为程序会解析结果,因为它在每一行上重复了作者共有的数据。
另一种解决方案是从存储过程返回多个记录集。我从来没有处理过多个记录集,我不确定所有的语言/适配器类都支持它们。
当然,如果任何作者都有书籍和散文,并且每本书都可以有样页等等,情况会变得更糟。
有什么想法吗? 谢谢
编辑: 我正在使用 .net,所以 ado 的数据关系是一种选择。他们支持我的 oracle 和 mysql 吗?
【问题讨论】: