如何为多个帖子类型(如Tumblr)构建我的博客引擎的数据库?

时间:2011-07-21 21:09:52

标签: database-design database-schema

我正在构建一个具有多种帖子类型的博客引擎,例如:文本,图片,链接,引用。

我看到它的方式,我有两个选择:

选项1:包含所有列的单个帖子表,其中一些不可避免地为NULL

Post table
==========
* post_id
* created_at
* updated_at
* user_id
* post_type
* text
* image_url
* link_url
* quote_source

选项2:每种帖子类型的单独表格

Post table
==========
* post_id
* created_at
* updated_at
* user_id
* post_type

Text table
==========
* post_id
* text

Image table
===========
* post_id
* image_url

我想你得到了暗示。每种方法的优缺点是什么?

有谁知道Tumblr的作用? (从他们的API文档中不清楚。)

1 个答案:

答案 0 :(得分:3)

避免对类似实体使用多个表(在本例中为“Posts”)。我不知道Tumblr本身是如何做到的,但它很可能与你的第一篇文章更相似,每行中有一些字段为NULL,而它们的可执行代码会评估post_type值以确定如何处理它。

当您从多个表中提取数据以处理“一个”请求时,多个表很快就会变成一场噩梦。例如,如果你想在上周选择所有类型的所有帖子,你必须从每个表中选择SELECT并合并结果(在某种SQL临时表中,或者在脚本中以编程方式/可执行代码)。这只是一个简单的事情。想象一下搜索等等。

同样,我不知道Tumblr是如何做到的,也不是他们的“正确”方式 - 但有效的方式是一张桌子。