【发布时间】:2012-11-27 12:53:00
【问题描述】:
我正在为以下内容设计数据库和 Java 应用程序:
1.允许用户通过API查询数据库。
2. 允许用户保存查询并通过'query-id'识别查询。然后,用户可以在下次调用 API 时传入“query-id”,这将执行与 id 关联的查询,但它只会检索上次请求特定查询的数据。
- 除此之外,我还需要保存每个 UserID 的查询 ID 信息。
关于数据库的信息
选择的数据库是 PostgreSQL,用户请求的信息将存储在各种表中。
我的问题:关于如何实施要求的任何建议/建议/提示
2号?
是否有现有的设计模式、sql 查询、内置的 db 函数来说明如何保存查询并从最后返回的结果中从多个表中获取信息。
注意:
到目前为止,我最初的想法是将每个表中读取的最后一行(所有表中的每一行都有一个主键)存储到一个数据结构中,然后为每个保存的查询保存这个数据结构,并在再次检索数据时使用它。
为了存储用户和查询 ID 信息,我正在考虑创建一个单独的表来存储 UserName、UserUUID、SavedQuery、LastInfoRetrieved。
谢谢。
【问题讨论】:
-
#2 的一个非常简单的解决方案是使用查询和查询 ID 将最后一个结果保存在表中,当您看到查询 ID 返回以前的结果时,然后用新的结果覆盖它们查询
-
@HunterMcMillen 当 api 调用中存在查询 ID 时,这意味着用户想要执行他们保存的查询并返回上次停止的数据。保存最后的查询结果并返回不是我想要做的。我希望我能澄清这一点。
-
您的查询可以变得多复杂?您的大纲表明每个结果集最多只包含一条记录,对吗?如果是,则构建一组 3 个表(简化表示法)
user(uuid pk, name, sqid fk)、savedquery ( sqid pk, querydesc )和result ( uuid fk, valid, pk_table1 fk nullable, pk_table2 fk nullable, ...)。这假设用户只能检索他们最新的查询结果。valid适用于从数据库中删除已作为已保存查询结果的一部分的数据的情况。需要删除代码来更新受影响的pk_table字段。
标签: java database postgresql database-design