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

发布于 2022-09-11 22:51:50 字数 1263 浏览 22 评论 0

社区表,社区结构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')

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文