复合键作为外键(sql)

2024-01-28

这是我关心的两个表:

CREATE TABLE IF NOT EXISTS `tutorial` (
  `beggingTime` time NOT NULL,
  `day` varchar(8) NOT NULL,
  `tutorId` int(3) NOT NULL,
  `maxMembers` int(2) NOT NULL,
  `minMembers` int(1) NOT NULL,
  PRIMARY KEY (`beggingTime`,`day`,`tutorId`),
  KEY `tutorId` (`tutorId`)
) 


CREATE TABLE IF NOT EXISTS `group` (
  `groupId` tinyint(3) NOT NULL AUTO_INCREMENT,
  `status` varchar(20) NOT NULL,
  `groupName` varchar(50) NOT NULL,
  PRIMARY KEY (`groupId`)
) 

我想在“组”中创建一个字段,该字段将链接到“教程”中的复合唯一键。所以我想我的问题是,如何关联这些表?我是否必须在“组”中为“教程”中的每个主键创建外键字段?


根据 mySQL 文档 http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html您应该能够设置到组合的外键映射,这将需要您创建多个列。

添加列并将其放入您的group table

FOREIGN KEY (`beggingTime`,`day`,`tutorId`) 
    REFERENCES tutorial(`beggingTime`,`day`,`tutorId`)

正如史蒂文在下面的评论中提到的,您应该尝试重新构建它,以便教程表使用实际的主键(即使它只是一个身份代理键)。这将带来更高的性能,因为 SQL 是为这种类型的关系而不是复合关系构建的。

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

复合键作为外键(sql) 的相关文章

  • Session_set_save_handler 未设置

    我在设置 session set save handler 时遇到问题 我将 php ini 配置为 session handler user 这个简单的测试失败了 Define custom session handler if sess
  • 如何选择前一行值? [复制]

    这个问题在这里已经有答案了 如何从 SELECT 语句的上一个结果行获取值 例如 如果我们有一个名为 cardevent 的表 并且有行 ID int Value Money 并且其中有一些行 ID Value 1 70 1 90 2 10
  • 动态表单字段验证的数据库设计

    在我的应用程序中 我允许用户创建一个包含他们想要的任何 HTML 表单字段 例如文本输入 文本区域 选择等 的表单 我想让用户能够为每个字段定义 0 个或多个累积验证规则 最多可能有 25 个不同的验证规则 我应该如何建模 这是一个潜在的解
  • 无法将外键值插入链接表

    我目前正在尝试将数据插入名为的表中 客户报价 该表充当 顾客 表和 客户关税 桌子 它还记录通过以下方式提交数据的用户 user table 这是我的数据库的架构 https i stack imgur com gyCdb png http
  • 执行Insert命令并返回Sql中插入的Id

    我正在 MVC 4 中使用 C 将一些值插入到 SQL 表中 实际上 我想插入值并返回最后插入记录的 ID 我使用以下代码 public class MemberBasicData public int Id get set public
  • 我应该安装哪个驱动程序才能使用 powershell 运行 mysqlcommand?

    我安装了 mysql 连接器 ODBC 5 1 8 来运行 sqlcommand 但出现此错误 Cannot find type MySql Data MySqlClient MySqlConnection make sure the as
  • 我可以从列 CHECK 约束调用用户定义的函数吗?

    我有一个返回 1 或 0 的用户定义的 SQL 函数 我想从列 CHECK 约束中调用它 是的 SQL Anywhere 没有布尔数据类型 因此您必须编写一个生成 TRUE FALSE 或 UNKNOWN 的谓词 换句话说 如果函数返回 1
  • count(distinct) over (partition by... 在 Oracle SQL 中不起作用

    我想数一下distinct day number过去 30 天 但是 distinct 函数不能与over 如果我删除distinct 它会给我总数day number but day number可以有很多重复的 所以这就是为什么我想添加
  • 在关系数据库中存储 1:1 用户关系的最佳方式

    存储用户关系的最佳方式是什么 例如友谊 在关系中必须是双向的 你是我的朋友 因此我是你的朋友 数据库 例如MYSql 我可以想到两种方法 每当一个用户与另一个用户成为好友时 我都会向数据库添加两行 其中 A 行由发起用户的用户 ID 和下一
  • 删除除一行之外的所有具有重复值的行

    我有一个包含三列的表 KEY VALUE and LAST UPDATED 有重复的VALUE字段 我想删除所有具有相同的行VALUE和其他人一样except获取最新更新的信息 因此 如果表包含这些行 1 A 2013 11 08 2 B
  • MySQL Workbench 深色主题

    我刚刚开始学习 SQL 课程 并且一直在尝试不同的 GUI 我喜欢使用 MySQL Workbench 但白色背景刺瞎了我的眼睛 我已经搜索并找到了一些其他讨论编辑 xml 文件的相关帖子 我尝试用几种不同的方式对其进行编辑 但无济于事 我
  • Sails 嵌套模型集合

    我有 3 个型号 用户模型 module exports schema true attributes login type string required true hosts collection host via owners acc
  • 在 apex 中根据 2 种不同类型的用户进行自定义身份验证

    我有一种身份验证方案 目前仅验证用户是否在一个表中 即雇主表中 现在我希望这个身份验证方案来验证用户是雇主还是雇员 并且根据他们是雇主还是雇员 它应该将他们重定向到不同的页面 首先 我如何在身份验证脚本中包含第二个表 我最大的问题是 当员工
  • 检测 MySQL 中的 utf8 损坏字符

    我有一个数据库 其中有一堆损坏的 utf8 字符分散在多个表中 字符列表不是很广泛 AFAIK 修复给定的表非常简单 update orderItem set itemName replace itemName 但我无法找到检测损坏字符的方
  • Mysql使用触发器建表

    我尝试在 Mysql 触发器内创建表 但没有创建 如何使用触发器创建表 这里传递的表的名称是动态的 据我所知 在触发器内创建表是不可能的 看这里 http forums mysql com read php 99 121849 122609
  • T-SQL:检查电子邮件格式

    我有这样的场景 我需要物理数据库中的数据完整性 例如 我有一个变量 email address VARCHAR 200 我想检查一下值是否为 email address是电子邮件格式 有人知道如何检查 T SQL 中的格式吗 非常感谢 我使
  • 如何查找列表/集合是否包含在另一个列表中

    我有一个产品 ID 列表 我想找出哪些订单包含所有这些产品 订单表的结构如下 order id product id 1 222 1 555 2 333 显然我可以通过 PHP 中的一些循环来做到这一点 但我想知道是否有一种优雅的方法可以纯
  • 使用递归 CTE 遍历父/子树?

    我被 cte 困住了 我想要一个查询 其中第一个父级为空 上一个父级的子级将成为下一个父级的父级 依此类推 WITH RESULT PARENT CHILD TNAME LEVEL AS anchor SELECT E PARENT GEN
  • PostgreSQL:用以前的值填充时间序列查询中的 NULL 值

    我有一个包含时间相关信息的数据库 我想要一个包含每分钟值的列表 像这样 12 00 00 3 12 01 00 4 12 02 00 5 12 03 00 5 12 04 00 5 12 05 00 3 但是 当几分钟内没有数据时 我得到如
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y

随机推荐

  • 如何更新 Angular 库项目?

    我有一个使用 Angular 11 版本生成的 Angular 库 现在我想将其更新到 Angular 12 但使用 ng update 命令没有成功 我使用了以下命令 ng update project my lib 上述库已发布在 np
  • 使用 TalkBack 时,Android focusable 和 importantForAccessibility 有什么区别?

    我注意到在很多情况下android importantForAccessibility yes 可以替换为android focusable true 与 TalkBack 的工作方式完全相同 什么时候应该android important
  • 在 dc.js / Crossfilter 中添加过滤器不更新图表

    js小提琴 http jsfiddle net PYeFP http jsfiddle net PYeFP 我设置了一个条形图 用于显示用户每天的出行次数 tripVolume dc barChart trip volume width 9
  • 了解Android webview javascript接口

    我创建了一个安卓WebView 并注入javascript接口使用addJavascriptInterface mObject jsinterface 它工作正常 直到我使用 JavaScript 在 JavaScript 中创建具有相同名
  • :第一个孩子与 ng-repeat

    我有一个 ng repeat 并且只想将样式应用于第一个div与班级type在 ng repeat 中 div class my list div class type span item label span div div class
  • 拖放 imageview android

    我目前正在开发一款游戏 因为有一个框架布局 其中有一个 Horizo ntalView 和一个 VerticalView 和 AbsoluteLayout 而 Absolutelayout 位于右上角 因为有一个 ImageView 现在
  • 如何更改单个表格行的边框颜色?

    我试图通过更改单个行的边框颜色来突出显示该表行 这是我的CSS table border collapse collapse td min width 100px border 1px solid green highlight td bo
  • MVC5 的嵌套布局

    我看过一些关于这个主题的帖子 具有级联部分的 Razor 嵌套布局 https stackoverflow com questions 5525602 razor nested layouts with cascading sections
  • SSRS 与 Crystal Reports [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 控制多个 JMS 队列的消耗

    我在任何地方都找不到这个信息 我有两个队列 JmsListener destination p1 JmsListener destination p2 如何确保我一次只处理 1 条消息 即使我正在监听 2 个队列 以及如何配置对首先从哪个队
  • 在xamarin中创建一个cocossharp项目

    我是xamarin studio的新手 我试图按照官方指南创建一个cocosproject 但是这个文档不是很清楚 我的项目有很多错误 https developer xamarin com guides xamarin forms adv
  • 多个触发器对一个表具有相同的操作时间和事件mysql错误

    我是触发器新手 并且收到 一张表的多个触发器具有相同的操作时间和事件 错误 我创建了一个更新后和删除后 这是两个单独的操作时间 事件 所以我不太确定为什么会收到错误 这是我的查询 CREATE TRIGGER new enrolment A
  • Caret 包 - 定义积极结果

    在使用 Caret 包进行机器学习时 我对 Caret 的默认 正 结果选择感到震惊 即二元分类问题中结果因素的第一级 软件包说它可以设置为替代级别 任何机构可以帮助我定义积极的结果吗 感谢您 看看这个例子 使用混淆矩阵从插入符号示例中扩展
  • 在 Rstudio 的查看器中显示 Rd 文件

    我在项目文件夹中有函数和数据集的文档 在文档文件夹中 我有所有数据集的 Rd 文件 我希望用户能够调用自定义帮助函数并在查看器中启动 Rd 文件 就像从文件编辑器编译文件时自动完成的那样 是否有可能做到这一点 我不太明白你为什么要这样做 但
  • MagicalRecord:多个数据库

    我有一个使用 MagicalRecord 的应用程序 并且我正在使用大量用于参考的数据预先填充数据库 在同一数据模型中 我拥有与用户在应用程序中可能执行的操作相关的用户可定义信息 该应用程序被拒绝 因为预填充的数据应该被标记为 不备份 因此
  • 异常情况下自动回滚有什么缺点?

    当您编写 Flask sqlalchemy 应用程序并进行数据库查询 异常处理时 如下所示 def add user user User gt bool was the user added errors try db session ad
  • 塑料单片机。这是正确的解决方案吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我知道已经有一些关于塑料 SCM 的问题 但它们已经存在一年多了 最近有人用过Plastic SCM吗 你怎么看待这件事 我已经使用过 git
  • pandas:如何绘制 pandas 中 IMDB 电影的电影数量与类型的饼图?

    我有以下数据集 import pandas as pd import numpy as np matplotlib inline df pd DataFrame movie A B C D genres Science Fiction Ro
  • 存在同名数据库,或无法打开指定文件,或位于 UNC 共享上

    当我在新电脑上运行我的项目时出现此错误 为了避免这种情况 我每次都必须复制粘贴新的连接字符串 有什么办法可以避免这种情况 我有3个不同的数据库 它非常烦人的O O SqlConnection con new SqlConnection Da
  • 复合键作为外键(sql)

    这是我关心的两个表 CREATE TABLE IF NOT EXISTS tutorial beggingTime time NOT NULL day varchar 8 NOT NULL tutorId int 3 NOT NULL ma