低代码-数据库设计

低代码-数据库设计

常用数据库设计思路

常见的设计的思路

  • 传统关系型数据库
  • no-sql实现

传统关系型数据库

首选 毫无疑问 mysql。别问,问就是用了很多年了
mysql有2种方案

  • 横向设计法 (目前采用这一种)
  • 列式设计法
横向设计法

用户在界面上拖拉拽出一个表单,则后台对应建一张表。
好处

  • 方便查询
  • 方便后续统计导出
  • join
    坏处
  • 表字段增减会有性能问题
纵向设计法

纵向设计法分为2种

  • a、同样在页面上一个表单对应一张表,但是真实建表 建200列,当做扩展字段
  • b、整个系统只有X张不同数据表(日期,数值,文本类型表)
    好处
  • 列式的存储概念
  • 容易应付数据量不大的场景
    坏处
  • 客户的表不是隔离的,如果备份是个大问题
  • join操作很难解决,很难解决查询的问题

非关系型数据库

mongdb
个人感觉也是一个门槛,但是也是一个解决方案
或者使用其他 大数据类数据库

采用的实际办法

传统关系型数据库, 横向设计法
好处是显而易见,坏处也是一目了然。但是这种设计是符合一个程序员的正向思路,并且是类似于正常做需求的一个习惯性建表。但是怎么解决 坏处呢?
苦思冥想 有了一个不成熟的答案
解决办法
1、产品定位上 不允许 跨类型修改字段。数值就是数值,文本就是文本,日期就是日期。抓住几个大类数据类型。
2、在建表生成的时候,根据类型 建立一个比较大的类型。
3、除了增加新的列,真实增加。其他的操作都是逻辑操作

产品定位类型问题

1、不能随意更换字段类型, 可以增加 前缀后缀 和 长度,但是不能变更为其他类型
类型修改
2、增加不同类型的基础类型
在这里插入图片描述

建表的解决办法

1、建表语句

     <if test="dto.list!=null and dto.list.size()>0">
        <foreach collection="dto.list" item="list" separator=",">
            `${list.columnName}` ${list.type}(${list.length}) 
            <if test="list.isNull ==1"> DEFAULT NULL </if>
            <if test="list.isNull ==0"> NOT NULL DEFAULT ${list.defaultValue} </if> 
            COMMENT '${list.columnDesc}'
        </foreach>
     </if>

2、建表的字段
定义的不同类型,对应长一点

	VARCHAR("500"),
	TEXT(""),
//	LONGTEXT(""),
//	TINYINT("4"),
	INT("11"),
	BIGINT("20"),
	DECIMAL("50,4"),
	DATE(""),
	DATETIME(""),
	;

3、增加表的元数据表

  • 元素表
  • 元素表列名
    在这里插入图片描述
application_table

  `db_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '库名',
  `table_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '表名称',
  `table_desc` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '表描述'

application_table_column
  `table_id` bigint NOT NULL DEFAULT '0' COMMENT '表id',
  `column_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '列名',
  `column_desc` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '列描述',
  `length` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '0' COMMENT '长度',
  `is_null` tinyint NOT NULL DEFAULT '0' COMMENT '是否为空(0:否 1:是)',
  `category_type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '页面类型',
  `type` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '类型',
  `default_value` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL DEFAULT '' COMMENT '默认值'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值