如何设计一个“动态”的数据库?

2018-12-14 15:20:42 +08:00
 Rzon

最近在做一个招聘平台的项目,但是想了两三天没想到如何设计表比较好。

概念

1、工种:职位、简历的分类

2、职位:公司发布的职位招聘信息

3、简历:个人发布的简历信息

问题

1.工种是未知的

2.职位、简历的信息项都和“工种”挂钩,在填写职位和简历前,需要先选择工种,然后渲染要填写的条目

3.职位、简历的列表信息、筛选条件、详情,和第二点一样都和工种有关

4.同一个选项的可选值也和工种有关,比如“工作地点”,如果工种是外籍司机,那么工作地点是国家(中国、菲律宾...),如果是本地司机,其可选值为本地的地区(东区、西区、湾仔区) 。。。

5.选项类型也各种各样:文本、下拉、单选、多选、级联。。。

主要是不知道如何设计表,方便筛选和动态的表单,以及信息展示。。求帮助!

5076 次点击
所在节点    MySQL
22 条回复
Ediacaran
2018-12-14 15:39:58 +08:00
考虑 nosql?
Rzon
2018-12-14 15:43:44 +08:00
@Ediacaran 谢谢回复,可以只用 MySQL 吗?没有使用过其他的,而且项目时间比较紧。
neoblackcap
2018-12-14 15:49:55 +08:00
这个需要跟数据库是否动态完全没有关系,既然能列举这么多,为何不能将所有项枚举了?
需要的只不过是前端如何展示罢,后端数据库没有那么复杂,找下产品经理,一起给业务建模,建表就水到渠成了
zinplus
2018-12-14 15:50:40 +08:00
一楼说的对,可以考虑一下 redis。
nosql 不复杂,半天就看完了。
用 hash 存,很方便。
liprais
2018-12-14 15:51:05 +08:00
eav 模型了解一下
xpresslink
2018-12-14 15:52:50 +08:00
用 mongodb 啊,字段不用对齐。
非要 sql 的,要动态只能设计成表设计成 id,key,value 三个列这种。把对象的属性(列)都变成行,这样就可以动态了。
但是这么做行数变多数量级性能会有一定影响。
lihongjie0209
2018-12-14 15:54:43 +08:00
感觉你需要的是一个表单模版, 你可以有一个单独的表存放这个模版:



比如:


工种
- 可选项 1
- 可选项类型
- 可选项值
- 可选项 2
- 可选项类型
- 可选项值
- 可选项 3
- 可选项类型
- 可选项值


这个表单由系统管理员维护, 当用户选择相应的工种的时候把模版取出来渲染就好了
lihongjie0209
2018-12-14 15:57:31 +08:00
为什么有人一看到动态就想到了 NoSQL, 没有 NoSQL 之前的软件都没办法实现这个功能了吗?
这是一个建模问题, 不是技术选型问题.
模型建立好了, 至于用什么类型的数据库都没问题. 简单的点可以直接用文本储存配置文件来配置工种
swulling
2018-12-14 16:00:16 +08:00
你这个不是建一个工种表就完了么…

这个是很传统的 SQL 场景啊,没必要 NOSQL
binux
2018-12-14 16:00:39 +08:00
直接一个 blob 存模板就完了,你爱用什么格式用什么格式。
所有不需要索引,查询筛选的内容不需要设计表。
wowo243
2018-12-14 16:03:24 +08:00
建三个表然后联查?
blodside
2018-12-14 16:14:08 +08:00
写成 rdf 数据,用图数据库存,然后用 sparql 查。
Rzon
2018-12-14 16:14:53 +08:00
@binux @lihongjie0209 感谢回复。不过选项的值可以作为筛选简历和职位的条件,存模板貌似行不通的感觉。
而且选项应该可以让客户去新增,比如新加一个选项的可选值。我想做得比较“灵活”一些。
lihongjie0209
2018-12-14 16:26:30 +08:00
@Rzon 用户增加选项的时候更新一下模版不就可以了
DavidNineRoc
2018-12-14 16:56:32 +08:00
工种表
id name
1 IT

工种表表单表
id name type helpe option is_filter
1 name text 职业名字 true
2 age number 年龄 false
3 sex select 性别 ["1":"男", "2":"女"] false


简历表
id

简历明细
id work_id input_name input_value
1 1 name david
2 1 age 22
3 1 sex 1
关联表,把两张表关联好

****
1.工种是未知的:
* 直接增加工种表记录

2.职位、简历的信息项都和“工种”挂钩,在填写职位和简历前,需要先选择工种,然后渲染要填写的条目
* 通过工种表单表直接查询所有字段,然后渲染表单

3.职位、简历的列表信息、筛选条件、详情,和第二点一样都和工种有关
* 通过 is_filter 控制是否可筛选,然后渲染条件,查询的时候得到工种 id,然后查简历表明细表的字段匹配,

4.同一个选项的可选值也和工种有关,比如“工作地点”,如果工种是外籍司机,那么工作地点是国家(中国、菲律宾...),如果是本地司机,其可选值为本地的地区(东区、西区、湾仔区) 。。。
* 通过 option 字段预留

5.选项类型也各种各样:文本、下拉、单选、多选、级联。。。
* 通过 type 字段设置
Rzon
2018-12-14 16:59:45 +08:00
@DavidNineRoc Thx,后续我再仔细桌面您的解答,非常感谢!
ren2881971
2018-12-14 17:02:55 +08:00
这不就是电子表单么。。。 每个工种下的表单信息都不一样 ,保存的信息也都不一样。
liaoguiming
2018-12-14 17:13:58 +08:00
如果要用 MYSQL 建表的话 思路和电商里的商品属性类似

A 工种表
B 类目总表
C 类目副表(不同的职业,简历对应的具体填写类目) 名称,填写方式(多选,单选,下拉,输入框等等)都可以维护
D A 和 B 关系维护表(哪个工种对应了那些类目)

仅供参考
ihavecat
2018-12-14 17:23:46 +08:00
多表 加关系表
loveCoding
2018-12-14 17:25:38 +08:00
建一个模板表吧 , 没那么复杂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/517574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX