Database design 如何为Tumblr等多种帖子类型构建博客引擎的数据库?

Database design 如何为Tumblr等多种帖子类型构建博客引擎的数据库?,database-design,database-schema,Database Design,Database Schema,我正在构建一个博客引擎,它有多种帖子类型,例如:文本、图像、链接、引用 在我看来,我有两个选择: 选项1:包含所有列的单个Posts表,其中一些列将不可避免地为空 备选案文2:每种员额类型的单独表格 我想你明白了。每种方法的优点/缺点是什么 有人知道Tumblr做什么吗?从他们的API文档中还不清楚 在这种情况下,避免对类似实体使用多个表。我不知道Tumblr本身是如何做到这一点的,但它很可能更类似于您的第一篇文章,每行中都有一些字段为NULL,它们的可执行代码计算post_类型值以确定如何处理

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

在我看来,我有两个选择:

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

备选案文2:每种员额类型的单独表格

我想你明白了。每种方法的优点/缺点是什么


有人知道Tumblr做什么吗?从他们的API文档中还不清楚

在这种情况下,避免对类似实体使用多个表。我不知道Tumblr本身是如何做到这一点的,但它很可能更类似于您的第一篇文章,每行中都有一些字段为NULL,它们的可执行代码计算post_类型值以确定如何处理它

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

再说一次,我不知道Tumblr是如何做到的,他们的方法也不正确——但有效的方法是一张桌子

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

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

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