日期:2014-05-17  浏览次数:20492 次

一个表设计的问题
打个比方

有三张主表 新闻表 、项目表 、 房屋表

而他们都有相应的评论  
表结构为 (id , 评论时间 ,评论内容 ,主表id(新闻表id 或者 项目表id 或者 房屋表id) 也就是所有的评论的结构是一个样子的 ,除了参照的主表id不一样 。

这样的情况下是把所有的评论放在同一张表中,还是分别为各个主表建一张评论表 (如 新闻表建新闻评论表,项目表建项目评论表...)

不知道应该怎么做,请各位大侠指教

(如果所有评论放一张表,那么程序设计就比较方便了,但就不能让评论表参照主表了)

------解决方案--------------------
如果可以,把新闻表 、项目表 、 房屋表放到一张表,增加一个类型
这个表的id是主键
------解决方案--------------------
分开好处理查询一点,而且也没有什么不妥。如果放在一起,查询的时候得判断主表id,这样的话需要动态SQL,可能从效率上会比前者差点。建议分开使用
------解决方案--------------------
探讨

引用:

如果可以,把新闻表 、项目表 、 房屋表放到一张表,增加一个类型
这个表的id是主键

大侠,这肯定不行的啊。 这三张表都是完全不一样的啊

不知道有没有别的办法

------解决方案--------------------
可以把评论放到一个表,然后加一个类型来区分是什么评论。但是那个评论表的主键就应该是主表主键加类型的组合主键。这个我以前用的很多,没问题的。然后也建议到了一定数据量,可以考虑按照那个类型来做分区(不是拆成实体表的那种分区,2008有分区功能)。这样效率就不会明显降低。同时注意索引的维护。这种表不建议使用外键,因为级联操作的时候可能会比较痛苦。编码时注意就好了
------解决方案--------------------
我觉得还是将评论放到一个表好些,楼上的讲到有道理,我有时候就是这样处理的
------解决方案--------------------
觉得5楼的方案不错,楼主可考虑实践一下。