说明:项目需要都同一个post做多重分类,如:
- 中国/北京/朝阳/望京
- 学校/大学/北京大学/文学院
- ........
项目会对同一个页面做很多多层分类(或者说一个post发布在多个分类下)如何设计数据库,以下的设计查询的时候太慢,有咩有变通的方法
--元分类表
create table tag (
tagid mediumint(8) unsigned not null auto_increment,
tag varchar(12) not null default '',
parentid mediumint(8) unsigned not null default '0',
primary key (tagid),
key (parentid),
key (tag)
) engine=myisam;
--分类与post关系表
create table post_tag (
id int(10) unsigned not null auto_increment,
tagid mediumint(8) unsigned not null default '0',
postid int(10) unsigned not null default '0',
tagline varchar(100) not null default '',
primary key (id),
key (tagid),
key (postid)
) engine=myisam;
查询 朝阳的大学 ?
又是这种问题……咱能不用关系型数据库存层次型数据行不?
你如果实在想用RDBMS,就做一张tag->entity的一对多表,然后在tag上加索引,数据冗余和一致性问题自己想办法解决。
饶了MySQL吧…………
sf上有篇文章是介绍的左右值分类的,可以给你一些灵感!