我的博客上有一个评论表。
comment
- id (PK)
- post_id (FK)
- user_id (FK)
- comment
我应该分成三张桌子这样做吗?
comment
- id (PK)
- comment
user_comment
- comment_id (PK, FK)
- user_id (PK, FK)
post_comment
- post_id (PK, FK)
- comment_id (PK, FK)
这是一个更好的设计吗?欢迎任何其他建议。
您的原始设计非常完美;它模拟实际发生的事情。
此外,避免模式膨胀也是很好的。
我认为第一个设计要好得多;据我所知,拆分该表不会增加任何值,只会强制DB引擎为每个查询使用一到两个额外的联接。
如果你关心性能,你可以在评论表上创建索引,以便有效地选择每个用户和每个帖子的评论。
create table photo_comments(
commentID int not null AUTO_INCREMENT PRIMARY KEY,
userID int not null,
photoId int not null,
comment_data varchar(200)
)
你不能用这个吗?