数据库设计:识别外键有什么意义?

2023-12-06

我正在使用 MySQL Workbench 来建模我的数据库。在其中,我可以选择通过识别外键等来创建关系。这有什么意义?没有这些关系我就可以很好地运行我的查询。

我的表确实有一个实际的外键列,我只是没有在 MySQL Workbench 中定义它们。意思是,我没有连接表格的线。


外键可以做一些事情。最明显的是,正如 Macy Abbey 提到的,它们为您提供内置的数据完整性。

有趣的是,您最喜欢的 RDBMS 的查询优化器还可以使用外键等约束来进行其他优化。基本上,数据库可以确定它是否可以比您更好地编写查询。外键的存在使数据库可以做出这些假设。您可以在以下位置找到一个很好的示例外键约束有助于性能吗?。虽然该链接是特定于 SQL Server 的,但无论数据库引擎如何,原理都是相同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库设计:识别外键有什么意义? 的相关文章

  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • 串行类型的外键 - 确保始终手动填充

    我有两个表 国家和地区 CREATE TABLE Countries id SERIAL name VARCHAR 40 NOT NULL PRIMARY KEY id CREATE TABLE Regions id SERIAL coun
  • PHP PDO 使用 bindParam 第一个参数(不带冒号)[重复]

    这个问题在这里已经有答案了 请检查这个 user id int GET user id sql DELETE FROM users WHERE user id user id query db gt prepare sql query gt
  • PHP 和 MySQL - 高效处理多个一对多关系

    我正在寻求一些有关使用 MySQL 和 PHP 检索和显示数据的最佳方法的建议 我有 3 个表 所有一对多关系如下 Each SCHEDULE有很多覆盖每个覆盖都有很多地点 我想检索这些数据 以便它可以全部显示在单个 PHP 页面上 例如列
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • Sequelize.js 中的自定义或覆盖连接

    我需要使用创建自定义连接条件Sequelize js http sequelizejs com使用 MSSQL 具体来说 我需要加入TableB基于一个COALESCE中的列的值TableA and TableB并最终得到这样的连接条件 L
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 错误代码:1305。函数或过程不存在

    因此 我在 MySQL 中创建一个函数 然后尝试向用户授予使用该函数的权限 但我无法这样做 这就是我正在做的 DELIMITER USE rxhelp36 scbn DROP FUNCTION IF EXISTS businessDayDi
  • 慢速自动增量重置

    我有很多表 由于某些原因 我需要在应用程序启动时调整这些表的自动增量值 我尝试这样做 mysql gt select max id from item max id 97972232 1 row in set 0 05 sec mysql
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 如何使用 django ORM 在外键字段上连接两个表?

    假设我有以下模型 class Position models Model name models CharField class PositionStats models Model position models ForeignKey P
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • MySQL 追加字符串

    How can I append a string to the end of an existing table value Let s say I have the table below And let s say that Mari
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie

随机推荐

  • 将“exec()”与 NDK 一起使用

    我记得在某处读过 建议不要在 NDK 编译的 C 代码中使用 exec 推荐的方法是什么 我们是否尝试将 EXEC 代码推送到 Java 空间 也就是说 JNI 或应用程序 生成新进程 以及相关的将结果传递回 NDK 首先 不建议使用for
  • 是否可以在不使用 KeyContainerName 的情况下签署 xml 文档?

    我想创建 2 个非常简单的 dll 1 将签署一个xml文档 2 这将检查xml文档是否未被修改 我尝试使用 RSACryptoServiceProvider 和密钥容器 但是当我移动到另一台机器时 这不起作用 因为密钥存储在机器中 我想将
  • 如何在android服务类中获取上下文

    当我尝试从内存读取 XML 文件并将其写入对象时 出现以下错误 似乎获取上下文有问题 谁能告诉我我的代码有什么问题吗 Code public class WifiScanning extends Service private static
  • 使用 perl 的列宽自动调整功能

    我已经使用 perl 脚本使用一组 csv 文件生成了 Excel 工作表 我需要将列的宽度设置为auto fit 我应该做什么 我有在名为 OLE 的模块中执行此操作的方法 我不知道如何执行此操作 请帮助我 无法将文件的列设置为 自动调整
  • 为什么 JMenu 不总是在最上面?

    JMenu 表现正常 直到使用 JButton 更新 JFrame 上的 JTable 然后 JMenu 大部分被 JPanel 隐藏 见下图 当 JMenu 被选中时 它不应该总是在最上面吗 怎么就被推到后面了呢 更新 jButtonAd
  • Python 中的二分查找(二分查找)

    是否有一个库函数可以对列表 元组执行二分搜索 如果找到则返回该项目的位置 如果没有则返回 False 1 None 等 我在中找到了函数 bisect left right对分模块 但即使该项目不在列表中 它们仍然返回一个位置 这对于他们的
  • 匹配具有命名空间属性的 XML 元素时出现问题

    如果我要使用 xslt 将一段文本插入下面的 xml 中 条件语句会是什么样子
  • Java 泛型 - 无界通配符到底是什么?

    如果我有以下代码 public static void main String args List
  • 将辅助 X 轴标签添加到带有一个 X 轴的 ggplot

    编辑 这里有两个很好的解决方案 一个被标记为答案 但是 hrbrmstr提供了一个很好的解决方案 结合了两个ggplots 它非常适合这个简单的图 这是代码 breaks major lt c 0 15 37 5 52 5 67 5 82
  • Log4J 不在日志文件条目之间添加换行符

    我刚刚开始使用 log4j 我在读取属性文件和实际记录事件时没有问题 但它似乎将所有内容都附加到同一行的末尾 我的属性文件如下所示 A1 is set to be a ConsoleAppender log4j appender A1 or
  • Silverstripe 3.1.5 - 上传错误 SyntaxError:意外的标记 <

    我需要上传 svg 文件 为此 我将 svg 添加到我的 config yml 上传字段允许的扩展名以及 asset 中的 htacces 另外 我的所有资产目录都有 CHMOD 777 文件已上传但未附加 相反 我在上传字段中收到此错误语
  • 使用CSS调整图像大小

    我正在尝试仅使用 css 调整图像大小 它正在调整大小 但由于某种原因它没有拉伸到浏览器的 100 我想要的是它将调整给定高度的图像大小 但宽度在整个浏览器中应该为 100 我创建了一个小提琴作为演示 以便您可以看到发生了什么 div cl
  • BASH:错误消息未重定向到文件

    我有一个 bash 脚本 它只是调用不同的调用并将 stdout 和 stderr 输出重定向到不同的文件 我已经这样做了 command 1 gt datafile 2 gt gt errorfile 但是 当命令错误时 例如 作为参数给
  • 检查字符串列表 A 中的任何项目是否是字符串列表 B 中项目的子字符串

    我正在尝试对一组匹配器和一组字符串进行排序 这样如果我有 matchers foo bar abc and strings afooa zbarz abcabc purple foobar 我希望能够获得以下任何元素strings其中任意元
  • 如何在 Access 2010 中使用 .mdw 文件

    在 Access 2010 中 如何打开需要使用 mdw 文件的数据库 在 Access 2003 中创建 在 Access 2003 中 您必须首先引用 mdw 文件 我不知道如何在 Access 2010 中执行此操作 有人可以告诉我如
  • 获取ActiveMQ中的队列名称列表

    我尝试过下面的代码来获取 ActiveMQ 中的队列列表 但它不起作用 我的 ActiveMQ 有 4 个队列 try ActiveMQConnection makeConnection URL start Set
  • WaitForElementClickable/可见 - Selenium C#

    我需要实现并修改我当前的方法来完成这两件事 等待元素可见 当前已实现 但仍使用预期状况这是过时的并且might be改变 等待可点击的元素 当我的测试运行时 它面临 加载圆圈 的问题 我按下按钮 在加载窗口之前 有一个加载程序 需要 1 到
  • 使用 Google App Engine 的 NDB 创建异步方法

    我想确保我了解如何创建微线程和异步方法 我拥有的是一个返回列表的方法 我希望从某个地方调用它 并立即允许进行其他调用 所以我有这个 future 1 get updates for user userKey aDate future 2 g
  • heroku 推送被拒绝,无法编译 Ruby 应用程序

    当我运行命令 git push f heroku 时 出现以下问题 获取存储库 完成 数物体 55 完成 增量压缩最多使用 4 个线程 压缩对象 100 30 30 完成 写入对象 100 35 35 9 26 KiB 0 字节 秒 完成
  • 数据库设计:识别外键有什么意义?

    我正在使用 MySQL Workbench 来建模我的数据库 在其中 我可以选择通过识别外键等来创建关系 这有什么意义 没有这些关系我就可以很好地运行我的查询 我的表确实有一个实际的外键列 我只是没有在 MySQL Workbench 中定