Power Designer自定义生成测试数据的时候给相关属性添加约束

目标

  1. 使用Power Designer里面自带的生成测试数据的功能,给指定的数据库生成测试数据
  2. 在生成测试数据的时候,有的表中的某些列可能有一些特殊的约束,例如时间约束:指定生成的日期在某个范围内;当然更常见的是数量约束
  3. 值得注意的是在生成测试数据的时候,外键约束不考虑在内,但通过Power Designer里面自带的一个功能可以加以解决

参考文档

Power Designer官方文档

场景:模拟订单处理

在这里插入图片描述
对应的sql建表语句为:


CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` char(20) DEFAULT NULL,
  `password` char(10) DEFAULT NULL,
  `telephone` char(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

/*Data for the table `user` */


/*Table structure for table `commodity` */

DROP TABLE IF EXISTS `commodity`;

CREATE TABLE `commodity` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` char(20) DEFAULT NULL,
  `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '商品的描述',
  `price` float DEFAULT NULL,
  `category` int DEFAULT NULL COMMENT '商品分类',
  `number` int DEFAULT NULL COMMENT '商品总数量',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

/*Data for the table `commodity` */

/*Table structure for table `order` */

DROP TABLE IF EXISTS `order`;

CREATE TABLE `order` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `user_id` bigint DEFAULT NULL,
  `commodity_id` bigint DEFAULT NULL,
  `order_time` datetime DEFAULT NULL COMMENT '下单时间',
  `order_number` int DEFAULT NULL COMMENT '购买数量',
  `isPay` int DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `commodity_id` (`commodity_id`),
  CONSTRAINT `order_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `order_ibfk_2` FOREIGN KEY (`commodity_id`) REFERENCES `commodity` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

/*Data for the table `order` */


/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

创建数据库order,并且在Order中创建上述的表

省略

使用Power Designer连接数据库Order

  1. 打开Power Desgner,依次点击file–>Reverse Engineer—>database
    在这里插入图片描述

  2. DBMS选择MySQL
    在这里插入图片描述

  3. 配置数据源连接
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 点击测试,连接成功!
    在这里插入图片描述
    在这里插入图片描述
    点击connect,连接成功

  5. 进行逆向工程
    回到主界面依次点击file–>Reverse Engineer—>database
    在这里插入图片描述
    在这里插入图片描述

得到对应的物理模型
在这里插入图片描述

给表的相关属性列添加约束

  1. 给order表的order_time添加时间约束,使生成的时间在2023-1-1到2023-6-22
    在这里插入图片描述
    在这里插入图片描述
    设置起止时间
    在这里插入图片描述
  2. 同理给order表中的number字段添加约束为值在1到10之间
    在这里插入图片描述
    在这里插入图片描述
  3. 给商品commodity表中的category属性列添加约束取值为0到19
  4. 给commodity表中number字段添加约束取值为10000到20000
  5. 给user表telephone添加约束为11位数字

在这里插入图片描述

生成表user和commodity测试数据

  1. database---->生成测试数据---->选择数据源
    在这里插入图片描述
  2. database—>执行sql文件---->导入sql语句
    导入成功!!!
    在这里插入图片描述

生成表Order的测试数据

  1. 由于在设计表的时候,给order表中的两个字段:user_id和commodity_id添加了外键约束,因此在生成测试数据时这两个字段的取值应该分别来自user表中id和commodity表中的id
  2. Power Designer里面提供了对应的解决方案,如下所示
    在这里插入图片描述
    在这里插入图片描述
  3. 完成上述配置以后,再生成测试数据,则order表中的user_id和commodity_id满足外键约束

总结

  1. 在给定的官方文档中对相关的内容,特别是一些属性有详细的介绍,但是推荐大家看文档
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值