关系模型

Django框架之模型层 多表操作

て烟熏妆下的殇ゞ 提交于 2019-12-02 07:00:55
目录 一、多表关系 二、多表操作 2.1 分析多表关系 2.2 创建表 2.3 外键字段的增删改查 2.4 多对多字段的四个方法 三、跨表查询 3.1 子查询 3.2 连表查询 一、多表关系 回顾一下设置外键的sql语句: foreign key(外键字段) references 关联表(关联字段) 设置级联关系: on update cascade # 更新级联关系,要改一起改 on delete cascade # 删除历练关系,要死一起死 一对一 外键在任何一方都可以,但是尽量放在使用的次数多的一方,并设置字段唯一键, 一对多 外键放在多的一方,此时外键不唯一 多对多 一定要创建第三张表(关系表),每一个外键值不唯一,但可以多个外键建立联合唯一 二、多表操作 首先多表操作,应该在建表之前,就先设计好多表关系,然后再去创建表。 2.1 分析多表关系 需求:现在需要写一个图书管理的程序,需要设计表。如何设计 图书表 图书表包括(书名、价格、出版日期) 出版社表 出版社表包括(出版社名、地址) 作者简介表 作者简介表包括(作者名、年龄) 作者详情表 作者详情表包括(电话、地址) 一对一: 一个作者简介唯一对应作者详情表,一个作者详情也唯一对应作者简介 一对多: 一个图书对应唯一对应一个出版社,一个出版社可以对应多本书 多对多: 一个图书对应多个作者,一个作者也同样对应多本书 2.2

Django模型层之多表操作

我怕爱的太早我们不能终老 提交于 2019-12-02 06:57:11
Django模型层之多表操作 一 、表关系回顾 在讲解 MySQL 时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的 。 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号、姓名、部门名、部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名、部门职能),所以将会导致部门信息出现大量重复、浪费空间。 解决方法就是将数据存放于不同的表中,然后基于 foreign key 建立表之间的关联关系。 细说的话,表之间存在三种关系:多对一、一对一、多对多,那如何确定两张表之间的关系呢?按照下述步骤操作即可 左表<---------------------------------------------->右表 # 步骤一:先分析 # 分析1、先站在左表的角度 是否左表的多条记录可以对应右表的一条记录 # 分析2:再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录 # 步骤二:后确定关系 # 多对一 如果只有"分析1"成立,那么可以确定两张表的关系是:左表多对一右表,关联字段应该创建在左表中,然后foreign key 右表一个字段(通常是id) 如果只有"分析2"成立,那么可以确定两张表的关系是:右表多对一左表,关联字段应该创建在右表中,然后foreign key 左表一个字段(通常是id) #

Django模型层

孤人 提交于 2019-12-02 06:41:46
Django之模型层:单表操作 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle、Microsoft SQL Server等。 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库。 但是直接编写原生sql语句会存在两方面的问题,严重影响开发效率,如下 #1. sql语句的执行效率:应用开发程序员需要耗费一大部分精力去优化sql语句 #2. 数据库迁移:针对mysql开发的sql语句无法直接应用到oracle数据库上,一旦需要迁移数据库,便需要考虑跨平台问题 为了解决上述问题,django引入了ORM的概念,ORM全称Object Relational Mapping,即对象关系映射,是在pymysq之上又进行了一层封装,对于数据的操作,我们无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将其转换/映射成原生SQL然后交给pymysql执行。 原生SQL与ORM的对应关系如下: 如此,开发人员既不用再去考虑原生SQL的优化问题,也不用考虑数据库迁移的问题

Django 多表操作

北战南征 提交于 2019-12-02 06:25:25
Django 多表操作 一 表关系回顾 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的。 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号、姓名、部门名、部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名、部门职能),所以将会导致部门信息出现大量重复、浪费空间。 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系。 细说的话,表之间存在三种关系:多对一、一对一、多对多,那如何确定两张表之间的关系呢?按照下述步骤操作即可 左表<------------------------------->右表 # 步骤一:先分析 #分析1、先站在左表的角度 是否左表的多条记录可以对应右表的一条记录 #分析2、再站在右表的角度去找 是否右表的多条记录可以对应左表的一条记录 # 步骤二:后确定关系 # 多对一 如果只有"分析1"成立,那么可以确定两张表的关系是:左表多对一右表,关联字段应该创建在左表中,然后foreign key 右表一个字段(通常是id) 如果只有"分析2"成立,那么可以确定两张表的关系是:右表多对一左表,关联字段应该创建在右表中,然后foreign key 左表一个字段(通常是id) # 一对一 如果"分析1"和"分析2"都不成立

Hadoop、Hive、Spark 之间关系

做~自己de王妃 提交于 2019-12-01 18:14:09
Hadoop、Hive、Spark 之间关系 https://www.cnblogs.com/jins-note/p/9513426.html 很的很诙谐有趣. 作者:Xiaoyu Ma ,大数据工程师 大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。 大数据,首先你要能存的下大数据 传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。 存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大)

pytorch关系抽取实验

陌路散爱 提交于 2019-12-01 16:13:13
接前面笔记: 关系抽取总结 中最后说的,在关系抽取基于Distant Supervision的NYT+Freebase的数据集有两个版本,目前大部分文章都是在这两份数据集上做的。通过纵向实验发现,同一个模型在不同版本数据集上的表现有不少差异,这篇笔记是基于自己使用Pytorch复现的PCNN(Zeng 2015)与PCNN+ATT(Lin 2016)的实验结果来简单对比。 代码地址: pytorch-relation-extraction ,关于实现的细节,调参,踩过的一些坑等,会记录在readme中,这里不再赘述。 个人属于入门级别, 复现代码可能有问题, 结果供参考. 数据集 首先描述一下这两份数据集: 27类关系,Zeng2015 发布的数据集,做了一些过滤,如删除了两个实体之间距离大于40个词的句子,以及去掉了实例少的关系,相对较小,以SMALL表示:详细数据如下所示: 训练数据集: 实体对: 65726; 句子数: 112941; 关系数: 27 测试数据集: 实体对: 93574; 句子数: 152416 53类关系,Lin2016 发布的数据集,没有做过滤,相对较大,训练数据大概是小数据的4倍,以LARGE表示,详细如下: 训练数据集: 实体对: 281270; 句子数: 522611; 关系数: 53 测试数据集: 实体对: 96678; 句子数: 172448;

c++程序设计兼谈对象模型(介绍)

时光总嘲笑我的痴心妄想 提交于 2019-12-01 13:11:31
    主要介绍的内容为:泛型编程和面向对象编程 (1) 泛型编程和面向对象编程虽然分属于不同思维,但他们正是c++的技术主线,所以也将会记录template(模板) (2) 深入探索面向对象之继承关系所形成的对象模型,包括隐含与底层的this指针,vptr(虚指针),vtbl(虚表), virtual nechanism(虚机制)以及虚函数(virtual functions)造成的polymorphism(多态)效果。 来源: https://www.cnblogs.com/huahuati/p/11687768.html

(转)关系抽取之远程监督算法

天涯浪子 提交于 2019-12-01 10:08:12
一、 关系抽取综述 二、 远程监督关系抽取算法的滥觞 三、 多实例学习和分段最大池化 四、 句子级别的注意力机制 一、关系抽取综述   信息抽取是自然语言处理中非常重要的一块内容,包括实体抽取(命名实体识别,Named Entity Recognition)、关系抽取(Relation Extraction)和事件抽取(Event Extraction)。   这次介绍的关系抽取属于自然语言理解(NLU)的范畴,也是构建和扩展知识图谱的一种方法。   关系抽取理解起来也比较简单,比如下面图片中的第一句话:   He was in Tennessee.   首先做命名实体识别,识别出He(PER)和Tennessee(GPE)两个实体,然后找出两个实体之间的关系为:Physical-Located,最后可以把抽取出来的关系表示为三元组的形式:(He PER , Physical-Located, Tennessee GPE ),或者Physical-Located(He PER , Tennessee GPE )。   可见关系抽取包含命名实体识别在内,在技术实现上更复杂。   关系抽取从流程上,可以分为流水线式抽取(Pipline)和联合抽取(Joint Extraction)两种,流水线式抽取就是把关系抽取的任务分为两个步骤:首先做实体识别,再抽取出两个实体的关系

什么是数据库?什么是关系数据库?什么是非关系型数据库?

房东的猫 提交于 2019-11-30 23:02:09
本文内容: 什么是数据库 什么是关系数据库 什么是非关系型数据库 PS:虽然这些东西都是一些比较基础常识的东西,但为了记录自己的学习之路,也为了为以后的一些突发奇想留下“坑”,所以写下了这篇博文。 首发日期:2018-04-07 什么是数据库? 数据库是数据的仓库。 与普通的“数据仓库”不同的是,数据库依据“数据结构”来组织数据,因为“数据结构”,所以我们看到的数据是比较“条理化”的(比如不会跟以前的普通文件存储式存储成一个文件那么不条理化,我们的数据库分成一个个库,分成一个个表,分成一条条记录,这些记录是多么分明) 也因为其“数据结构”式,所以有极高的查找速率(比如B-Tree查找法),(由于专精,可以根据自己的结构特性来快速查找,所以对于数据库的查找会比较快捷;不像普通文件系统的“查找”那么通用) 如果与EXCEL来比的话,能明显的看出数据库的好处,我们能给一个个“字段”添加“约束”(比如约束一列的值不能为空) 数据库与普通的文件系统的主要区别(起因):数据库能快速查找对应的数据 常说的XX数据库,其实实质上是XX数据库管理系统。数据库管理系统是一个软件,是数据库管理的程序实现。 什么是关系型数据库? 关系型数据库是依据关系模型来创建的数据库。 所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型

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建立一对一的关系