通过Web服务中的外键关系进行分页

时间:2016-04-07 21:36:10

标签: sql database oracle pagination

假设我有一些关系数据:

CREATE TABLE company (
  id   INTEGER PRIMARY KEY,
  name VARCHAR(200),
);

CREATE TABLE employee (
  id   INTEGER PRIMARY KEY,
  company_id INTEGER REFERENCES company (id),
  first_name VARCHAR(200),
  last_name VARCHAR(200)
);

我想实现一个从我的数据库公开这些数据的Web服务。在这个服务中,我希望能够返回一个用子对象列表注释的父对象列表。在请求中,用户将能够在父对象和子对象上指定条件。

我希望能够控制对象分页(我计划使用游标来保证数据的完整性)。例如,响应最多包含100个父对象,每个父对象最多可注释100个子对象,并且会有另一个端点请求更多记录。

因此,请求可能类似于"让我所有公司的名称类似于' A%',注明带有first_name的员工,例如' J%'。

相应的回应是:

{ 'company': {
    'result': [
      { 'id': 1, 'name': 'Acme',
        'employee': {
           'result': [ {'id': 1, 'first_name': 'Joe', 'last_name': 'Blow'},
                       {'id': 2, 'first_name': 'John', 'last_name': 'Dow'},
                        ... ],
           'cursor': 'adfsfefwwaedvvdwefae'
      },
      ... ],
    'cursor': 'asfddsfwawewwefaewsd'
  }
}

明显的实现是对父对象执行查询,然后对子对象执行100次查询,并返回101个打开的游标。我的问题是,是否有一些聪明的技巧可以更有效地实现这一点?

0 个答案:

没有答案