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

一、表机构补充图

二、用户信息表(UserProfile)

一、解决了什么问题python

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

二、代码运维

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

三、管理用户登陆表(Admininfo)

一、解决了什么问题日志

一、有些用户能够登陆有些不能够,因此要作一个表关联
二、一我的只能有一个用户名和密码
三、能登陆在这AdminInfo这张表,不能登陆的在UserProfile表里server

二、代码blog

class AdminInfo(models.Model):
    """
    用户登陆: 10
    """
    user = models.OneToOneField("UserProfile")
    username = models.CharField('用户名', max_length=32)
    password = models.CharField('密码', max_length=32)
	

四、服务器表

一、解决了什么问题博客

一、这个机器在那个机房?
二、属于哪一个部门,因此咱们要建立一个表,包含机房和部门
三、刚买回来的服务器没有部门,部门就是运维部,
四、部门和服务器是什么关系?
五、在小公司可能会出现服务器和业务线应该是多对多,可是有正规的有运维工程师的或者作运维自动化的公司,
 必定保证一个服务器只属于一个业务线
六、必需要用就写个多对多的话
 你说这台服务器要不要有管理员?要不要有业务负责人?业务线的负责人it

二、代码自动化

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)

五、业务线表(BusinessUnit)

一、解决了什么问题:class

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

二、代码

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

六、用户组表

一、待解决问题:

一、若是业务线联系人和运维管理人员联系不上怎么办?
二、因此咱们就设置2个,也就是备胎,因此我设置比较灵活我能够是一个也能够是两个
三、因此我再建一张表,直接再也不和UserProfile关联而是和UserGroup关联
四、这样咱们一我的一个组,也能够多个组一个组

二、代码

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

七、资产标签表

一、解决了什么问题

一、若是服务器多的话,我能够给它打个标签
二、就像咱们写博客的时候能够打多个标签
三、一台服务器能够打多个标签?和小米作了一次技术分享,他对每一台机器打多个标签
四、之后查找的时候能够经过几个关键字能进行快速的查找

二、代码

class Tag(models.Model):
    """
    资产标签
    """
    name = models.CharField('标签', max_length=32, unique=True)

    class Meta:
        verbose_name_plural = "标签表"

    def __str__(self):
        return self.name	

三、错误日志代码

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
相关文章
相关标签/搜索