数据库模式 - 无法以适合程序的方式链接表

时间:2017-08-09 18:07:08

标签: python database-design sqlite

我创建了一个python脚本来抓取关键字的文档。它在服务器上运行,而cronjob确保每天多次执行搜索(在不同的时间使用不同的关键字)。

为了存储结果,我创建了下表:

TABLE: 'SEARCHES:'
    search_date(string)
    number_of_results(integer)
    keywords_used(string)     

     ^-- I created a single string from all keywords

所有这些都很容易在Python / SQLite中实现。但是,现在我想跟踪每个个人关键字的结果数量。

我已经创建了一个'关键字'表,

TABLE: 'KEYWORDS:'
    word(string)
    total_hits(integer)
    last_used(string)     

但是,我无法想出一种以允许我将关键字链接到搜索的方式链接两个数据库的方法。据推测,搜索' table将有一个foreignkey链接到关键字。但每次搜索可以有多达10个关键字,但只有一个外键列。

我查看了ManyToMany关系,但据我了解,这将创建包含' search_id'的大量行。和' keyword_id'。然而,我所需要的只是每次搜索1行。

程序完成后,我想创建一个GUI前端,并能够列出已在列表/表中执行的所有搜索。不仅显示已使用的关键字,还显示搜索日期等信息。每次搜索1行。

我还想为各个关键字创建单独的概述,以显示其有效性。

我只是无法提出数据库模式来适应这种情况,并且可以使用一些帮助来使我的方向正确。

1 个答案:

答案 0 :(得分:1)

我建议在“匹配”表创建,这是“搜索”的孩子。将“搜索ID”字段添加到“搜索”表以支持外键。 “匹配”表格将包含搜索ID,每个关键字,以及该关键字的总点击次数。

然后您可以将“匹配”与“关键字”匹配,然后使用搜索ID从“匹配”转到“搜索”。