产品管理服务--数据库设计
文章目录
- 需求分析
- 用户登录
- 用户日志
- 产品
- 产品的主题
- 设备
- 设备事件
- 设备的连接时长
- 应用token
- 创建
- 总结
需求分析
用户登录
用户需要手机号注册
管理员用户可以查看所有的用户情况(不能产品等其它内容)
个人用户和公司用户目前没有太大的区别
用户日志
用户的登录信息需要记录
产品
人个用户和公司用户可以创建自己的产品,即公司的实际产品,包括产品的类型、产品英文名称和描述信息。
产品的主题
每个产品都会绑定一系列的主题进行ACL,保证该产品主题不会被其他人访问,确定哪些主题是发布、订阅还是发布/订阅。
设备
每种产品中包含一系列的设备,设备要包含账户和密码,在EMQ X 使用MySQL 登录认证中的mqtt_user是加盐之后的密码,此处要存储一个原始密码。同时要关注设备的在线状态。
设备事件
以下都是设备的事件可以,可以对设备的所有事件存储。
设备的连接时长
用来查看设备的连接信息
应用token
用户用来开发专有的设备端服务器时使用,每一个token对应一个产品。
CREATE USER product_manager@'%' IDENTIFIED WITH mysql_native_password BY 'product_manager';
-- 创建数据库
create DATABASE IF NOT EXISTS product_manager DEFAULT charset utf8mb4;
-- 授权 开发环境可以添加 alter
GRANT create,insert,select,update,delete,drop ON product_manager.* TO product_manager@'%';use product_manager;-- 用户
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户表id',`username` varchar(50) COMMENT '用户名',`truename` varchar(50) COMMENT '真实姓名',`icon` varchar(256) COMMENT '头像',`password` varchar(256) NOT NULL COMMENT '用户密码,MD5加密',`email` varchar(50) DEFAULT NULL,`phone` varchar(20) DEFAULT NULL,`role` int(4) NOT NULL COMMENT '角色0-管理员,1-个人用户,2公司用户',`user_desc` varchar(256) COMMENT '用户描述',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `phone_unique` (`phone`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 用户日志
DROP TABLE IF EXISTS `login_logs`;
CREATE TABLE `login_logs` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户日志id',`user_id` int(11) NOT NULL COMMENT '用户ID',`login_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '登录时间',`logout_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '登出时间',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 产品
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '产品id',`user_id` int(11) NOT NULL COMMENT '用户ID',`product_name` varchar(256) NOT NULL COMMENT '产品名称',`product_en_name` varchar(256) NOT NULL COMMENT '产品的英文名称用来限制topic',`product_desc` varchar(512) NOT NULL COMMENT '产品描述',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 产品和主题的绑定
DROP TABLE IF EXISTS `product_topic_bind`;
CREATE TABLE `product_topic_bind` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '产品主题id',`product_id` int(11) NOT NULL COMMENT '产品ID',`topic_id` int(11) NOT NULL COMMENT '主题ID',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 产品中的设备
DROP TABLE IF EXISTS `device`;
CREATE TABLE `device` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '设备id',`product_id` int(11) NOT NULL COMMENT '产品ID',`mqtt_user_id` int(11) NOT NULL COMMENT 'mqtt设备名称ID',`username` varchar(128) NOT NULL COMMENT '用户名',`password` varchar(128) NOT NULL COMMENT '用户密码,未加密',`client_id` varchar(128) NOT NULL COMMENT 'mqtt设备的clientId',`connect_status` BOOLEAN NOT NULL COMMENT '连接状态,false,true 连接',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 设备连接信息(连接时长)
DROP TABLE IF EXISTS `connect_logs`;
CREATE TABLE `connect_logs` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '设备连接信息id',`device_id` int(11) NOT NULL COMMENT '设备ID',`connect_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '连接时间',`disconnect_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '断开连接时间',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 设备事件
DROP TABLE IF EXISTS device_events;
CREATE TABLE `device_events` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '设备事件id',`msg_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '消息的时间',`product_id` int(11) NOT NULL COMMENT '产品ID',`device_id` int(11) NOT NULL COMMENT '设备ID',`data_type` TINYINT NOT NULL DEFAULT 1 COMMENT '数据类型: 1:event 2:response',`topic` varchar(512) NOT NULL COMMENT '主题',`stream_id` varchar(128) NOT NULL COMMENT '数据流ID',`data` JSON COMMENT '接收的数据',`response_result` JSON COMMENT '返回的数据',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 应用token表
DROP TABLE IF EXISTS `application_token`;
CREATE TABLE `application_token` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '应用token id',`user_id` int(11) NOT NULL COMMENT '用户ID',`product_id` int(11) NOT NULL COMMENT '产品ID',`application_name` varchar(128) NOT NULL COMMENT '应用名称',`token` varchar(512) NOT NULL COMMENT 'token',`create_time` TIMESTAMP NOT NULL DEFAULT current_timestamp COMMENT '创建时间',`update_time` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp COMMENT '修改时间',PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
创建
MySQL8.0 Docker安装
将上面的sql文件在root下运行即可。
总结
些处的数据表满足没有网关和边缘设备的产品使用,如有兴趣扩展,欢迎一起交流。
产品管理服务--数据库设计相关推荐
- 西安IATF16949认证_西安IATF16949咨询_8.3产品和服务的设计和开发 -8.3.1总则
标准 8.3产品和服务的设计和开发 8.3.1总则 组织应建立.实施和保持适当的设计和开发过程,以确保后续产品和服务的提供. 术语 3.4.8设计和开发 design and development ...
- 光盘出租系统mysql_碟片出租管理子系统数据库设计.doc
碟片出租管理子系统数据库设计 武汉理工大学华夏学院 课 程 设 计 课程名称 数据库原理课程设计 题 目:碟片出租管理子系统数据库设计 专 业 班 级 姓 名 成 绩 指导教师 2013 年6 月17 ...
- .NET应用程序管理服务AMS设计
AMS全称是Application Management Server即应用程序管理服:由于经常要写些一些应用服务,每次部署和维护都比较麻烦,首先要针对服务编写一个windows服务程序方便系统启动里 ...
- spring整合shiro权限管理与数据库设计
之前的文章中我们完成了基础框架的搭建,现在基本上所有的后台系统都逃不过权限管理这一块,这算是一个刚需了.现在我们来集成shiro来达到颗粒化权限管理,也就是从连接菜单到页面功能按钮,都进行权限都验证, ...
- 内部邮件管理的数据库设计和dwz的批量处理
dwz框架学习笔记之(七) 好久没写博客了,最近安排做内部邮件管理模块,做之前要先设计好数据库,也网上找了163邮箱数据库设计,虽然要做的没有163邮箱的复杂,但是它的数据设计还是有借鉴作用.总共需要 ...
- 微服务-数据库设计原则
数据和应用分离:①数据库位置透明,应用系统只依赖于逻辑数据库:②不直接访问其他宿主的数据库,只能通过服务访问 数据库主备从:①数据库必须配置备库:②不同业务域用不同的Schema隔离 不过度依赖缓存: ...
- DEVOPS 运维开发系列一:ITIL服务目录管理流程的设计与信息化管理系统功能的开发
ITIL是世界范围内公认的运维服务管理的最佳实践.ITIL的理论落地,不需要什么信息系统的支持,使用word文件.Excel表格一样可以对ITIL的十几个关键管理流程做到很好的落地.虽然是这么讲,但现 ...
- ssm智能社区服务的设计与实现毕业设计-附源码221512
摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代. ...
- SSM+智能社区服务的设计与实现 毕业设计-附源码221512
ssm智能社区服务的设计与实现 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用.信息时代的到来已成为不可阻挡的时尚潮流, ...
最新文章
- 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
- Python爬取mn52网站美女图片以及图片防盗链的解决方法
- non-member function ‘size_t capacity()’ cannot have cv-qualifier
- python和c语言哪个效率高_C语言和Python哪个更容易学?
- sql 写query_为什么需要动态SQL
- Windows环境下smarty安装简明教程
- Python中的类属性和实例属性以及静态方法和类方法
- python常用文本处理功能
- [USACO12OPEN]Unlocking Block【BFS / 广搜】
- 圆形刻度盘 进度 展示
- 飞思卡尔单片机c语言编程详解,飞思卡尔单片机PIT汇编编程(一)
- 试验设计与matlab数据分析 下载,试验设计与MATLAB数据分析
- 【C++软件开发】面试经典题目汇总
- linux 拒绝访问文件夹,文件夹拒绝访问的原因与解决办法
- 计算机二级vbf资源百度云,2018年计算机二级考试考前冲刺卷
- SEO优化收徒蜘蛛池是什么
- es 聚合查询 java api_javaAPI操作ES分组聚合
- itoa函数和atoi函数的实现和用法
- Evaluations
- quartus II使用