
1 Muninn 2017-05-10 09:27:15 +08:00 专业技术能力下边如果没有直接的题,那么可以只对应末级节点啊。 学科在程序里做成一棵树就行了。参考无限扩展的机构设计。 |
2 jianzhiyao020 2017-05-10 09:34:22 +08:00 http://www.jianshu.com/p/49026d65c26e 这个方案应该能够类推相关解决方案 |
3 ivvei 2017-05-10 09:56:42 +08:00 没看出这个模型有什么问题啊…… 就直接按照你描述的建好啦,比如 题目 ID, 题目, 学段,一级学科,二级学科 没有二级学科的,可以视为二级学科为“没有”。 单纯存储这样的结构毫无问题。具体的还得看你是怎么使用这些数据,用起来是不是方便。 |
4 abcbuzhiming OP @jianzhiyao020 @ivvei 其实你们两个的想法我都考虑过,一个就是树,一个不是树,有限级别,我现在就是在权衡我这个“分级”到底改起来到底麻烦不麻烦。比如说如果万一标准变了,某个学科不存在了,对应的题目要转移到新学科去,变动是否很大 |
5 gamexg 2017-05-10 10:19:46 +08:00 学科表 id 名称 上级学科 题目表 id 题目名称 题目所属学科 现在是 2 级学科可以用“所属 1 级学科 所属 2 级学科 ”,但是下次如果再增加个三级学科,难道要修改表结构? |
6 tabris17 2017-05-10 10:21:44 +08:00 简单的树状结构,有什么问题? 如果要能按照节点查找所有字节点,可以使用左右值结构 |
7 reus 2017-05-10 10:25:54 +08:00 学科合并成一级不就行了。 综合素质,教育能力,语文,数学,英语…… 业务模型又不用对应到数据库模型。数据库里就一级学科,业务里需要区分出一级二级时再另外处理下。 |
8 sunriseyuen 2017-05-10 10:30:20 +08:00 via Android 用标签的模型应该可以 |
9 reus 2017-05-10 10:31:09 +08:00 树不用存到数据库里,直接在代码里写,也不会经常改动的。需要用到树时,从数据库读出来再生成。 用关系数据库存树,各种方式都有优缺点,麻烦得很。你这种父子关系不经常变动的,写在代码里,要改时才改代码就行。 |
10 abcbuzhiming OP @sunriseyuen 标签的模型是什么? |
11 ivvei 2017-05-10 10:46:13 +08:00 @abcbuzhiming 标签就是 tag 那种。适合有多种分类方式并且级别不明显的,不适合你这种分类方式唯一确定且级别层次明显的。 |
12 jianzhiyao020 2017-05-10 10:48:50 +08:00 @abcbuzhiming 其实还好啦, 用户对读是敏感的, 但是写是可以异步的, 可以走个异步队列去修改相关的题目或者分类, 修改步骤很简单, 但是索引的重建在数据量大的情况下需要考虑, 我们现在场景数据是千亿级别的, 都是用 linux 目录形式做索引, 索引应该问题不是很大。 |
13 halfcoder 2017-05-10 10:54:15 +08:00 最直接的想法:按无限分类来做 |
14 sunriseyuen 2017-05-10 11:06:22 +08:00 via Android @abcbuzhiming 一个题可归为一年级,或是高中 |
15 CYKun 2017-05-10 11:37:54 +08:00 via Android 同意 7 楼的想法,具体来说就是: 学科表: id 学科名称 父学科 id 题目表: id 题目名称 学科 id |
16 ideascf 2017-05-10 13:37:11 +08:00 学科表 id 名称 上级学科 题目表 id 题目名称 学科题目关系表 id 题目 id 学科 id 这样有几个好处: 1. 一个题目可以关联多个学科 2. 学科 删除或修改 不影响题目表 坏处: 表多一些,查询的时候需要做 join |