目标
- 使用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
-
打开Power Desgner,依次点击file–>Reverse Engineer—>database
-
DBMS选择MySQL
-
配置数据源连接
-
点击测试,连接成功!
点击connect,连接成功 -
进行逆向工程
回到主界面依次点击file–>Reverse Engineer—>database
得到对应的物理模型
给表的相关属性列添加约束
- 给order表的order_time添加时间约束,使生成的时间在2023-1-1到2023-6-22
设置起止时间
- 同理给order表中的number字段添加约束为值在1到10之间
- 给商品commodity表中的category属性列添加约束取值为0到19
- 给commodity表中number字段添加约束取值为10000到20000
- 给user表telephone添加约束为11位数字
生成表user和commodity测试数据
- database---->生成测试数据---->选择数据源
- database—>执行sql文件---->导入sql语句
导入成功!!!
生成表Order的测试数据
- 由于在设计表的时候,给order表中的两个字段:user_id和commodity_id添加了外键约束,因此在生成测试数据时这两个字段的取值应该分别来自user表中id和commodity表中的id
- Power Designer里面提供了对应的解决方案,如下所示
- 完成上述配置以后,再生成测试数据,则order表中的user_id和commodity_id满足外键约束
总结
- 在给定的官方文档中对相关的内容,特别是一些属性有详细的介绍,但是推荐大家看文档