首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么外键在理论上比在实践中更多?

外键在理论上比在实践中更多的原因是,在理论上,外键是一种数据完整性约束,它可以确保数据之间的关联性和一致性。而在实践中,外键的使用却受到一些限制,例如性能问题、数据库设计的复杂性等。

在数据库设计中,外键是一种约束,它可以确保数据的一致性和完整性。外键是一个表中的一列或多列,它引用了另一个表中的主键。外键可以确保在一个表中的数据与另一个表中的数据相关联,从而提高数据的一致性和可靠性。

然而,在实际应用中,外键的使用也存在一些问题。首先,外键可能会导致性能问题,因为它们需要在多个表之间进行联接操作,这可能会导致查询速度变慢。其次,外键也可能会增加数据库设计的复杂性,因为需要考虑多个表之间的关系。

总之,外键在理论上比在实践中更多,是因为它们可以确保数据的一致性和完整性,但在实际应用中,它们也存在一些限制和问题。

相关搜索:使用Sequelize的一对多关系会创建比预期更多的外键为什么在keras中CuDNNLSTM比LSTM有更多的参数?为什么在Laravel 5.8中创建外键失败?为什么我在SQLite中的外键损坏了?为什么我在phoenix测试中得到这个外键错误?为什么在配置单元中,orc文件比parquet文件消耗更多的空间?为什么在发布外键时获取空值(当我在seializers中使用slugrelatedfield获取外键作为字符串而不是整数时)为什么在Django中保存模型表单时会出现“外键不匹配”?为什么在java8中执行器服务比顺序操作花费更多的时间?为什么在psql (rails应用程序)中没有添加复合主键作为外键?为什么在尝试创建带有外键的模型实例时会收到django错误?为什么'Django Migrate‘在添加null=True时重新创建外键约束?为什么在Java中,原始数据类型比引用数据类型消耗更多的内存?为什么在表单提交时django中给出字段错误的表单有外键为什么Entity Framework总是在迁移时创建一个额外的外键列?在PostgreSQL 10中,为什么可延迟约束的pgplsql异常处理不能捕获外键冲突错误?为什么可以在H.264中使用BT.709来表示比BT.601更多的颜色?外键在MySQL中不起作用:为什么我可以插入不在外部列中的值?为什么在django admin中,外键显示属性值,而在angular和数据库中,它返回id?请问任何人为什么解释在SQL Server 2005中删除和重新创建存储过程会导致比预期更多的初始减速?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为编码器的实现计算整数范围

之所以说非常相似,因为在有损编解码器中,最终输出的图片中会有一些小的过冲和欠冲,这就是为什么大多数视频编解码器在其处理的最后一步包括一个削波阶段。但本文忽略这一点,更加关注编解码器内部。...数学分析的整数范围上界 但是,在实践中也无法使用这种技术来计算整数范围,因为这意味着使用了真正需要的大得多的整数范围。浪费硬件,浪费能源,浪费性能。...事实上,这些数值在实践中也基本相同,因为大部分处理是以完全线性的方式进行的,这意味着理论上限值实际上是所需比特数的精确值。 解码器 当涉及到解码器时,事情就不那么简单了。...这种方法是基于以下观察: 创建解码器测试模式,观察能量泄露 目标像素是涉及一系列输入像素的计算结果,正常情况下,当这些值到达目标输出时,除了相应的输入像素,其他的都被抵消。...如果把测试模式解码器中产生的信号水平绘制出来,你可以立即看到,产生的信号水平先前测量的任何自然图像都要大得多。

50820

SQL还好用,又一门国产数据库语言诞生了「建议收藏」

算法 3) 数据表对有序 4) 大表作为表的连接 一、数据库语言的目标   要说清这个目标,先要理解数据库是做什么的。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL也就是关系代数理论上发展出来的形式语言。   现在我们能回答,为什么SQL期望的两个方面做得不够好?...4) 大表作为表的连接   大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做HASH分堆动作。...除了理论上的差异, SPL还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。   ...这里还有更多SPL代码以体现其思路及大数据算法: 性能优化技巧:遍历复用提速多次分组 性能优化技巧:TopN 性能优化技巧:预关联 性能优化技巧:部分预关联 性能优化技巧:序号化 性能优化技巧:维表过滤或计算时的关联

41220
  • SEO辩论,如何在团队内部可以言之凿凿?

    2.链建设 ①一个链页面有几条链比较合适呢? 答:从理论上讲,一个页面可以有无数条链,但实际当中我们应该考虑页面在网站中的重要程度,并且考虑整个网站的。...②不同的链形式之间有什么比例吗? 答:链形式包括锚文本、超链接、纯文本,一般来说比较常见的说法是2:3:5,实际的操作当中,这并不是必须的,只要不偏向于某种单一类型即可。...③做链首页、内页是多少,为什么? 答:一般的网站来讲,链的比例是首页3,内页7比较合适,但这只是预估,因为网站内部都是不同的,首页比例低是因为,过高的比例会提高首页被k的几率。...答:如果具备网站模板开发能力,是可以通过制作模板并且免费下载,模板中留下链的,通常不用隐藏链,免费使用者也不会有异议。 3.页面优化 ①为什么要定期更新关键词库?...答:这是一个非常有必要的策略,它可以提高整站的活跃度,并且创建大量潜在搜索需求的内容,覆盖到更多我们忽略的词。 ③在做SEO的时候,你需要考虑分页页面的访问深度吗?

    55120

    Apache Spark大数据处理 - 性能分析(实例)

    内存中处理要慢得多,而且在这里经常出现性能瓶颈。 在理论上 分区 为了跨集群分配工作并减少每个节点的内存需求,Spark将数据分割为称为分区的更小的部分。...数据偏斜(Data Skew) 通常,数据会根据一个被分割成多个分区,例如一个名称的第一个字母。如果值整个中分布不均匀,那么将会有更多的数据被放置一个分区中。...在实践中 为了分割数据,我们将添加一个列,该列将开始日期转换为一周中的一天、工作日,然后添加一个布尔列,以确定这一天是周末还是周末。数据也需要一些清理,以消除错误的开始日期和持续时间。...许多非常小的分区中,只有两个分区占用任何重要的执行时间,即使两个较大的分区之间,处理也不是平均分割的,如果有什么区别的话,它们的比率大约是52。...为什么? 在这种情况下,之所以会发生这种情况,是因为调用repartition将同一的所有值移动到同一执行程序上的同一个分区中。

    1.7K30

    SQL还好用,又一门国产数据库语言诞生了

    然而,SQL描述计算任务时,却很难说是很胜任的。 SQL为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL也就是关系代数理论上发展出来的形式语言。 现在我们能回答,为什么SQL期望的两个方面做得不够好?...4)大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做HASH分堆动作。...事实表也很大时,可以将表用分位点分成多个逻辑段,再将事实表按逻辑段进行分堆,这样只需要对一个表做分堆,而且分堆过程中不会出现HASH分堆时的可能出现的二次分堆,计算复杂度能大幅下降。...除了理论上的差异, SPL还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。

    41210

    写着简单跑得又快的数据库语言 SPL

    然而,SQL 描述计算任务时,却很难说是很胜任的。 SQL为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL 也就是关系代数理论上发展出来的形式语言。现在我们能回答,为什么 SQL 期望的两个方面做得不够好?...4) 大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做 HASH 分堆动作。...除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。再把前面的问题用 SPL 重写一遍有个直接感受。...这里还有更多 SPL 代码以体现其思路及大数据算法: 性能优化技巧:遍历复用提速多次分组性能优化技巧:TopN性能优化技巧:预关联性能优化技巧:部分预关联性能优化技巧:序号化性能优化技巧:维表过滤或计算时的关联性能优化技巧

    81020

    SQL还好用,又一门国产数据库语言诞生了

    然而,SQL 描述计算任务时,却很难说是很胜任的。 SQL为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL 也就是关系代数理论上发展出来的形式语言。 现在我们能回答,为什么 SQL 期望的两个方面做得不够好?...4) 大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做 HASH 分堆动作。...除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。 再把前面的问题用 SPL 重写一遍有个直接感受。...这里还有更多 SPL 代码以体现其思路及大数据算法: 性能优化技巧:遍历复用提速多次分组 性能优化技巧:TopN 性能优化技巧:预关联 性能优化技巧:部分预关联 性能优化技巧:序号化 性能优化技巧

    47310

    SQL还好用,又一门国产数据库语言诞生了

    然而,SQL 描述计算任务时,却很难说是很胜任的。 SQL为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL 也就是关系代数理论上发展出来的形式语言。 现在我们能回答,为什么 SQL 期望的两个方面做得不够好?...4) 大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做 HASH 分堆动作。...除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。 再把前面的问题用 SPL 重写一遍有个直接感受。...这里还有更多 SPL 代码以体现其思路及大数据算法: 性能优化技巧:遍历复用提速多次分组 性能优化技巧:TopN 性能优化技巧:预关联 性能优化技巧:部分预关联 性能优化技巧:序号化 性能优化技巧

    28610

    生化小课 | 蛋白质的构象主要是通过弱相互作用来稳定的

    一个给定的多肽链理论上可以假定无数构象,因此,蛋白质的未折叠状态具有高度的构象熵。这种熵以及多肽链中许多基团与溶剂(水)之间的氢键相互作用,导致维持未折叠状态。...化学相互作用可以抵消这些影响并稳定天然构象,包括二硫(共价)以及第二章中描述的弱(非共价)相互作用和力,如氢键、疏水效应和离子相互作用。 共价二硫很强,但也不常见。...细胞,环境往往氧化性更强,更容易形成二硫化物。真核生物中,二硫主要存在于分泌的细胞蛋白质中(例如激素胰岛素)。二硫细菌蛋白质中也不常见。...断裂一个共价大约需要200到460 kJ/mol,而弱相互作用只需要0.4到30 kJ/mol就能断裂。单独的共价,如连接单个多肽链的不同部分的二硫,显然单独的弱相互作用强得多。...因此,我们必须从其他地方去理解为什么一种特定的天然构象受到青睐。

    98160

    浅谈数据库主键策略

    因为主键的第二个作用是让其他表的引用自己,从而实现关系结构。一旦某个表的主键发生了变化,就会导致所有引用了该表的数据必须全部修改。...很多Web应用的数据库并不是强约束(仅仅引用主键但并没有设置约束),修改主键会导致数据完整性直接被破坏。 业务字段不可用于主键 所有涉及到业务的字段,无论它看上去是否唯一,都决不能用作主键。...为什么? 我们先看使用整数的问题。 使用整数有两个选择:数据库自增和自己生成。 自己生成其实也是自增,无非就是把上次使用的值保存到某个地方,下次使用的时候继续自增。...举个例子,用户表采用自增主键,只需要每周一早上去注册一个用户,把上周注册的ID和本周注册的ID一,立刻就知道了该公司一周的新增用户数量。...理论上来说是可行的,因为时间戳0xffffffff可以表示到2100年。

    1.5K100

    软件开发:计算机最大数字进制讨论

    计算机科学中,讨论“最大进制”这个概念是非常有趣的。许多人可能认为十六进制是计算机中使用的最大进制,但实际上,理论上计算机可以使用任何进制来表示和处理数据。...本文中,我们将探讨进制的概念,以及为什么十六进制计算机中如此普遍,并且还会讨论更高进制的可能性和应用。 进制基础 进制,或称为数制,是数的表示方式的基础。它决定了数值是如何计算和表示的。...为什么计算机使用十六进制 计算机使用二进制来处理所有的数据和操作,因为物理层面上,计算机处理二进制数据(电子开或关)更为简单和可靠。十六进制计算机科学中的普及主要是因为它与二进制之间的高度兼容性。...尽管理论上可以使用更高的进制,但在实践中很少这样做,主要是因为复杂性和可用性的考虑。...随着计算机科学的发展,我们可能会看到更多创新的数据表示方法,但至少可预见的未来,十六进制仍将是计算机科学中的一个基石。

    14410

    秘籍 | 数据竞赛大杀器之模型融合(stacking & blending)

    在实践中,大多数人(包括我自己)只需使用交叉验证+网格搜索,使用相同的精确CV交叉用于生成元特征。 这种方法有一个微妙的缺陷 - 你能找到它吗? 事实上,我们的堆叠CV过程中有一点点数据泄漏。...这是泄漏,在理论上S可以从元特征推导出关于目标值的信息,其方式将使其过拟合训练数据,而不能很好地推广到袋样本。 然而,你必须努力工作来想出一个这种泄漏足够大、导致堆叠模型过度拟合的例子。...在实践中,每个人都忽略了这个理论上的漏洞(坦白地说,我认为大多数人不知道它甚至存在!) 堆叠模型选择和特性 你如何知道选择何种型号作为堆叠器以及元特征要包括哪些功能?...这里的好处是,逻辑回归堆叠模型捕获每个基本模型的最好的方面,这就是为什么它的执行优于任何孤立的基本模型。 实践中的堆叠 为了包装,让我们来谈谈如何、何时、以及为什么现实世界中使用堆叠。...一个有效的功能可能是,使用培训数据,有多少百分的产品广告给用户,而他实际上在过去就已经购买?

    87230

    这款国产数据库语言最近杀疯了!

    然而,SQL 描述计算任务时,却很难说是很胜任的。 SQL 为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL 也就是关系代数理论上发展出来的形式语言。 现在我们能回答,为什么 SQL 期望的两个方面做得不够好?...而 SQL 的 TOPN 总是伴随 ORDER BY 动作,理论上需要大排序才能实现,需要寄希望于数据库工程实现时做优化。...4) 大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做 HASH 分堆动作。...除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。

    19630

    SQL还好用,又一门数据库语言诞生了!

    然而,SQL 描述计算任务时,却很难说是很胜任的。 SQL 为什么不行 先看写着简单的问题。...目前主流数据库是关系数据库,之所以这么叫,是因为它的数学基础被称为关系代数,SQL 也就是关系代数理论上发展出来的形式语言。 现在我们能回答,为什么 SQL 期望的两个方面做得不够好?...而 SQL 的 TOPN 总是伴随 ORDER BY 动作,理论上需要大排序才能实现,需要寄希望于数据库工程实现时做优化。...4) 大表作为表的连接。事实表小时,可以利用表有序,快速从中取出关联键值对应的数据实现连接,不需要做 HASH 分堆动作。...除了理论上的差异, SPL 还有许多工程层面的优势,比如更易于编写并行代码、大内存预关联提高连接性能等、特有的列存机制以支持随意分段并行等。

    41220

    聚合索引(clustered index) 非聚合索引(nonclustered index)

    应      频繁更新的列                 不应                                      应      列...实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。...如果您的办公自动化系统已经建立的2年,那么您的首页显示速度理论上将是原来速度8倍,甚至更快。      ...2、用聚合索引用一般的主键作order by时速度快,特别是小数据量情况下      select gid,fariqi,neibuyonghu,reader,title from Tgongwen...因为用户表中每加进一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。

    7.7K51

    为什么数据库不应该使用

    我们在前面的文章中曾经分析过 为什么 MySQL 的自增主键不单调也不连续,这篇文章我们来分析关系型数据库中另一个重要的概念 — (Foreign Key)。...上述的这些分析都是理论上的定性分析,我们其实可以简单的定量分析一下引入对性能的影响。...,这个过程相对比较麻烦,不过也是为了实现完整性的必要代价,不过这种模拟方法其实远比使用更消耗资源,它不仅需要查询关联数据,还要通过网络发送更多的数据包。...,但是为了这部分可用性,我们会付出更多的研发与维护成本,也增加了与数据库之间的网络通信次数; 使用保证了数据库中数据的一致性,也将全部的计算任务全部交给了数据库; 大多数不需要高并发或者对一致性有较强要求的系统中...,我们可以直接使用数据库提供的帮助我们对数据进行校验,但是在对一致性要求不高的、复杂的场景或者大规模的团队中,不使用也确实可以为数据库减负,而大团队也有更多的时间和精力去设计其他的方案,例如:分布式的关系型数据库

    3.2K10

    数据库缓存层是否仍然必要?

    另一方面,现代软件应用程序云上运行,并依赖于跨网络的组件间通信。这些网络通常提供高达每秒 12.5 千兆字节的带宽(每秒 100 千兆位)。然而,这个数字仅仅是理论上的。...在实践中,我们的网络堆栈中的低效率,包括数据包和帧大小开销、退避和其他因素,使我们无法使用三分之一的容量。 这些变化有两个关键原因。首先,现代应用程序中,网络而不是磁盘已成为堆栈中最慢的组件。...其次,内存和磁盘之间的性能差距已大大缩小;虽然磁盘以前内存慢两个到三个数量级,但现在它们只慢大约一个数量级。...只要您不完全依赖添加更多 RAM 作为性能调整策略,利用多余内存进行缓存就是一种不错的方法。... Aerospike.com 了解更多信息。

    7800

    宽表的缺点

    BI业务中绝大部分的JOIN都是等值JOIN,也就是关联条件为等式的 JOIN。SPL把等值关联分为关联和主键关联。...但是,如果严格按这个定义去实现 JOIN,理论上没办法计算时利用主键的特征来提高性能,只能是工程上做些有限的优化,情况较复杂时(表多且层次多)经常无效。...关联 和SQL不同,SPL中明确地区分了维表和事实表。BI系统中的维表都通常不大,可以事先读入内存建立索引,这样关联时可以少计算一半的HASH值。...对于多层维表(维表还有维表的情况)还可以用地址化的技术做好预关联。即将维表(本表)的字段值转换成对应维表(表)记录的地址。...预关联可以系统启动时一次性读入并做好,以后直接使用即可。 当事实表较大无法全内存时,SPL 提供了序号化方法:将事实表中的字段值转换为维表对应记录的序号。

    2.2K21

    谈谈唯一约束和唯一索引的关系_唯一约束和主键约束的一个区别是

    可以把索引类比成书的目录,有目录的肯定没有目录的书,更方便查找。 唯一约束 保证一个字段或者一组字段里的数据都与表中其它行的对应数据不同。...然后下面跟了一个答案如下 大意是说,约束和索引是不同的,约束为优化提供了更多信息,并且允许唯一约束上建立,而唯一索引是不行的,然后还提供了一个小例子。...col1 列设置唯一索引 CREATE UNIQUE INDEX t2_idx ON t2 (col1); 运行结果 创建表 t3,并将 t1 表中的 col1 列设置为 t3 表中 col2 列的...CONSTRAINT t3_fk FOREIGN KEY (col2) REFERENCES t1 (col1) ); 运行结果 创建表 t4,并将 t2 表中的 col1 列设置为 t4 表中 col2 列的...总结 到此为止,基本上就能得出,唯一约束和唯一索引 MySQL 数据库里区别了 概念上不同,约束是为了保证数据的完整性,索引是为了辅助查询; 创建唯一约束时,会自动的创建唯一索引; 在理论上,不一样,

    1.6K20
    领券