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. 使用jquery实现选项卡切换效果

    几张简陋的框架效果图 页面加载时: 选项卡操作后: css样式: <style type="text/css"> *{margin:0px;padding:0px;} ...

  2. LeetCode算法题-Repeated String Match(Java实现)

    这是悦乐书的第289次更新,第307篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第156题(顺位题号是686).给定两个字符串A和B,找到A必须重复的最小次数,使得B是 ...

  3. LeetCode算法题-Next Greater Element I(Java实现)

    这是悦乐书的第244次更新,第257篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第111题(顺位题号是496).你有两个数组(没有重复)nums1和nums2,其中nu ...

  4. idea右键无法新建Java Class

    项目中新建目录之后,要在该目录下新增java Class文件,右键——>New发现无对应选项. 原因:新建目录之后需要设置目录作用,从而让idea识别. 方法:File-Project Stru ...

  5. poj 3090 Visible Lattice Points(离线打表)

    这是好久之前做过的题,算是在考察欧拉函数的定义吧. 先把欧拉函数讲好:其实欧拉函数还是有很多解读的.emmm,最基础同时最重要的算是,¢(n)表示范围(1, n-1)中与n互质的数的个数 好了,我把规 ...

  6. Cursor: Pin S Wait On X In The Top 5 Wait Events

    Wait Events , Posted in: Technical Track Tags: Group Blog Posts, Oracle, Technical Blog Lately, wait ...

  7. VS2017 安装Swagger初步认识

    1.安装NuGet包 2.配置 3.运行测试 参考博客:https://www.cnblogs.com/yilezhu/p/9241261.html 一 安装NuGet包 包名:Swashbuckle ...

  8. Foundation框架 - 结构体

    一.基础知识 如果要想使用 Foundation 框架的数据类型,那么包含它的主头文件就可以了.即 #import <Foundation/Foundation.h> 补充: Core F ...

  9. CCPC-Wannafly Winter Camp Day1部分题目解析

    Preface 最近恰好不知道做什么题,所以就按老叶要求做上面的比赛. 稍微看了下感觉难度适中,大部分题目偏向联赛难度,当然也有些题目打到了省选题的感觉(基本都是Div1的题) 这里就简单拿一些我做得 ...

  10. 在Web界面中实现Excel数据大量导入的处理方式

    在早期Bootstrap框架介绍中,我的随笔<结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传.预览.提交的导入Excel数据操作流程> ...