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】:数据库表结构补充的更多相关文章

  1. centos/windows服务器,Mysql数据库表结构损坏-已解决

    [问题原因]服务器突然断电 [故障报告]数据库表结构损坏 [解决思路]进入强制恢复模式,备份库表及数据重建 故障发现 周末公司断电,周一启动数据库就直接报错了 查看日志 上面标记的log,明确表示是非 ...

  2. 物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了。

    物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了.   步骤如下: 一.反向生成物理数据模型PDM 开发环境 PowerDes ...

  3. 数据库表结构对比同步mysqldiff

    开发服务器的数据库表结构进行了修改,或者修改过多,为了与线上的数据库结构同步,可以使用mysqldiff工具对线上数据库打补丁. mysqldiff Windows下载地址:http://dev.my ...

  4. 微调数据库表结构,30 分钟搞定 WordPress 数据库查询缓慢问题

    同事的美女图片站,基于 WordPress 搭建的,因为数据越来越多,变得慢,我从 PHP slow log 里面看出是 WordPress 有些查询总是很慢,即使已经安装了页面缓存插件,但是由于页面 ...

  5. python 全栈开发,Day105(路飞其他数据库表结构,立即结算需求)

    考试第三部分:Django 16.  列列举你熟悉的Http协议头以及作用.(1分) Accept-Charset: 用于告诉浏览器,客户机采用的编码 Host: 客户机通过这个头告诉服务器,想访问的 ...

  6. 数据库表结构文档查看器 基于netcore

    前言 日常开发业务代码,新接手一块不熟悉的业务时需要频繁的查看对应业务的数据库表设计文档.相比于直接翻看业务代码,有必要提供一个数据库表结构文档查看器来解决这些繁琐的问题. CML.SqlDoc CM ...

  7. FocusBI: 《DW/BI项目管理》之数据库表结构 (原创)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...

  8. 不同数据库表结构的转化,PowerDesigner的使用教程

    通过学习PowerDesigner工具,学习概念模型,物理模型,面向对象模型,业务模型,以及不同数据库表结构的转化. 通过案例给大家分享,sql server 2008r2 数据库和oracle数据库 ...

  9. Activiti工作流数据库表结构

    Activiti工作流引擎数据库表结构 数据库表的命名 Acitiviti数据库中表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识.此用例大体与服务API是匹配的. ACT_RE_*: ...

随机推荐

  1. 我认知的javascript之作用域和闭包

    说到javascript,就不得不说javascript的作用域和闭包:当然,还是那句老话,javascript在网上都说得很透彻了,我也就不过多的强调了: 作用域:javascript并没有像其他的 ...

  2. LeetCode算法题-Kth Largest Element in a Stream(Java实现)

    这是悦乐书的第296次更新,第315篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第164题(顺位题号是703).设计一个类来查找流中第k个最大元素.请注意,它是排序顺序 ...

  3. c#操作SQL Server入门总结

    我是一名c#新手.本文只是我是常学习的随笔. 一.下载SQL server软件 听说下载开发板是最好的(开发板如果只是用来学习.研究不算是侵权).在安装的时候,我也遇到了很多问题,在公司的电脑安装第一 ...

  4. 【English EMail】Compensation Planning Memo

    Data Foundation  数据基础 [faʊnˈdeʃən] Interesting newsletter for data foundation practice. Annual Code ...

  5. linux安装成功后怎么调出终端

    一.Ubuntu 桌面如下,点击搜索 二.输入terminal 终端 三.锁定到菜单栏 四.接下来就可以练习linux下的常用命令,如:ls  mkdir  cat    touch 等等 这些命令后 ...

  6. OllyDbg使用笔记

    [TOC] OD步过后,返回到之前某位置,重新单步执行 找到你想返回的行, 右键选择New origin here,快捷键Ctrl+Gray *, 然后程序会返回到这一行,再次按F7或者F8等执行即可

  7. CF438E The Child and Binary Tree 生成函数、多项式开根

    传送门 设生成函数\(C(x) = \sum\limits_{i=0}^\infty [\exists c_j = i]x^i\),答案数组为\(f_1 , f_2 , ..., f_m\),\(F( ...

  8. 必须掌握的MySQL优化指南

    当 MySQL 单表记录数过大时,增删改查性能都会急剧下降,本文会提供一些优化参考,大家可以参考以下步骤来优化. 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部 ...

  9. 【win7】安装开发环境

    1. 通用版主分支合并到v3,并删除data下无用文件或添加data有用文件 2. xampp php7与php5切换 是否可以行? 换phpstudy 默认支持php 32位,而我们要下载支持64的 ...

  10. ABP中模块初始化过程(二)

    在上一篇介绍在StartUp类中的ConfigureService()中的AddAbp方法后我们再来重点说一说在Configure()方法中的UserAbp()方法,还是和前面的一样我们来通过代码来进 ...