多重多层分类数据库设计


说明:项目需要都同一个post做多重分类,如:

  1. 中国/北京/朝阳/望京
  2. 学校/大学/北京大学/文学院
  3. ........

项目会对同一个页面做很多多层分类(或者说一个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;

查询 朝阳的大学 ?

sql mysql 数据库设计

SoLA. 10 years, 4 months ago

又是这种问题……咱能不用关系型数据库存层次型数据行不?
你如果实在想用RDBMS,就做一张tag->entity的一对多表,然后在tag上加索引,数据冗余和一致性问题自己想办法解决。

饶了MySQL吧…………

哀愁谁来写 answered 10 years, 4 months ago

Your Answer