1

我正在开发一个 Web 应用程序,用户可以在其中创建以下资源/内容:

Events | Music | Posts | Classifieds

它们有很多共同的领域,例如:

created_date | title | desc | user_id

现在我想知道是否应该为每个内容创建单独的表,或者将它们全部保存在一个表中,使用type_id指向content_type表的外键。当然,会有一些不同的字段,它们只会被特定的内容类型使用,对于那些不使用这些字段的人,我可以将其留空。

数据看起来更有条理,每种内容类型都有单独的表格,但在所有表格中搜索关键字正在成为一场噩梦(使用连接、联合等)。如果它只是一个表,搜索将非常容易。

我需要用户能够使用关键字搜索所有内容。他还可以搜索特定的内容,为此我将在该字段上做一个WHERE子句。type_id

我不知道每种方法的所有优点/缺点,但如果人们能给我建议,我将不胜感激,这样我就不会做出错误的决定,并且必须从头开始重做所有事情。

4

2 回答 2

1

也许考虑使用“有”关系。例如,一个事件“有一个”“web 项目句柄”附加到它,而“web 项目句柄”是一个带有描述、创建日期、标题、“所有者”等的事物......

于 2013-04-02T22:02:15.213 回答
0

除非他们真的有相同的数据,否则我会使用单独的表格。拥有一张表,其中的某些字段仅由特定内容类型使用,这确实不是很好的数据库设计。

如果您真的想要一个包含基本数据的表,您可以按照您的建议创建一个包含 content_type 和公共字段的表,然后为每种类型创建 4 个单独的表以及其他不同的字段,然后在您执行内部联接时选择该类型的字段。但就我个人而言,我认为你最好只创建 4 个表。

于 2013-04-02T21:42:06.613 回答