我需要更改在数据库中存储信息的方式。因为查询在我开发的旧模型上运行缓慢。
一般问题如下。
1)我有课程列表,每个课程都有描述课程常规内容的标签列表。例如,名为“数据库管理系统”的课程可以具有以下标记{sql,index,key,relation}。
2)我的教授也带有标签,这些标签通常描述他们在课程中教的内容。例如,巴顿{sql,php,apache,mysql}
我需要找到数据库中与所选课程最匹配的所有教授。我还需要根据它们的匹配权重对它们进行排序。

问题是如何在数据库中存储此信息以及如何处理此存储的信息以解决此问题。
 在收到有关我的SQL查询here的许多负面评论之后,出现了这个问题。

最佳答案

好吧,我将从以下5个表开始:

Course (CourseID, CourseName, ...)
Professor (ProfID, ProfName, ...)
Tag (TagID, TagName)
CourseTag (CourseID, TagID)
ProfTag (ProfID, TagID)


并查询类似

SELECT ProfName, Count(PT.TagID) AS Weighting
FROM Professor P
INNER JOIN ProfTag PT ON P.ProfID = PT.ProfID
INNER JOIN CourseTag CT ON PT.TagID = CT.TagID
WHERE CT.CourseID = @SelectedCourse
GROUP BY ProfName


这是MS SQL Server语法...不知道您在使用什么(但是使用php,可能不是:))

10-08 17:17