@[TOC]
应用举例
在数据库表中,需要生成一个唯一 ID 来标识字段的唯一性,所以就引入了uuid。
如果有两个表
当我们在建立数据库表的时候,需要有一定的规范,例如:每个表中都有一个自增的主键;密码不可以用明文,需要加密;有的字段不可为NULL;字符编码有规定……那么,有一个自我唯一标识的字段是必不可少的。
设计一个员工工资表举例(并不是一个完整的):
用户基本信息表:
数据库准备
CREATE TABLE `user_information` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`user_uuid` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户主键',
`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '姓名',
`user_sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '性别',
`user_age` int NOT NULL COMMENT '年龄',
`user_email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '' COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户基本信息表';
用户工资信息表:
CREATE TABLE `user_wages_information` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`user_wager_information_uuid` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户工资表主键',
`user_information_uuid` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户信息主键',
`year` varchar(255) DEFAULT NULL COMMENT '年份',
`month` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '月份',
`base_salary` double unsigned DEFAULT NULL COMMENT '基本工资',
`bonus` double DEFAULT NULL COMMENT '奖金',
`punish` double DEFAULT NULL COMMENT '扣除',
`total_salary` double DEFAULT NULL COMMENT '总工资',
`remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户工资信息表';
员工基本信息表:
员工工资表:
可以看到,user_uuid是互相对应的,是一个唯一标识。
使用
UUID uuid = UUID.randomUUID();
新增的时候直接塞入uuid即可。
使用时:获取到uuid,进行判断,是一个非常好用的功能。
疑惑解答
1.那为什么不用名字去做标识呢?答:现实中肯定有重名的人,不符合。
如果以后要做一些业务的话,用uuid去做会比较好。
2.那么,我们用身份证可以吗?
答:可以!但是毕竟不是所有业务都会有身份证标识,所以uuid是比较通用的一个技术。