› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
Rzon
V2EX  ›  MySQL

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

  •  2
     
  •   Rzon · Dec 14, 2018 · 6105 views
    This topic created in 2883 days ago, the information mentioned may be changed or developed.

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

    概念

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

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

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

    问题

    1.工种是未知的

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

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

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

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

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

    Supplement 1  ·  Dec 14, 2018
    感谢各位的回复!

    经过沟通,考虑到时间问题,决定每个工种都写死,所有修改都将更新版本。。。

    等项目完成后,再自行琢磨解决方法,再次感谢各位的回复! thx
    22 replies  •  2018-12-15 00:50:11 +08:00
    Ediacaran
    Ediacaran
    Dec 14, 2018 via Android
    1
    考虑 nosql?
    Rzon
    Rzon
    OP
    Dec 14, 2018
    2
    @Ediacaran 谢谢回复,可以只用 MySQL 吗?没有使用过其他的,而且项目时间比较紧。
    neoblackcap
    neoblackcap
    Dec 14, 2018❤️1
    3
    这个需要跟数据库是否动态完全没有关系,既然能列举这么多,为何不能将所有项枚举了?
    需要的只不过是前端如何展示罢,后端数据库没有那么复杂,找下产品经理,一起给业务建模,建表就水到渠成了
    zinplus
    zinplus
    Dec 14, 2018
    4
    一楼说的对,可以考虑一下 redis。
    nosql 不复杂,半天就看完了。
    用 hash 存,很方便。
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Dec 14, 2018
    5
    eav 模型了解一下
    xpresslink
    xpresslink
    Dec 14, 2018
    6
    用 mongodb 啊,字段不用对齐。
    非要 sql 的,要动态只能设计成表设计成 id,key,value 三个列这种。把对象的属性(列)都变成行,这样就可以动态了。
    但是这么做行数变多数量级性能会有一定影响。
    lihongjie0209
    lihongjie0209
    Dec 14, 2018
    7
    感觉你需要的是一个表单模版, 你可以有一个单独的表存放这个模版:



    比如:


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


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

    这个是很传统的 SQL 场景啊,没必要 NOSQL
    binux
    binux
    Dec 14, 2018 via Android
    10
    直接一个 blob 存模板就完了,你爱用什么格式用什么格式。
    所有不需要索引,查询筛选的内容不需要设计表。
    wowo243
    wowo243
    Dec 14, 2018
    11
    建三个表然后联查?
    blodside
    blodside
    Dec 14, 2018
    12
    写成 rdf 数据,用图数据库存,然后用 sparql 查。
    Rzon
    Rzon
    OP
    Dec 14, 2018
    13
    @binux @lihongjie0209 感谢回复。不过选项的值可以作为筛选简历和职位的条件,存模板貌似行不通的感觉。
    而且选项应该可以让客户去新增,比如新加一个选项的可选值。我想做得比较“灵活”一些。
    lihongjie0209
    lihongjie0209
    Dec 14, 2018
    14
    @Rzon 用户增加选项的时候更新一下模版不就可以了
    DavidNineRoc
    DavidNineRoc
    Dec 14, 2018
    15
    工种表
    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
    Rzon
    OP
    Dec 14, 2018
    16
    @DavidNineRoc Thx,后续我再仔细桌面您的解答,非常感谢!
    ren2881971
    ren2881971
    Dec 14, 2018
    17
    这不就是电子表单么。。。 每个工种下的表单信息都不一样 ,保存的信息也都不一样。
    liaoguiming
    liaoguiming
    Dec 14, 2018
    18
    如果要用 MYSQL 建表的话 思路和电商里的商品属性类似

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

    仅供参考
    ihavecat
    ihavecat
    Dec 14, 2018
    19
    多表 加关系表
    loveCoding
    loveCoding
    Dec 14, 2018
    20
    建一个模板表吧 , 没那么复杂
    fortunezhang
    fortunezhang
    Dec 14, 2018
    21
    不确定的或者会变化的,就新建一个表。然后主表存 id
    binux
    binux
    Dec 15, 2018 via Android
    22
    @Rzon 你不会加 tag 吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4079 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 05:35 · PVG 13:35 · LAX 21:35 · JFK 00:35
    ♥ Do have faith in what you're doing.