外键

第三篇:Django的路由系统

守給你的承諾、 提交于 2020-01-08 20:00:26
目录 表关系的创建 Django的表关系建立 Django 请求生命周期流程图 Django 的路由系统 URL conf配置 基本格式 正则表达式 无名分组 有名分组 反向解析 无名分组反向解析 有名分组反向解析 伪代码诠释 路由分发 名称空间(了解) 虚拟环境 Django 版本区别 伪静态 表关系的创建 表与表之间的关系:一对一,一对多,多对多 如何判断表与表之间的关系? 换位思考的角度去考虑 以图书管理系统为例: 图书表 图书和出版社是一对多的外键关系 一对多的外键关系,外键字段建立在使用频率多的一方 出版社表 作者表 图书与作者是多对多的外键关系 多对多的外键关系,外键字段无论建在哪张表里面都可以 但是推荐建立在查询频率比较高的那张表中 作者详情表 作者与作者详情表是一对一的外键关系 一对一的外键关系 外键字段建在哪张表里面都可以 但是推荐建立在使用频率较高的那张表中 外键建立使用频率较高的一方,方便我们后面基于orm查询 Django的表关系建立 会将字段名和另外一张表的主键字段自动关联起来,建立起外键关系 一对多: 字段名 = models.Foreignkey(to='表名') 多对多: 字段名 = models.ManyToManyField(to='表名') 一对一: 字段名 = models.OneToOneField(to='表名') ForeignKey

MySQL 超键 候选键 主键 外键是什么

十年热恋 提交于 2020-01-08 17:40:00
搬运出处: https://github.com/0voice/interview_internal_reference 超键(super key) : 在关系中能唯一标识元组的属性集称为关系模式的超键 候选键(candidate key) : 不含有多余属性的超键称为候选键。也就是在候选键中,若再删除属性,就不是键了! 主键(primary key) : 用户选作元组标识的一个候选键程序主键 外键(foreign key) :如果关系模式R中属性K是其它模式的主键,那么k在模式R中称为外键。 举例 比如有如下数据: | 学号 | 姓名 | 性别 | 年龄 | 系别 | 专业 |:---: |:---: |:---: |:---: |:---: |:---: | 20020612 | 李辉 | 男 |20 |计算机 |软件开发 |20060613 | 张明 | 男 |18 |计算机 |软件开发 |20060614 | 王小玉 | 女 |19 |物理 |力学 |20060615 | 李淑华 | 女 |17 |生物 |动物学 |20060616 | 赵静 | 男 |21 |化学 |食品化学 |20060617 | 赵静 | 女 |20 |生物 |植物学 超键 在关系中能唯一标识元组的属性集称为关系模式的超键。 于是我们从例子中可以发现 学号是标识学生实体的唯一标识

SQLServer根据表明查询表的外键关系

依然范特西╮ 提交于 2020-01-08 13:33:38
SELECT 主键列ID=b.rkey ,主键列名=(SELECT name FROM syscolumns WHERE colid=b.rkey AND id=b.rkeyid) ,外键表ID=b.fkeyid ,外键表名称=object_name(b.fkeyid) ,外键列ID=b.fkey ,外键列名=(SELECT name FROM syscolumns WHERE colid=b.fkey AND id=b.fkeyid) ,级联更新=ObjectProperty(a.id,'CnstIsUpdateCascade') ,级联删除=ObjectProperty(a.id,'CnstIsDeleteCascade') FROM sysobjects a join sysforeignkeys b on a.id=b.constid join sysobjects c on a.parent_obj=c.id where a.xtype='f' AND c.xtype='U' and object_name(b.rkeyid)='TABLE_PMD_TPP_TRAITS' 来源: https://www.cnblogs.com/xtjatswc/p/12165912.html

MySQL之外键约束(FOREIGN KEY)

自古美人都是妖i 提交于 2020-01-07 12:45:29
定义: MySQL外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。 外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键的值必须等于另一个表中主键的某个值。 外键是表的一个字段,不是本表的主键,但对应另一个表的主键。定义外键后,不允许删除另一个表中具有关联关系的行。 外键的主要作用是保持数据的一致性、完整性。 例如,部门表 tb_dept 的主键是 id,在员工表 tb_emp5 中有一个键 deptId 与这个 id 关联。 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表。 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的表就是从表。 外键约束字段的选取: 定义一个外键时,需要遵守下列规则: 父表必须已经存在于数据库中,或者是当前正在创建的表。如果是后一种情况,则父表与子表是同一个表,这样的表称为自参照表,这种结构称为自参照完整性。 必须为父表定义主键。 主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的。 在父表的表名后面指定列名或列名的组合。这个列或列的组合必须是父表的主键或候选键。 外键中列的数目必须和父表的主键中列的数目相同。

django基础

拈花ヽ惹草 提交于 2020-01-06 20:53:26
目录 django基础 django orm表关系创建 多表创建的三种形式 以图书管理管理系统为例可分为几种表 方便我们后面的基于orm查询 django 请求生命周期流程图 路由层 路由匹配 无名分组 分组就是给一段正则表达式加括号 有名分组 反向解析 无名分组反向解析 有名分组反向解析 路由分发 1.总路由 2.子路由 名称空间(了解) 虚拟环境 如何创建虚拟环境 django版本区别 路由层 正则表达式的回顾 伪静态 视图层 JsonResponse form 表单上传文件 后端如何获取 django基础 django orm表关系创建 多表创建的三种形式 一对多 多对多 一对一 以图书管理管理系统为例可分为几种表 图书表 图书和出版社是一对多的外键关系,一对多外键关系,外键字段建在多的一方。 出版社 出版社和图书表是一对多的外键关系 作者表 图书与作者是多对多外键关系 多对多外键关系 外键字段无论建在哪张表里面都可以 但是推荐你建在查询频率较高的那种表中 作者与作者详情是一对一的外键关系 一对一外键关系 外键字段建在哪张表里面都可以 但是推荐你建在查询频率较高的那种表中 方便我们后面的基于orm查询 注意: ForeignKey字段以及OneToOneField字段 在创建表的时候orm都会自动给该字段加_id的后缀,无论自己有没有加,都默认给你加上。 在书写表关系时

MySQL键值

好久不见. 提交于 2020-01-04 09:47:29
键值的种类:普通索引/唯一索引/主键/外键/全文索引 作用:限制字段赋值 1.普通索引index 索引:作用是给字段的值排队,类似于书的目录 1)使用规则: 一个表中可以有多个index字段 字段的值允许重复,且可以赋NULL值 通常把作为查询的字段设置为index字段 index字段的标志是MUL 2)查看:show index from 库.表; 3)创建:create table 表名( … , index(字段名) ); //建表时创建索引 create index 索引名 表(字段); //为已存在的表创建索引 4)删除:drop index 索引名 on 表; 2.主键 primary key 给字段的值排序的同时会限制字段赋值 1)使用规则: 字段值不允许重复且不允许赋NULL值 一个表中只能有一个primary key字段 多个字段都作为主键,称为复合主键,必须一起创建 主键字段的标志PRI 主键通常与auto_increment连用 通常把表中唯一标识记录的字段设置为主键 2)查看 3)创建:primary key(字段名) create table 表 ( 字段 类型(宽度) primary key , 字段2 ... ); //建表时创建主键 alter table 表 add primary key(字段名); //在已有表添加主键 4)删除 alter

外键关联两张表失败

筅森魡賤 提交于 2020-01-03 09:52:50
mysql外键关联失败 mysql命令窗口中,创建两张已建立的表的外键关联出现错误 百度了很多,都说可能的错误原因有三个 1、字段名字错了 2、字段数据类型或长度不一样 3、编码不同 查看表结构 但是我查看表结构,发现都是一样的 最后把从表的列设为主键后关联成功 被关联表的字段要设置为主键才能关联 来源: CSDN 作者: 刘相坤-以书会友 链接: https://blog.csdn.net/Kevin1906/article/details/103802212

day3 mysql

老子叫甜甜 提交于 2020-01-03 08:13:37
改变表里面的字段顺序,类型 modify 关键字 first 后面不能加字段 ,要移的字段要写明类型 after 后面可以加字段 要移动的字段要写明类型 change 关键字可以实现改字段名称,类型 ,格式是新的字段需要指明类型,就字段不指明类型。 改表名 alter ,rename add 增加字段 删除字段 不能指明字段类型 插入不完整的数据 改变表里面的内容 update 表名 set update ccc set id=5 where age1=30; 约束 unsigned 无符号 数字类型插入负数不报错,但是显示不出来 主键约束 primary key auto_increment auto_increment 就是修饰主键的 default unique key 唯一约束 字段里面的数据不能重复,是唯一的 foreign key 外键 有外键的表叫做从表 ---关联表 没有外键的表是主表 ---被关联表 清空表区分delete和truncate的区别: delete from t1; 如果有自增id,新增的数据,仍然是以删除前的最后一行作为起始。 truncate table t1; 数据量大,删除速度比上一条快,且直接从零开始。 来源: https://www.cnblogs.com/Darry-Ring/p/12143027.html

Hibernate映射解析——七种映射关系

不打扰是莪最后的温柔 提交于 2020-01-02 03:54:29
首先我们了解一个名词ORM,全称是( Object Relational Mapping ),即对象关系映射。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。Hibernate正是实现了这种思想,达到了方便开发人员以面向对象的思想来实现对数据库的操作。 Hibernate在实现ORM功能的时候主要用到的文件有:映射类(*.java)、映射文件(*.hbm.xml)和数据库配置文件(*.properties/*.cfg.xml),它们各自的作用如下。 映射类 (*.java):它是描述数据库表的结构,表中的字段在类中被描述成属性,将来就可以实现把表中的记录映射成为该类的对象了。 映射文件(*.hbm.xml) :它是指定数据库表和映射类之间的关系,包括映射类和数据库表的对应关系、表字段和类属性类型的对应关系以及表字段和类属性名称的对应关系等。 数据库配置文件(*.properties/*.cfg.xml) :它是指定与数据库连接时需要的连接信息,比如连接哪种数据库、登录数据库的用户名、登录密码以及连接字符串等。当然还可以把映射类的地址映射信息放在这里。 接下来让我们就一起走进Hibernate的七种映射关系: 1、 单向一对一关联映射(one-to-one): 两个对象之间一对的关系,例如:Person

hibernate关系映射

一个人想着一个人 提交于 2020-01-02 03:53:26
对象之间的关系 1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 下列关系之一时,数据库表该如何映射,编程上该如何对待(红色为重点) 2 简化问题:   a) 怎么写 Annotation   b)增删改査CRUD怎么写 3 —对一   a)单向(主键、外键)   b)双向(主键、外键)   c)中间表 4—对多   a)一张主表,多张子表 5 组件映射   a)@Embeddable   b)@ Embedded 一对一关联 1 一对一单向外键关联   a)项目名称:hibernate_0600_one2one_uni_fk   b)Annotation: 在被约束表字段的get方法上加@0ne20ne @JoinColumn   @OneToOne @JoinColumn(name="wifeid") //指定生成的数据库字段名 public Wife getWife() { return wife; }   c)xml: 在被约束表的xml配置文件中加<many-to-one unique   <class name="com.bjsxt.pojo.StuIdCard">    <id name="id">   <generator class="native"></generator>   </id>   <property