【发布时间】:2013-04-02 21:16:22
【问题描述】:
我正在开发一个网络应用程序,用户可以在其中创建以下资源/内容:
Events | Music | Posts | Classifieds
它们有很多共同的领域,例如:
created_date | title | desc | user_id
现在我想知道是否应该为每个内容创建单独的表,或者将它们全部保存在一个表中,并使用指向 content_type 表的 type_id 外键。当然,会有一些不同的字段,它们只会被特定的内容类型使用,对于那些不使用这些字段的人,我可以将其留空。
数据看起来更有条理,每种内容类型都有单独的表格,但在所有表格中搜索关键字正在成为一场噩梦(使用连接、联合等)。如果只是一个表,搜索会很容易。
我需要用户能够使用关键字搜索所有内容。他还可以搜索特定内容,为此我将在type_id 字段上添加WHERE 子句。
我不了解每种方法的所有优点/缺点,但如果有人能给我建议,我将不胜感激,这样我就不会做出错误的决定,并且必须从头开始重做所有事情。
【问题讨论】:
-
一切都取决于您将如何使用数据。
-
@nathanhayfield 我只是无法组合来自不同表格的搜索结果。如果我只是对搜索结果进行简单的数组合并,那么最终结果将不会处于正确的排名中。它们将根据应用程序首先搜索内容的顺序进行排序。我需要所有内容中最相关的结果。
-
在我看来,它们应该在一个具有相关 content_type 表的表中,但如果不知道完整架构,就很难确定。
-
应用程序越强大,它就越复杂。如果您不确定如何管理复杂性,那么就使用更简单的模式。一旦你觉得你掌握了窍门,你就可以准备好迎接一个更复杂的系统了。无论如何,如果没有对架构的精确描述,我们将无法帮助您解决复杂的查询。
标签: php mysql sql database database-design