所有资源的一个MySQL表VS每个资源的多个表

时间:2013-04-02 21:16:23

标签: php mysql sql database database-design

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

Events | Music | Posts | Classifieds

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

created_date | title | desc | user_id

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

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

我需要用户能够使用关键字搜索所有内容。他也可以搜索特定内容,因为我会在WHERE字段上执行type_id条款。

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

2 个答案:

答案 0 :(得分:0)

除非他们确实拥有相同的数据,否则我会使用单独的表格。有一个表只有特定内容类型使用的某些字段,实际上并不是很好的数据库设计。

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

答案 1 :(得分:0)

也许可以想到使用“有一个”的关系。例如,一个事件“附有”“web项目句柄”,“web项目句柄”是一个描述,创建日期,标题,“所有者”等...