zoukankan      html  css  js  c++  java
  • Mariadb 10.2中的json使用及应用场景思考

    -- 创建示例表
    DROP TABLE IF EXISTS `t_base_user`;
    CREATE TABLE `t_base_user`  (
      `USER_ID` char(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
      `IDENTITY_ID` int(11) DEFAULT NULL,
      `PERSON_ID` int(11) DEFAULT NULL,
      `USER_NAME` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
      `BUREAU_ID` int(11) DEFAULT NULL,
      `DEPARTMENT_ID` int(11) DEFAULT NULL,
      `CREATE_TIME` datetime(0) DEFAULT NULL,
      `B_USE` int(255) DEFAULT NULL,
        `DYNAMIC_COLS`  blob,
      PRIMARY KEY (`USER_ID`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Compact;

    SET FOREIGN_KEY_CHECKS = 1;

    INSERT INTO T_BASE_USER(USER_ID,IDENTITY_ID,PERSON_ID,USER_NAME,BUREAU_ID,DEPARTMENT_ID,CREATE_TIME,B_USE,DYNAMIC_COLS)
    VALUES('75B2E977-A00D-440D-BA60-0F47361CE55D',5,1,'黄海',20,21,now(),1,COLUMN_CREATE('XB_NAME', '男', 'MZ', '汉族'));

    INSERT INTO T_BASE_USER(USER_ID,IDENTITY_ID,PERSON_ID,USER_NAME,BUREAU_ID,DEPARTMENT_ID,CREATE_TIME,B_USE,DYNAMIC_COLS)
    VALUES('61A110A9-3E36-430C-AF9F-D23A74649044',5,1,'朱八',20,21,now(),1,COLUMN_CREATE('XB_NAME', '女', 'MZ', '回族'));

    -- 查询
    SELECT USER_ID,IDENTITY_ID,PERSON_ID,USER_NAME,BUREAU_ID,DEPARTMENT_ID,CREATE_TIME,B_USE, COLUMN_GET(dynamic_cols, 'XB_NAME' AS CHAR) AS XB_NAME FROM t_base_user where
    COLUMN_GET(dynamic_cols, 'XB_NAME' AS CHAR)='男'

    -- 使用场景说明:
    以基础数据为例,我们对于人员有四张表:t_base_person(教工表),t_base_student(学生表),t_base_parent(家长表),t_sys_loginperson(登录表), 其实都是人员的基本表格,但因为属性有差异,导致派生出了四张表,
    而差异却不是查询的最关键信息,也就是速度不是第一位的。目前这四张表的问题也很多,比如互相之间的数据不对应(这可以通过外键等方式进行限制,但外键的问题也很多),比如开发了大量的无用接口。我们可以考虑使用json功能,通过一个基类表t_base_user完成所有设计,这样设计极简,以后的问题也会最少。但在Mariadb中的json,不像是mongodb中的json那样灵活,还是做为定位列扩展比较合适。

  • 相关阅读:
    phpStrom添加插件:php文档生成(phpDocumentor)
    apache2.2 虚拟主机配置
    PHP环境(apache,PHP,Mysql)详细配置方法
    PHP设计模式之工厂模式(权限分配)
    PHP的接口类(interface)和抽象类(abstract)的区别
    PHP设计模式之单例模式(数据库访问)
    windows svn 客户端连不上linux svn server
    Xshell6和Xftp下载地址,rzsz的使用
    linux文件删除,剩余空间没变化
    thinkphp的_STORAGE_WRITE_ERROR_问题
  • 原文地址:https://www.cnblogs.com/littlehb/p/7998848.html
Copyright © 2011-2022 走看看