关于上下级结构数据库表设计

社区表,社区结构3级 root->parent->child

CREATE TABLE `community` (
  `id` varchar(10) NOT NULL,
  `name` varchar(1000) NOT NULL DEFAULT '' COMMENT '社区名',
  `parent_id` varchar(100) NOT NULL DEFAULT 'root' COMMENT '父节点Id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='社区表';

子社区可以更改父社区,比如原来的一个3级社区换了父社区

管理员可以管理不同的社区,比如超级管 可以管理全部社区,二级管理员可以管他下属的3级社区

CREATE TABLE `admin` (
  `id` varchar(100) NOT NULL,
  `password` varchar(50) NOT NULL DEFAULT '' COMMENT '密码',
  `username` varchar(255) NOT NULL DEFAULT '' COMMENT '用户名',
  `community_id` varchar(100) DEFAULT NULL COMMENT '社区Id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='管理员表';

活动表,活动关联到社区

CREATE TABLE `activity` (
  `id` varchar(100) NOT NULL,
  `tag` varchar(255) DEFAULT '' COMMENT '标签',
  `title` varchar(255) DEFAULT '' COMMENT '活动标题',
  `community_id` varchar(100) NOT NULL DEFAULT '' COMMENT '社区id',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='活动表';

管理员查询活动,2级管理员可以查询它全部管理到社区活动信息,

我想到的方案是使用in

select * from activity where communitu_id in('1','2')

想请问各位大佬,如果社区很多的话,这中方式效率很低吧,有其它方案吗,比如数据库表结构设计

阅读 3.8k
推荐问题
宣传栏