Facebook的数据库设计"喜欢"

use*_*637 4 database database-design facebook

数据库设计的新手,我想知道如何有效地设计像Facebook一样的东西,考虑到未来的可扩展性.

假设你有3个表:用户,照片和专辑.假设用户可以喜欢照片或相册.

我应该为两种类型的喜欢使用1张桌子吗? 这可能意味着它会有一个user_id,like_type(0-photo,1-album等),like_value(无论是什么内容的id值,无论是photo_id还是album_id)?

或者每个喜欢有2个不同的表格(例如photos_likes和albums_likes)?它只包含user_id和photo/album_id

我想确保数据库设计是干净和半规模的,无论我们将来添加更多的对象(视频,评论,注释等)还是有很多喜欢.

谢谢!

she*_*nku 5

您可以尝试继承的表方法,请参阅实现表继承以获得更深入的详细信息.

但基本上它就像代码中的继承一样,你有一个基表'Like',然后是'继承'它的表'CommentLike','PhotoLike'等.

有关快速模型,请参见附图.

表设计示例