数据库表设计问题?

问题描述

我添加一个课程,需要勾选(都是多选的)这个课程所属的年级、类别、区域
我需要怎么设计这个课程表?(因为我前端需要筛选出来它们。)

下面是我的分类表
CREATE TABLE zx_jianshen_category (
id int(11) NOT NULL AUTO_INCREMENT COMMENT '分类id',
tid int(11) NOT NULL DEFAULT '0' COMMENT '父级分类id',
name varchar(50) NOT NULL COMMENT '栏目名称',
sort int(11) NOT NULL DEFAULT '0' COMMENT '排序',
addtime int(11) NOT NULL DEFAULT '0' COMMENT '添加时间',
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=82 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

分类表的结构是

      年级  
          -》幼儿园
          -》小学
          -》初中

     类别  -》人文
               -》人文下有宗教
               -》有哲学
           -》科技
               -》科技下有科学

      区域  
           -》国内
           -》国外

(类别是 二级分类,其他年级和区域都是一级)

我不知道怎么设计课程表。才能满足筛选。是否需要中间关系表

![图片上传中...]

阅读 1.7k
1 个回答

1、年级表[grades]

id name ....

2、类别表[cates]

id name pid path paths...

注:
pid-父级id path-不包含自身id路径 0,1 paths-包含自身全路径0,1,2,path和paths用逗号分割
path 的目的方便查询筛选 MYSQL 使用 FIND_IN_SET

3、区域表[areas]

如果只存在国内和国外,要么用int取标记 比如 1-国内 2-国外 或者用 string internal-国内 external-国外

4、课程表[courses]

按照关联表设计我们可以设计成

id name cate_id grade_id area[string or int].....

希望能帮助你!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题