1
iwinux 2011-08-04 21:55:14 +08:00
假如只用两张表的话,一个比较山寨的方法是以字符串的方式存储多个 category id,然后自己负责解析……
三张表就简单了,是 Has And Belongs To Many,或者叫 Many To Many 关系 第三张表有两个字段就可以了:category_id 和 article_id |
2
Insomnia OP 只存一张表的话,用字符串村了,那单独查看这个分类的新闻时,如何解析呢?
三张表的话,那就先根据分类id,从第三张关系表中查出来对应的新闻id,再根据新闻id去新闻表查出来,但是如何新闻表中出来的时候,还要根据某个时候显示的字段来判断是否显示的话,那么这样分页的时候不好控制吧?难道在第三表冗余下,把这个新闻的是否显示等属性冗余过来下? |
3
manhere 2011-08-04 23:23:19 +08:00
article表:article_id article_content ...
cata表:cata_id cata_name ... relation表: cata_id article_id ... 一直这样用,感觉很灵活 |
4
sun019 2011-08-05 14:13:40 +08:00
一个新闻只属于一个分类的话就是一对多,用两个表就可以了吧
|
6
napoleonu 2011-08-05 15:07:23 +08:00
如果用Join的话,你在2楼的问题都不是问题,Join的过程就是按照一定的规则把多张表合并成一张表,既然成了一张表你要按照什么排序筛选都没问题。数据量大的时候Join也很难受。
我再说两个我想到的,可用不可用自己判断哈 1.你可以评估或这限定一下比如一个新闻同时最多只能属于4个分类,那就加四列分类信息字段。但是如果根据分类查新闻的时候可能索引的利用效率不是很好 cat1=1 or cat2=1 or cat3=1 or cat4=1 这样。 2.如果一篇文章属于多个分类的情况不多可以选择对一篇文章的内容插入多行数据,除了分类信息不一样。这样根据分类查询文章就很简单了,但是如果要对文章进行更新可能就多消耗点资源了,空间也有所浪费。 虽然上面两个方法有违一般的设计思想,但是根据场景的不同也不是绝对不可用,我觉得 :) |
7
icyflash 2011-08-05 16:15:35 +08:00
可参考wp的设计, 达到你的要求用了四张表,但是扩展方便。特别是对做新闻类的
http://codex.wordpress.org/zh-cn:%E6%95%B0%E6%8D%AE%E5%BA%93%E6%8F%8F%E8%BF%B0 1.wp_posts 2.wp_terms 3.wp_term_relationships 4.wp_term_taxonomy 关于一、二、三张表的设计请看这篇文章 http://www.pui.ch/phred/archives/2005/04/tags-database-schemas.html |