【发布时间】:2011-11-26 06:20:30
【问题描述】:
我正在尝试为我当前的项目设计一个数据模型,但遇到了麻烦。产品所有者想要拥有用户、搜索、文档和标签。到目前为止,这似乎是众所周知的:
- 用户有搜索 -(这些不是数据库搜索,它们是返回一堆文档的全文搜索)
- 搜索有文档
- 用户拥有文档 - 他们之前通过任何搜索看到的任何文档
- 标签是文本字符串
- 用户可以使用任意数量的标签标记文档,但其他用户将无法看到他们的标签
我想在这里解决两个问题:
- 每当用户进行搜索时,我都需要根据以前是否见过返回的文档来不同地标记它们。 如何? 只从搜索中收集文档(一次将返回 10 个)然后对属于用户的所有文档发出 另一个 SQL 查询是否合理哪个具有搜索中的 doc_id 之一?看起来很笨拙。
- 既然一个用户可以给一个文档几个标签,而其他用户看不到它们,我如何在数据库中表示它?如何合理查询?我认为属于用户的文档由连接表 - UserDocuments 表示。然后有几个Tags属于UserDocuments。 但是我如何在搜索结果中显示标签?在我看来,这涉及到我发出搜索,找到我以前看过的文档,然后找到其中哪些有标记,然后为这些文档中的每一个再次访问数据库并收集它们的标记。这看起来很极端,不是吗?
在这里可能会混淆我的理解的一件事是,我正在考虑使用 Ruby on Rails ActiveRecord ORM。我最终将不得不实施我在 Rails 中找到的任何解决方案。
【问题讨论】:
标签: ruby-on-rails database-design activerecord