1、表机构补充图

2、用户信息表(UserProfile)

1、解决了什么问题

1、这台服务器是谁管理的?
2、真正出问题了我敢上去改代码了?不能
3、所以一台机器必须有运维人员和业务负责人,但是业务负责人不登陆这个系统,
4、要想登陆这个系统必须要用用户名密码,但是我这里只有部分人登录,应该怎么写

2、代码

  1. class UserProfile(models.Model):
  2. """
  3. 用户信息,运维管理员和业务负责人 50人
  4. """
  5. name = models.CharField('姓名', max_length=32)
  6. email = models.EmailField('邮箱')
  7. phone = models.CharField('座机', max_length=32)
  8. mobile = models.CharField('手机', max_length=32)
  9.  
  10. class Meta:
  11. verbose_name_plural = "用户表"
  12.  
  13. def __str__(self):
  14. return self.name

3、管理用户登录表(Admininfo)

1、解决了什么问题

1、有些用户可以登录有些不可以,所以要做一个表关联
2、一个人只能有一个用户名和密码
3、能登录在这AdminInfo这张表,不能登录的在UserProfile表里

2、代码

  1. class AdminInfo(models.Model):
  2. """
  3. 用户登录: 10
  4. """
  5. user = models.OneToOneField("UserProfile")
  6. username = models.CharField('用户名', max_length=32)
  7. password = models.CharField('密码', max_length=32)

4、服务器表

1、解决了什么问题

1、这个机器在那个机房?
2、属于哪个部门,所以我们要创建一个表,包含机房和部门
3、刚买回来的服务器没有部门,部门就是运维部,
4、部门和服务器是什么关系?
5、在小公司可能会出现服务器和业务线应该是多对多,但是有正规的有运维工程师的或者做运维自动化的公司,
 一定保证一个服务器只属于一个业务线
6、必须要用就写个多对多的话
 你说这台服务器要不要有管理员?要不要有业务负责人?业务线的负责人

2、代码

  1. class Server(models.Model):
  2. """
  3. 服务器信息
  4. """
  5. # asset = models.OneToOneField('Asset')
  6.  
  7. idc = models.ForeignKey(IDC,null=True, blank=True)
  8. cabinet_num = models.CharField('机柜号', max_length=30, null=True, blank=True)
  9. cabinet_order = models.CharField('机柜中序号', max_length=30, null=True, blank=True)
  10.  
  11. business_unit = models.ForeignKey(BusinessUnit,null=True, blank=True)
  12. tags = models.ManyToManyField(Tag)

5、业务线表(BusinessUnit)

1、解决了什么问题:

1、在公司的运维的力度不是管这台机器,他管这个部门
2、一个人管100台机器,一个运维负责一个或多个部门
3、所以管理员没有必要给它写在这,他和业务线关联,业务线又和服务器关联

2、代码

  1. class BusinessUnit(models.Model):
  2. """
  3. 业务线(部门)
  4. """
  5. name = models.CharField('业务线', max_length=64, unique=True) # 销售,1,2
  6. """ 如果反向查找,就有两个ForeignKey,这种情况一定要加related_name """
  7. contact = models.ForeignKey(UserGroup,related_name='c') # 业务线联系人:1
  8. manager = models.ForeignKey(UserGroup,related_name='m') # 运维管理人员:2
  9.  
  10. class Meta:
  11. verbose_name_plural = "业务线表"
  12.  
  13. def __str__(self):
  14. return self.name

6、用户组表

1、待解决问题:

1、如果业务线联系人和运维管理人员联系不上怎么办?
2、所以我们就设置2个,也就是备胎,所以我设置比较灵活我可以是一个也可以是两个
3、所以我再建一张表,直接不再和UserProfile关联而是和UserGroup关联
4、这样我们一个人一个组,也可以多个组一个组

2、代码

  1. class UserGroup(models.Model):
  2. """
  3. 用户组
  4. ID 名称
  5. 1 组A
  6. 2 组B
  7. 3 组C
  8. 用户组和用户关系表
  9. 组ID 用户ID
  10. 1 1
  11. 1 2
  12. 2 2
  13. 2 3
  14. 3 4
  15. """
  16. name = models.CharField(max_length=32, unique=True)
  17. users = models.ManyToManyField('UserProfile')
  18.  
  19. class Meta:
  20. verbose_name_plural = "用户组表"
  21.  
  22. def __str__(self):
  23. return self.name

7、资产标签表

1、解决了什么问题

1、如果服务器多的话,我可以给它打个标签
2、就像我们写博客的时候可以打多个标签
3、一台服务器可以打多个标签?和小米做了一次技术分享,他对每一台机器打多个标签
4、以后查找的时候可以通过几个关键字能进行快速的查找

2、代码

  1. class Tag(models.Model):
  2. """
  3. 资产标签
  4. """
  5. name = models.CharField('标签', max_length=32, unique=True)
  6.  
  7. class Meta:
  8. verbose_name_plural = "标签表"
  9.  
  10. def __str__(self):
  11. return self.name

3、错误日志代码

  1. class ErrorLog(models.Model):
  2. """
  3. 错误日志,如:agent采集数据错误 或 运行错误
  4. """
  5. server_obj = models.ForeignKey('Server', null=True, blank=True)
  6. title = models.CharField(max_length=16)
  7. content = models.TextField()
  8. create_at = models.DateTimeField(auto_now_add=True)
  9.  
  10. class Meta:
  11. verbose_name_plural = "错误日志表"
  12.  
  13. def __str__(self):
  14. 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. c/c++ socket API 调用后的错误判断 perror errno

    socket API 调用后的错误判断 perror errno 调用完socket API后,需要判断调用是否成功与失败.如果失败,会自动设置errno(是个整数), 并且用perror可以打印出具 ...

  2. android SDK 无法更新

    android-windows-sdk无法更新解决办法:   1.在host文件新增如下配置 (host文件位置:c:\Windows\System32\drivers\etc文件夹下面,用文本编辑器 ...

  3. centos7.4系统升级kernel内核

    在实验环境下,已安装了最新的CentOS 7.4操作系统,现在需要升级内核版本. 实验环境CentOS-7-x86_64-Minimal-1708.iso CentOS Linux release 7 ...

  4. 模块简介:(random)(xml,json,pickle,shelve)(time,datetime)(os,sys)(shutil)(pyYamal,configparser)(hashlib)

    Random模块: #!/usr/bin/env python #_*_encoding: utf-8_*_ import random print (random.random()) #0.6445 ...

  5. 【Python 17】B分R计算器1.0(数值类型)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...

  6. 【English 】20190319

     BOKO鼻子['boʊkoʊ] pores毛孔['pɔ:z] cute漂亮可爱[kjut] DEKO-BOKO pores don't make a girl cute! ideal最理想的[aɪˈ ...

  7. 浏览器各个版本和系统(chrome/safari/edge/qq/360)

    浏览器对象: let userAgent = navigator.userAgent.toLowerCase()console.log(userAgent) Edge: mozilla/5.0 (wi ...

  8. 勇者斗恶龙 uva 11292(简单贪心)

    思路:先将龙和士兵进行分别排序从小到大.然后,每次找当前最小龙的第一个大于它的骑手之后退出,开始下一个龙,重复上一次操作. #include<iostream> #include<a ...

  9. TabBar用到bottomNavigationBar

    import 'package:flutter/material.dart';import 'homepage.dart';import 'lastpage.dart';import 'secondp ...

  10. Codeforces Round 1153(div. 2)

    这场奇差.ABCD四题.179名. 但是E在现场有213个人做出. 描述一下我在35分钟做完D后的心路历程. 首先看到这道E,第一下想到的是把所有的横向和竖向的整列(行)求出相连的个数. 然后想如何能 ...