外键

Django基础之ORM多表操作

戏子无情 提交于 2019-11-30 19:31:16
一 创建模型 表和表之间的关系 一对一、多对一、多对多 ,用book表和publish表来想想关系,里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束。 实例:来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄。 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息。作者详情模型和作者模型之间是一对一的关系(one-to-one) 出版商模型:出版商有名称,所在城市以及email。 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系(one-to-many)。 模型建立如下: from django.db import models # Create your models here. class Author(models.Model): #比较常用的信息放到这个表里面 nid = models.AutoField(primary_key=True) name=models.CharField( max_length=32) age=models.IntegerField() # 与AuthorDetail建立一对一的关系

正确使用MySQL外键约束

半城伤御伤魂 提交于 2019-11-30 19:30:25
外键的作用是在多引 中可以有零到任意多个外钟双据之间建立关系,确保多个表之间数据的一致性、完整性。一个表 外键属于引用完整性,一个表的外键可以为空值,若不为空值,,则每一个外键值必须等于另 关系的数据行。 一个表中主键的某个值。 定义为外健用,不见件刷除在另一一个表中具有关联 外键约束中有两个名词,需要大家注意。 (1)主表(父表):对于两个具有关系的表而言,相关联的字段中主键所在表即为主态。 (2)从表(子 表):对于两个具有关系的表而言,相关联的字段中外键所在表即为从表。创建外键的语法如下: [CONSTRAINT外键名] FOREIGNKEY字段名1[字段名2...] REFERENCES主表名主键列1[主键列2..] 来源: https://www.cnblogs.com/kanyidao/p/11637482.html

模型层-多表操作

被刻印的时光 ゝ 提交于 2019-11-30 16:44:18
多表操作 多表操作一般会涉及到数据库中常见的3种关系 一对一 OneToOne 多对多 ManyToMany 一对多 ForeignKey 接下来就是对初始的模型的准备 模型表创建 以图书管理系统为例, 可以很好的展现上面的三种关系. from django.db import models class Book(models.Model): name = models.CharField(max_length=32) price = models.FloatField() pub_time = models.DateField(auto_now_add=True) publish = models.ForeignKey(to='Publish') authors = models.ManyToManyField(to='Author') def __str__(self): return self.name class Publish(models.Model): name = models.CharField(max_length=32) addr = models.CharField(max_length=32) pub_detail = models.OneToOneField(to='PublishDetail') def __str__(self): return

Entity Framework Code First添加修改及删除单独实体

穿精又带淫゛_ 提交于 2019-11-30 16:11:42
1、添加新的实体    Entity Framework Code First添加新的实体通过调用DbSet.Add()方法来实现。 using (var ctx = new PortalContext()) { var province = new Province { ProvinceNo = "100000", ProvinceName = "测试" }; ctx.Provinces.Add(province); ctx.SaveChanges(); }   代码运行所执行的SQL语句: exec sp_executesql N'insert [dbo].[Province]([ProvinceNo], [ProvinceName]) values (@0, @1) select [ProvinceID] from [dbo].[Province] where @@ROWCOUNT > 0 and [ProvinceID] = scope_identity()',N'@0 nvarchar(10),@1 nvarchar(50)',@0=N'100000',@1=N'测试'   2、修改实体   修改数据库中已经存在的实体记录: using (var ctx = new PortalContext()) { var province = ctx.Provinces.Find

Python学习day45-数据库(总结)

天涯浪子 提交于 2019-11-30 15:04:05
/*--> */ /*--> */ Python学习day45-数据库(总结) 数据库的概念 用户 基本操作 MySQL支持的数据类型 MySQL的约束条件 多表关系 单表与多表查询 多表的连接方式 子查询 视图View 事务 Python学习day45-数据库(总结) 今天正式结束数据库的学习,对于之前几天的内容进行一下总结,以及一些小的扩展. 数据库的概念 xxxxxxxxxx 12 1 ''' 2 数据库:, 3 之前我们了解过,数据库主要包括库(文件夹),表(表结构文件,表数据文件,也就是索引结构),字段(数据的描述),记录(记录的本体) 4 5 关于数据库的分类: 6 对其进行分类主要是效率有区别,分类的标准通常是 7 1. 内存或者硬盘,也就是运行的区域 8 2. 关系或者非关系,即数据库里面表之间的关系 9 3. 存储方式,sql或者key-value的方式 10 数据库的基本连接: 11 即mysql -h地址 -P 端口 -u 用户名 -p密码 12 ''' 用户 xxxxxxxxxx 5 1 ''' 2 用户的操作主要在于数据库对永无的创建以及赋予权限,比如: 3 grant 权限们 on 数据库表.表名 to 用户名@主机名 identified by '密码'; 4 另外一些比较基本的操作可以查看前面day41的博客 5 ''' 基本操作

day22数据库

送分小仙女□ 提交于 2019-11-30 12:50:33
数据库 基本概念 数据库:长期存储在计算机内的,有组织的,可共享的数据集合。数据库中的数据按一定的数据模型组织。描述和存储,具有较小的冗余度。较高的数据独立性和已扩散性病可为各个用户共享。 数据库管理系统,主要功能包括: 数据定义功能 数据操纵功能 数据库运行管理 数据库的建立和维护功能 数据库系统:一般由数据库,数据库管理系统,应用系统,数据库管理员,用户。DB,DBMS,application,admin,user 模型 概念模型:也称信息模型,它是按用户的观点对数据和信息建模,主要用于数据库设计 数据模型:按照计算机系统的观点对数据建模,主要用于DBMS的实现。包括网状模型,层次模型 总结:如果实体和实体是一对一的关系,外键随便放在哪个实体上,。如果实体和实体之间是一对多的关系,外键放在多的实体上面。如果实体和实体之间存在多对多的关系,再建一个关系实体。 数据库建模:如何将现实生活中的数据存储到数据库中。 概念模型ER图。将实体和关系理清。 逻辑模型,确定主键和外键,主键是唯一的标识,外键表明与其他实体之间的关系 以二维表存储数据的数据库称为关系型数据库。 工厂(工厂号,厂名,厂长名 车间(车间号,车间主任姓名,地址,电话,工厂号 工人(职工号,姓名,年龄,性别,工种,车间号 产品(产品号,价格,车间号,仓库号 零件(零件号,重量,价格,仓库号 仓库(仓库号,仓库主任姓名

ModelSerializer 使用知识点_serializers.SerializerMethodField()使用场景总结

半腔热情 提交于 2019-11-30 12:26:48
serializers.SerializerMethodField和钩子方法结合,可以实现对ModelSerializer类的一些字段进行二次加工,返回,如下:1、对以ModelSerializer的类为外键数据进行处理 model如下: A、Project class Project(models.Model): """ 项目表 """ id = models.AutoField(primary_key=True) name = models.CharField(max_length=50, verbose_name='项目名称') version = models.CharField(max_length=50, verbose_name='版本') description = models.CharField(max_length=1024, blank=True, null=True, verbose_name='描述') status = models.BooleanField(default=True, verbose_name='状态') LastUpdateTime = models.DateTimeField(auto_now=True, verbose_name='最近修改时间') createTime = models.DateTimeField(auto

数据库基础(3)

 ̄綄美尐妖づ 提交于 2019-11-30 11:52:45
目录 今日内容 字段操作 多表关系 外键 一对一:无级联关系 一对一:有级联关系 一对多 多对多 今日内容 1.字段的修改,添加,删除 2.各表关系(外键) 3.单表详细操作:增删改,查(各种条件) 字段操作 mysql>: create table tf1( id int primary key auto_increment, x int, y int ); # 修改 mysql>: alter table tf1 modify x char(4) default ''; mysql>: alter table tf1 change y m char(4) default ''; # 增加 mysql>: alter table 表名 add 字段名 类型[(长度) 约束]; # 末尾 eg>: alter table tf1 add z int unsigned; mysql>: alter table 表名 add 字段名 类型[(长度) 约束] first; # 首位 eg>: alter table tf1 add a int unsigned first; mysql>: alter table 表名 add 字段名 类型[(长度) 约束] after 旧字段名; # 某字段后 eg>: alter table tf1 add xx int unsigned after

mysql多表关系

房东的猫 提交于 2019-11-30 10:58:29
mysql多表关系 多表关系是关系型数据库特有的 三种关系 一对一关系 一对多关系 多对多关系 总结 一对一 例子:用户和用户信息 外键设置在用户上,外键字段唯一非空 添加 无级联:先增加被关联表记录(用户信息表),再增加关联表记录(用户表) 级联:相同 删除 无级联:先删除关联表记录,再删除被关联表记录 级联:可以直接先删除被关联的记录,直接删除两张表 修改 无级联:关联与被关联表都无法完成 关联的外键和主键 数据更新 - (如果被关联表记录没有被绑定,可以修改) 级联:可以直接修改 detail_id int unique not null, foreign key(detail_id) references author_detail(id) on update cascade on delete cascade 一对多 例子:购物车和商品 外键必须放在多的一方(商品),此刻外键不唯一 添加 无级联:先增加被关联表记录(购物车),再增加关联表记录(商品) 级联:相同 删除 无级联:先删除关联表记录,再删除被关联表记录 级联:可以直接先删除被关联的记录,直接删除相关联的所有表 修改 无级联:关联与被关联表都无法完成 关联的外键和主键 数据更新 - (如果被关联表记录没有被绑定,可以修改) 级联:可以直接修改,并修改相关联的表 author_id int, foreign key

ER图是啥?

☆樱花仙子☆ 提交于 2019-11-30 07:23:47
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。 用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1,1:n或m:n)。 实体联系模型,是概念数据模型的高层描述所使用的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号。 下面是一个最常见的ER图,基本上只要讲解ER图就会碰到它。 通俗的讲,ER图是把现实生活中的各种关系,以图片的形式,抽象出来,形成一个思维导图,通过ER图可以了解现实中的各种关系,比如一个班有很多学生组成。 ER图的应用,最最难的地方我觉得是抽象思维能力,你需要把现实生活中各种关系映射到大脑里面,然后以ER图的形式输出可分析和可视化的东西。 通过实例来拆解ER图 一、学校里的那点事儿 现实生活 一个班级有N多的学生组成,每个班级有一个班级号,每一名学生有一个学号;学生可以根据自己的兴趣爱好选修课程,对于选修的课程需要考试,然后出成绩有学分;一名老师可以教授几门课程。 ER图 通过现实的描述分解出几个实体,分别为班级、学生、课程、教师。出现了几组关系