2012-09-08 115 views
2

我在我的博客上有评论表。博客评论的数据库模式

comment 
- id (PK) 
- post_id (FK) 
- user_id (FK) 
- comment 

我应该分成3个表格吗?

comment 
- id (PK) 
- comment 

user_comment 
- comment_id (PK, FK) 
- user_id (PK, FK) 

post_comment 
- post_id (PK, FK) 
- comment_id (PK, FK) 

这是一个更好的设计?欢迎任何其他建议。

+0

如果试图展示整棵树,如果它很大,你将会遇到性能问题。你应该研究嵌套集或递归查询技术。希望你不使用mysql,这样你就可以使用递归查询。 –

回答

4

您的原创设计是完美的;它模拟实际发生的事情。

另外,最好避免模式膨胀。

2

我觉得第一个设计要好得多;据我所知,将该表分裂并不会增加任何值,并且只会强制数据库引擎为每个查询使用一个或两个额外的联接。

如果您关注性能,可以在评论表中创建索引,以便高效选择每个用户和每个帖子的评论。

0
create table photo_comments(
    commentID int not null AUTO_INCREMENT PRIMARY KEY, 
    userID int not null, 
    photoId int not null, 
    comment_data varchar(200) 
) 

难道你不能使用它?

+0

Woops ...我没有意识到你几乎总是有这个。我现在正在制作评论表,这就是我做这件事的方式。 您的表格到底是如何工作的?记录太多时你是否需要更改? – James111