0

我目前有一个非常简单的 MySQL 数据库(articlesDB),其中包含 1 个表(文章)和 6 行,因此设置如下:

 -------------------------------------------------------------------------------------
id (int) | articletitle | articleorganization | articledate | articleurl |  articletags
 -------------------------------------------------------------------------------------

数据库的目的是存储有关文章的信息以及存储已应用于这些文章的“标签”,以便可以通过表单通过任何查询组合搜索文章。

id 自动递增,但文章标题、组织、日期、url 和标签都是从使用 PHP 构建的条目表单中输入的。问题是需要有一种方法来强制将正确的标签拼写应用于文章,所以我认为复选框将是可行的方法。这样,只能应用正确(且一致)拼写的标签。

然而,我发现为了以这种方式实现复选框,我实际上需要数据库中的多个表;一个用于文章数据,一个用于标签,一个用于将标签与文章数据交叉引用:

// 文章信息

 ----------------------------------------------------------------------
id | articletitle | articleorganization | articledate | articleurl
 ----------------------------------------------------------------------

//标签信息

 --------------
id  | articletag
 --------------

// 文章和标签参考

 -------------------------------
id  |  articleid  |  articletagid
 -------------------------------

不过,在此之后,我不确定如何为 MySQL 查询构建逻辑。

我认为我需要将数据插入到 3 个单独的表中,但我不知道究竟需要去哪里。

非常感谢任何有关在哪里查看的帮助或线索。

4

2 回答 2

1

最简单的方法是让用户键入标签并发布表单。在表单处理文件中有一个 SELECT 查询搜索标签表中的所有标签。如果它们不匹配,则显示错误消息,否则在文章表中创建新条目,最后添加您需要的许多 TagOnArticle(或任何您称之为的)条目。

以下是我将如何模拟这种情况:

数据库关系

现在,如果您想检索所有有效标签,只需使用:

SELECT tag_name FROM Tag

并将结果与​​用户输入的内容进行比较。

于 2012-06-18T20:17:25.593 回答
0

看起来你想建立一个字典数据库。我无能为力。但是,您提到了逻辑...我假设您指的是提取最接近的匹配项?

不幸的是,最适合这项工作的是“模糊逻辑”(人工智能),这很乏味(在我看来)。下一个最好的事情是Levenstein函数。

于 2012-06-18T20:22:31.977 回答