假设我有一些关系数据:
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个打开的游标。我的问题是,是否有一些聪明的技巧可以更有效地实现这一点?