【发布时间】:2019-12-05 19:40:42
【问题描述】:
一个例子,我有 4 个表:
- 用户
- 照片
- 视频
- 音频
我想创建一个像 Facebook 一样的响应功能。哪个更好:
-
创建 1 个包含列的表:
id (int)
user_id(int)target_id(int)
target_type(enum:video,photo,audio)
-
创建 1 个包含列的表:
id (int)
user_id (int)
video_id (int)
photo_id (int)
audio_id (int) 为每种类型创建 3 个表
表名:user_video_likes(列:user_id,video_id)
表名:user_photo_likes(列:user_id,photo_id)
表名:user_audio_likes(列:user_id,audio_id)
通常,我使用选项 3,但在我加入一些具有不同设计的项目(如选项 1 和 2)后让我感到困惑。
- 我应该使用哪一个具有更好的性能和查询处理能力?
- 我认为选项 3 更好,但为什么我发现一些项目(具有比我更高的高级地位/经验丰富的员工)具有选项 1 和 2 的设计?
- 创建更多表是否昂贵?
【问题讨论】:
-
选项 1 也不错,但选项 2 设计不佳。只是更容易查询。
标签: mysql database performance database-design