CMDB服务器管理系统【s5day91】:数据库表结构补充
1、表机构补充图

2、用户信息表(UserProfile)
1、解决了什么问题
1、这台服务器是谁管理的?
2、真正出问题了我敢上去改代码了?不能
3、所以一台机器必须有运维人员和业务负责人,但是业务负责人不登陆这个系统,
4、要想登陆这个系统必须要用用户名密码,但是我这里只有部分人登录,应该怎么写
2、代码
class UserProfile(models.Model):
"""
用户信息,运维管理员和业务负责人 50人
"""
name = models.CharField('姓名', max_length=32)
email = models.EmailField('邮箱')
phone = models.CharField('座机', max_length=32)
mobile = models.CharField('手机', max_length=32) class Meta:
verbose_name_plural = "用户表" def __str__(self):
return self.name
3、管理用户登录表(Admininfo)
1、解决了什么问题
1、有些用户可以登录有些不可以,所以要做一个表关联
2、一个人只能有一个用户名和密码
3、能登录在这AdminInfo这张表,不能登录的在UserProfile表里
2、代码
class AdminInfo(models.Model):
"""
用户登录: 10
"""
user = models.OneToOneField("UserProfile")
username = models.CharField('用户名', max_length=32)
password = models.CharField('密码', max_length=32)
4、服务器表
1、解决了什么问题
1、这个机器在那个机房?
2、属于哪个部门,所以我们要创建一个表,包含机房和部门
3、刚买回来的服务器没有部门,部门就是运维部,
4、部门和服务器是什么关系?
5、在小公司可能会出现服务器和业务线应该是多对多,但是有正规的有运维工程师的或者做运维自动化的公司,
一定保证一个服务器只属于一个业务线
6、必须要用就写个多对多的话
你说这台服务器要不要有管理员?要不要有业务负责人?业务线的负责人
2、代码
class Server(models.Model):
"""
服务器信息
"""
# asset = models.OneToOneField('Asset') idc = models.ForeignKey(IDC,null=True, blank=True)
cabinet_num = models.CharField('机柜号', max_length=30, null=True, blank=True)
cabinet_order = models.CharField('机柜中序号', max_length=30, null=True, blank=True) business_unit = models.ForeignKey(BusinessUnit,null=True, blank=True)
tags = models.ManyToManyField(Tag)
5、业务线表(BusinessUnit)
1、解决了什么问题:
1、在公司的运维的力度不是管这台机器,他管这个部门
2、一个人管100台机器,一个运维负责一个或多个部门
3、所以管理员没有必要给它写在这,他和业务线关联,业务线又和服务器关联
2、代码
class BusinessUnit(models.Model):
"""
业务线(部门)
"""
name = models.CharField('业务线', max_length=64, unique=True) # 销售,1,2
""" 如果反向查找,就有两个ForeignKey,这种情况一定要加related_name """
contact = models.ForeignKey(UserGroup,related_name='c') # 业务线联系人:1
manager = models.ForeignKey(UserGroup,related_name='m') # 运维管理人员:2 class Meta:
verbose_name_plural = "业务线表" def __str__(self):
return self.name
6、用户组表
1、待解决问题:
1、如果业务线联系人和运维管理人员联系不上怎么办?
2、所以我们就设置2个,也就是备胎,所以我设置比较灵活我可以是一个也可以是两个
3、所以我再建一张表,直接不再和UserProfile关联而是和UserGroup关联
4、这样我们一个人一个组,也可以多个组一个组
2、代码
class UserGroup(models.Model):
"""
用户组
ID 名称
1 组A
2 组B
3 组C
用户组和用户关系表
组ID 用户ID
1 1
1 2
2 2
2 3
3 4
"""
name = models.CharField(max_length=32, unique=True)
users = models.ManyToManyField('UserProfile') class Meta:
verbose_name_plural = "用户组表" def __str__(self):
return self.name
7、资产标签表
1、解决了什么问题
1、如果服务器多的话,我可以给它打个标签
2、就像我们写博客的时候可以打多个标签
3、一台服务器可以打多个标签?和小米做了一次技术分享,他对每一台机器打多个标签
4、以后查找的时候可以通过几个关键字能进行快速的查找
2、代码
class Tag(models.Model):
"""
资产标签
"""
name = models.CharField('标签', max_length=32, unique=True) class Meta:
verbose_name_plural = "标签表" def __str__(self):
return self.name
3、错误日志代码
class ErrorLog(models.Model):
"""
错误日志,如:agent采集数据错误 或 运行错误
"""
server_obj = models.ForeignKey('Server', null=True, blank=True)
title = models.CharField(max_length=16)
content = models.TextField()
create_at = models.DateTimeField(auto_now_add=True) class Meta:
verbose_name_plural = "错误日志表" def __str__(self):
return self.title
CMDB服务器管理系统【s5day91】:数据库表结构补充的更多相关文章
- centos/windows服务器,Mysql数据库表结构损坏-已解决
[问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...
- 物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了。
物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了. 步骤如下: 一.反向生成物理数据模型PDM 开发环境 PowerDes ...
- 数据库表结构对比同步mysqldiff
开发服务器的数据库表结构进行了修改,或者修改过多,为了与线上的数据库结构同步,可以使用mysqldiff工具对线上数据库打补丁. mysqldiff Windows下载地址:http://dev.my ...
- 微调数据库表结构,30 分钟搞定 WordPress 数据库查询缓慢问题
同事的美女图片站,基于 WordPress 搭建的,因为数据越来越多,变得慢,我从 PHP slow log 里面看出是 WordPress 有些查询总是很慢,即使已经安装了页面缓存插件,但是由于页面 ...
- python 全栈开发,Day105(路飞其他数据库表结构,立即结算需求)
考试第三部分:Django 16. 列列举你熟悉的Http协议头以及作用.(1分) Accept-Charset: 用于告诉浏览器,客户机采用的编码 Host: 客户机通过这个头告诉服务器,想访问的 ...
- 数据库表结构文档查看器 基于netcore
前言 日常开发业务代码,新接手一块不熟悉的业务时需要频繁的查看对应业务的数据库表设计文档.相比于直接翻看业务代码,有必要提供一个数据库表结构文档查看器来解决这些繁琐的问题. CML.SqlDoc CM ...
- FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- 不同数据库表结构的转化,PowerDesigner的使用教程
通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库 ...
- Activiti工作流数据库表结构
Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*: ...
随机推荐
- Jenkins自动化部署-----持续交付【转】
感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多的实践, ...
- 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败。对于已启用更改跟踪的表,不可能切换其分区。请先禁用更改跟踪,再使用 ALTER TABLE SWITCH。
问题描述: 今天处理切换分区数据的时候出现了这个错误: 消息 4900,级别 16,状态 2,第 1 行 对表 'XX.XXX' 执行 ALTER TABLE SWITCH 语句失败.对于已启用更改跟 ...
- mysql 的远程链接字符
默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0 ...
- Vue学习之路1-集成环境安装
1.前言 Vue 是一款友好的.多用途且高性能的javascript框架,与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,它能够帮你创建可维护性和可测试性更强的代码库,Vue是渐进式的j ...
- gradle构建项目失败:Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9
Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to ...
- iOS开发基础-Plist实现嵌套模型
一.plist文件结构图 说明: title 属性表示该 item 下汽车名字的首字母, cars 属性存放首字母为 title 的汽车, icon 属性存放图片的名称, name 属性存放汽车的名字 ...
- 【重磅】FineUIPro基础版免费,是时候和ExtJS说再见了!
三石的新年礼物 9 年了,FineUI(开源版)终于迎来了她的继任者 - FineUIPro(基础版),并且完全免费! FineUIPro(基础版)作为三石奉献给社区的一个礼物,绝对让你心动: 拥 ...
- 互怼、IPO、雷潮、寒冬,2018 互联网圈的那些事儿
有了人的地方,就会有江湖. 有江湖的地方,就会有门派. 有门派的地方,就会有纷争. 有纷争的地方,就会有兴衰. 2018年马上就要离我们远去了,迎接我们的将会是新的一年——2019年.在整个过去的20 ...
- 基于 HTML5 的工业互联网云平台监控机房 U 位
前言 机柜 U 位管理是一项突破性创新技术--继承了 RFID 标签(电子标签)的优点的同时,完全解决了 RFID 技术(非接触式的自动识别技术)在机房 U 位资产监控场应用景中的四大缺陷,采用工业互 ...
- Java中NIO和IO区别和适用场景
NIO是为了弥补IO操作的不足而诞生的,NIO的一些新特性有:非阻塞I/O,选择器,缓冲以及管道.管道(Channel),缓冲(Buffer) ,选择器( Selector)是其主要特征. 概念解释: ...