精华内容
下载资源
问答
  • CPT系统输出电压与输入电压的关系模型建立,祝兵权,李中贵,介绍了非接触电能传输系统的基本原理,给出了一个非接触电能传输系统典型的电路,并介绍了该电路初级逆变电路的软开关实现方式,
  • 用户关系模型建立

    2020-02-09 19:32:41
    用户关系模型建立 上次我们搭建了环境,这次,我们创建用户表和超级管理员。 创建app(user) 我们cd到apps这个文件目录下,在ubantu的终端中打入命令django-admin startapp <appname>,一定要注意,打这个...

    用户关系模型的建立

    上次我们搭建了环境,这次,我们创建用户表和超级管理员。

    创建app(user)

    1. 我们cd到apps这个文件目录下,在ubantu的终端中打入命令django-admin startapp <appname>,一定要注意,打这个命令的时候有两个条件,**一个是在apps这个文件目录下,另一个就是用的专用的虚拟环境,**不然都创建不了app。
    2. 然后在生成的user中创建一个python文件,命名是urls。
    3. 在settings里面的INSTALLED_APPS里面注册app,就是把它的名字加上,然后,去主项目的urls里面,导入include这个方法,再将原来我们创建好的文件url拼接上去。

    注意,user app里面的urls必须是这样的格式:

    from django.urls import path
    from user import views
    app_name = 'user'
    urlpatterns = [
       
    ]
    

    不然就会报错。

    from django.urls import path,include
    
    urlpatterns = [
        # path('admin/', admin.site.urls),
        path('',include('user.urls')),
        # path('user/', include('user_m.urls')),
        # path('', include('verifications.urls')),
    ]
    
    

    models文件

    我们在models文件里面创建我们要的用户模型。

    用户模型我设计成两个,一个是普通用户,一个是超级用户。

    django自带用户模型,但是根据我们中国人的习惯,通常用手机号注册为主,邮箱是可有可无的,所以,我要改一下django的代码结构,变成我们想要的。

    所用到的类介绍

    先导入两个类

    from django.contrib.auth.models import AbstractUser,UserManager as _UserManager
    from django.db import models
    

    UserManager

        def create_superuser(self, username, email, password, **extra_fields):
            extra_fields.setdefault('is_staff', True)
            extra_fields.setdefault('is_superuser', True)
    
            if extra_fields.get('is_staff') is not True:
                raise ValueError('Superuser must have is_staff=True.')
            if extra_fields.get('is_superuser') is not True:
                raise ValueError('Superuser must have is_superuser=True.')
    
            return self._create_user(username, email, password, **extra_fields)
    

    在源码中,有一个create_superuser属性,这个是创建超级管理员,我们要将里面传参的email改成email=None使它默认为空,这样就可以了。同时,我们要初始化父类的方法,在models里面修改的代码如下:

    class UserManager(_UserManager):
        """
        define user manager for modifing 'no need email'
        when 'python manager.py createsuperuser '
    
        """
    
        def create_superuser(self, username, password, email=None, **extra_fields):#用原来的类去传递自身定义的参数
                super().create_superuser(username=username,password=password, email=email, **extra_fields)#继承了super的方法,创建
    

    AbstractUser

    源码:

    class AbstractUser(AbstractBaseUser, PermissionsMixin):
        """
        An abstract base class implementing a fully featured User model with
        admin-compliant permissions.
    
        Username and password are required. Other fields are optional.
        """
        username_validator = UnicodeUsernameValidator()
    
        username = models.CharField(
            _('username'),
            max_length=150,
            unique=True,
            help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
            validators=[username_validator],
            error_messages={
                'unique': _("A user with that username already exists."),
            },
        )
        first_name = models.CharField(_('first name'), max_length=30, blank=True)
        last_name = models.CharField(_('last name'), max_length=150, blank=True)
        email = models.EmailField(_('email address'), blank=True)
        is_staff = models.BooleanField(
            _('staff status'),
            default=False,
            help_text=_('Designates whether the user can log into this admin site.'),
        )
        is_active = models.BooleanField(
            _('active'),
            default=True,
            help_text=_(
                'Designates whether this user should be treated as active. '
                'Unselect this instead of deleting accounts.'
            ),
        )
        date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
    
        objects = UserManager()
    
        EMAIL_FIELD = 'email'
        USERNAME_FIELD = 'username'
        REQUIRED_FIELDS = ['email'] #这个要设置成你想要默认必须输入的参数。
    

    我们分析一下源码,这个源码里面包含了username并且它是唯一的,还有first_name,last_name,但是他们默认空白是可以的,就是那个blank=True参数。我们看最下面,有一个REQUIRED_FIELDS,这个就是我们要改的内容,我们先在代码中添加mobile字段,再把它在我们的代码中改成mobile,其它不动。

    代码如下:

    class User(AbstractUser):
    
        objects = UserManager()#创建一个代理管理器
    
        REQUIRED_FIELDS = ['mobile']#这个是必须要加上去的,不然会默认指定
        mobile = models.CharField(max_length=11,unique=True,verbose_name='手机号',help_text='手机号',error_messages={'unique':'此手机号已经注册'})
        email_ac = models.BooleanField(default=False,verbose_name='邮箱状态')
        class Meta:
            db_table = 'tb_users'
            verbose_name = '用户'
    
    
        def __str__(self):
            return self.username
    

    参数介绍

    help_text

    这个是帮助性文字,用来提示用户。

    error_messages

    是指定的报错信息,为之后注册的时候打下铺垫。给js用的。

    Meta

    这是一个抽象类,用来补充该类的参数,在生成模型的时候不会被实例化成对象。、

    db_table

    这个是给数据库中的模型取个别名,方便查看和管理,不然django会根据驼峰命名规则给你自动生成一个。

    verbose_name

    给Model去一个方便阅读的名字,这个是方便后台管理取得名字。

    最后

    当所有都做好之后,我们不能直接迁移,还需要最最最关键的一步,这一步没弄好,前面的都是瞎搞,这一步就是在settings文件里面,指定替换的用户模型类,在settings里面最好在最后,添加:

    AUTH_USER_MODEL = 'user.User'  # 指定替换的用户模型类,这个User就是我们的类名!!!
    

    然后在项目目录下在cmd中执行操作:

    # 先
    python manage.py makemigrations
    # 后
    python manage.py migrate
    

    第二种,直接在pycharm中Tools这一栏,点击 Run manage.py Task,然后直接先输入makemigrations,然后再输入migrate。最后查看数据库,会发现,多了很多的表,这些表是正常的,是django自带的用户系统,我们只需要查看我们的tb_users在不在里面就行。

    最后的最后,在刚刚开启的命令端输入,createsuperuser,创建我们第一个管理员吧。

    展开全文
  • 关键词关系模型,关系数据库,关系操作,完整性约束关系模型关系模型是目前最为重要的数据模型,关系数据库采用关系模型其数据的组织方式,关系模型建立在严格的数学概念之上。这是其他数据模型关系模型可以理解为一...

    关键词

    关系模型,关系数据库,关系操作,完整性约束

    关系模型

    关系模型是目前最为重要的数据模型,关系数据库采用关系模型其数据的组织方式,关系模型建立在严格的数学概念之上。这是其他数据模型

    关系模型可以理解为一组关系,其中的每一个关系的数据结构都是一张规范化的二维表。关系模型要求关系是规范化,规范化的最基本条件就是关系的每一个分量都必须是不可再分的数据项,通俗的说法就是不存在大表中嵌套小表。如图所示的表格就不符合关系模型的基本要求。

    2229ae6abd87

    不符合关系模型的工资表

    下面是关系模型的常用术语及形象理解:

    关系(Relation):一张表

    元组(Tuple):表的一行,记录

    属性(Attribute):表的一列

    码(Key,也叫键):属性组,可唯一确定一个元组

    域(Domain):属性的取值范围

    分量:元组中的一个属性值

    关系模式:对关系的描述,表头 如:学生(学号,姓名,性别,年龄,专业)

    下面是严格术语定义:

    域(Domain):域是一组具有相同数据类型值的集合。

    笛卡尔积(Cartesian Product):设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.

    关系模型的操作

    关系模型中的操作都是集合操作,操作的对象和操作结果都是关系。关系模型隐藏了操作的具体细节,存储路径对用户透明,用户只需要告知要找什么干什么即可。

    基本关系操作

    基本的关系操作可以分为查询(Query)和更新(Update)两大类,其中的更新可细分为插入(Insert)、修改(Update)、删除(Delegate)。

    关系的查询包括选择(Select)、投影(Project)、并(Union)、差(Except)、笛卡尔积(Cartesian Product),以及连接(Join)、除(Divide)、交(Intersection)等导出操作。

    关系数据语言分类

    关系数据语言分类可分为关系代数、关系演算、以及所谓的具有关系代数和关系演算双重特点的语言(如SQL)三大类。

    关系代数通过对关系的运算来表达查询,关系演算通过谓词来表达查询,而SQL则是集DDL、DML、DCL和查询于一体的结构化查询语言。

    关系模型的完整性约束

    关系的完整性约束包括三大类:

    实体完整性约束

    参照完整性约束

    用户定义完整性约束

    实体完整性约束

    实体完整性要求主属性不能为空,进一步的基本关系的主码也不能为空。

    实体在现实世界都是可区分的,也就是说实体具有某种唯一性的标识来区别它们自身,关系模型中主码就是唯一性标识,主码中的属性不能为空,若为空的话就说明有不可区分的实体。

    参照完整性约束

    外码

    一个关系模型A中的主码(可以是一个或者一组属性)对应于另外一个关系模型B中的一个或者一组属性,并且这个或者这组属性还不是关系模型B的码,则称且这个或者这组属性为关系模型B的的外码(Foreign Key)。关系模型B中的外码参照于关系模型A的主码。

    参照完整性的规则

    简单来说就是,外码可取空值(必须每个属性值均为空值)和非空值,取非空值时,外码必须存在于它参照的另外一个关系模型的主码中。

    严格的定义如下:

    若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每一个元组在F上的值必须为以下两种情况之一:

    情况一,取空值(F的每个属性值均为空);

    情况二,等于S中的某个元组的主码值。

    用户定义完整性约束

    用户定义完整性约束反映的是某一具体应用的数据所要满足的语义要求,用户定义完整性约束是针对某一具体关系数据库的约束条件。

    关系模型提供用户定义完整性约束可将各类验证和约束集中在一起统一处理,而不必将各种判断逻辑分散在具体的应用系统中。

    关系数据库

    支持关系模型的数据库就是关系数据库。

    其他数据模型有层次模型、网状模型、面向对象模型、对象关系模型等。 ↩

    展开全文
  • 路由器开启OSPF之后会和相邻路由器建立两种关系:邻居关系和邻接关系。邻居关系是路由器状态机停留在2way状态,邻接关系是路由器状态机达到full状态。一、成功建立邻居关系需要达到2way状态,说明路由器双方完成了...

    这个问题网上一搜答案一把,不过这里稍微增加一些细节内容。

    路由器开启OSPF之后会和相邻路由器建立两种关系:邻居关系和邻接关系。邻居关系是路由器状态机停留在2way状态,邻接关系是路由器状态机达到full状态。

    一、成功建立邻居关系需要达到2way状态,说明路由器双方完成了交互hello报文,而观察hello报文的头部字段即可知道路由器建立邻居关系的条件:

    1.router-id唯一

    2.区域号相同,如:同属area 0

    3.认证方式相同

    4.网络掩码相同

    5.hello报文的发送间隔时间相同

    6.路由器死亡时间间隔相同,一般是hello报文发送间隔的4倍

    还有一个比较特殊,即路由器优先级,在广播网络里,如果路由器的优先级都是0,说明路由器是DRother,而DRother之间只能达到2way状态即建立邻居关系,是不能达到full状态的,即不能建立邻接关系。

    二、达到2way状态后,路由器之间开始交互DD报文,而DD报文头部字段里有一项MTU,思科路由器是需要比较MTU的,如果两个路由器的MTU不同,是不能建立邻接关系的,只能停留在2way状态,而华为路由器之间是不比较MTU的。如果是思科路由器和华为路由器互联,MTU需要保持一致,否则不能建立邻接关系。

    刚开始学习OSPF时想到一个问题,如果两个路由器通过网线相连,而互联接口的地址一个配置为1.1.1.1,另一个配置为2.2.2.2,其他建立邻接关系需要的条件都满足,由于上面所述条件中并没有要求互联接口的地址必须在同一个子网里(当然实际上肯定是需要的),所以这种情况下到底能不能建立邻居关系和邻接关系呢,事实上肯定是不能建立的,那么到底为什么不能建立呢?你需要的条件我都满足了啊,问题到底出在哪里呢?于是通过实验做了一番研究。

    将互联接口地址配置为1.1.1.1/24和2.2.2.2/24并将网段发布出去之后,在链路上抓包,发现路由器之间可以正常发送hello报文,但仅此而已,连2way状态都没有达到,甚至init都没有。

    将2.2.2.2修改为1.1.1.2后再重新发布后可以正常建立邻接关系了,观察抓的包发现,发送DD报文前路由器会先发送一个ARP报文,进一步研究发现,原来hello包的目标地址是组播224.0.0.5,而DD包的目标地址是单播的,所以需要ARP解析来得到对端的MAC地址,但这应该并不影响邻居关系的建立,可是为什么刚才连2way状态都没有到呢?进一步想到OSPF报文是封装在IP报文内的,并进一步封装在数据链路层的,而数据链路层是以太网,以太网的本质是共享介质的,共享介质就要求路由器要在同一个子网下,路由器收到hello包,发现发送端源地址跟自己不在同一个子网 ,于是将hello包丢弃,所以是无法到达2way状态的。

    展开全文
  • 建立实体-关系模型1

    2021-04-12 23:20:10
    1、标识实体: 通常有用户、角色这两个实体。 2、标识关系: 用户与角色间为多对多的互相拥有关系。 3、标识实体、关系的属性: 不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在。 ...

    1、标识实体:
    通常有用户、角色这两个实体。
    2、标识关系:
    用户与角色间为多对多的互相拥有关系。
    3、标识实体、关系的属性:
    不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在。

    展开全文
  • 1.2.7 关系模型

    2019-05-23 14:02:27
    1.关系模型建立在严格的数学概念的基础上的,每个关系的数据结构是一张规范化的二维表。 2.关系:一个关系对应通常说的是一张表。 3.元组:表中的一行即为一个元组。 4.属性:表中的一列即为一个属性,给每一个...
  • 建立实体-关系模型4

    2021-04-13 23:26:57
    7、检查模型: (1)检查冗余 (2)检查业务
  • 关系模型

    2020-07-22 21:53:37
    关系模型 关系模型是最重要的一种数据模型。关系数据库系统采用关系模型作为数据的组织方式。 关系模式的数据结构 关系模式是建立在严格的数学概念的基础上的。从用户观点看,关系模式由一组关系组成。每个关系的...
  • 软岩硐室支护围岩作用关系分析模型建立,杨勇,张自政,通过分析硐室的特点、软岩的性质和软岩巷道围岩变形规律,根据软岩硐室常用的支护碹体与围岩的作用关系建立相应的分析模型,从而
  • 需要建立一个平台,因为涉及到表处理肯定需要进行ER关系图的设计:已知员工信息表中要记录内容如下:工号姓名部门帐套职位人员类型伙伴公司离职日期离职表出勤日期财务数据如下(分为应扣、实扣,未扣):自有资产...
  • 基于Kramers-Kronig关系建立金属太赫兹色散模型
  • 建立实体-关系模型(案例)

    千次阅读 2019-04-25 15:10:06
    不仅仅是实体有属性,关系同样也有属性,这些属性在实体间建立关系时才会存在。 有时属性太多,无法在图上一一列出,可以用表格,在后面的步骤中这个表格同样会用到,如下: 四、确定属性域   属性域就是属性的...
  • 关系模型是1970年由E.F.Codd提出的,用以表示实体和实体间...关系模型中的关系是建立在严格的理论基础上的,并且概念简单,数据结构单一,用户易于理解和操作。关系模型常见用途关系模型是数据库管理的专业名词,它...
  • E-R模型:一对一、一对多、多对多的关系,要建立关系也就是外键时,需要考虑下如何建关系 三范式: 1.列不可分;; 2.这一行中必须要有个数据可以区分出来就是唯一标识的作用; 3.某个表引用另外表的时候要有主键...
  • 关系型数据库设计是是建立关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型是由埃德加·科德于1970年首先...
  • CleverCode最近在熟悉公司的老业务,这就需要知道系统的表与表之间的关系,当表的...这里CleverCode推荐一个方式,很有效的曲梳理数据的模型关系--Navicat。 1Navicat下载 http://download.csdn.net/detail...
  • 一对多关系 多对一关系 多对多关系 一对一关系 一对多关系(一个作者,多篇文章) ## 一对多关系,单作者-多文章,外键不可少 ## 外键(ForeignKey)总在多的那边定义,关系(relationship)总在单的那边定义 class ...
  • 关系模型是关系数据库建立的基础,是在集合论中的关系概念的基础上发展起来的。主要是指用二维表的形式表示实体和实体间联系的数据模型。关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。在...
  • 关系模型的基本概念

    2020-05-24 14:25:28
    关系模型的基本概念关系模型简述关系模型研究的问题关系模型的三个要素一些数学描述的...4.标准的数据库语言(SQL语言)是建立关系模型基础之上的,数据库领域的众多理论也都是建立关系模型基础之上的。 关系模型
  • 关系模型之基本概念

    2020-03-21 15:19:24
    SQL是建立关系模型基础之上的 (2)关系模型的研究 关系模型就是处理表的 (3)关系模型的三要素 组成(三要素): 基本结构 基本操作 完整性约束 (4)关系模型与关系数据库语言的关系 关系运算 1.关系...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,049
精华内容 4,819
关键字:

关系模型建立