我正在为高流量论坛设计一个插件。我正在做的是使用搜索 API 列出相关主题,每天最多搜索 800 次
我想做的是创建一个数据库来存储结果,将它们缓存一天以便使用它而不是 API。
这样的表格布局是否最佳:
Table:
+---------+-----------+------------+
| threadid | relatedids | dateentered |
+---------+-----------+------------+
| 129314 | 1124;2144 | 1234567890 |
| 124129 | 1251;1241 | 1234567890 |
| 185292 | 1151;5125 | 1234567890 |
+----------+-----------+-----------+
相关的 url 也是线程 ID,以冒号分隔。我不是 SQL 方面的专家,所以我不知道将索引设置为 threadID 是个好主意,还是什么!
最佳答案
你显然在这里有一个一对多的关系,所以你应该使用 2 个表而不是分隔符,类似于(MySQL 语法,假设还有一个名为 thread 的表):
create table search_thread (
thread_id int,
date_entered datetime,
PRIMARY KEY (thread_id)
FOREIGN KEY (thread_id) REFERENCES thread(thread_id));
create table search_results (
thread_id int,
result_id int,
PRIMARY KEY (thread_id, result_id),
FOREIGN KEY (thread_id) REFERENCES search_thread(thread_id),
FOREIGN KEY (thread_id) REFERENCES thread(thread_id).
FOREIGN KEY (result_id) REFERENCES thread(thread_id));
此模型的好处是它可以扩展,这意味着您可以添加特定于相关线程的属性。此外,您可以执行一些您的方法无法实现的查询,例如查找有多少线程与另一个线程相关(在两个方向上)。
关于MySQL:我应该如何起草这个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3648923/