复合主键+外键

2024-01-22

我有一个包含调查列表的表(PK 是 ID)

CREATE TABLE [dbo].[SurveyMaster](
    [ID] [nvarchar](4) NOT NULL,
    [Title] [nvarchar](200) NULL,
    [IsActive] [bit] NOT NULL,

以及一个包含变量映射列表的表。

CREATE TABLE [dbo].[VariableMappings](
    [ParentSurvey_ID] [nvarchar](4) NOT NULL,
    [ReportingMonth] [nvarchar](6) NOT NULL,
    [VariableName] [nvarchar](400) NOT NULL,
    [Value] [int] NOT NULL

我的希望是为 Parent Survey_ID、报告月份和变量名称上的变量映射创建一个主键,以确保唯一的记录。

但与此同时,我希望 VariableMappings.ParentSurvey_ID 和 SurveyMaster.ID 之间存在外键关系,以确保 VariableMappings 仅包含相关的 SurveyID。

我在 SQL Server 中尝试了几种方法,但我不相信我可以创建 FK,因为复合键由 3 列组成。

我怎样才能实现这一目标?


是的你可以:

CREATE TABLE [dbo].[VariableMappings](
    [ParentSurvey_ID] [nvarchar](4) NOT NULL,
    [ReportingMonth] [nvarchar](6) NOT NULL,
    [VariableName] [nvarchar](400) NOT NULL,
    [Value] [int] NOT NULL,
  PRIMARY KEY (ParentSurvey_ID, ReportingMonth, VariableName),
  FOREIGN KEY (ParentSurvey_ID)
    REFERENCES dbo.SurveyMaster (ID)
) ;

大部分与您的问题无关,但有一个PRIMARY KEY这么宽(410 nvarchars)并不是最好的主意。

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

复合主键+外键 的相关文章

  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • Mysql 检索所有有限制的行

    我想检索特定用户的所有行 限制为 0 x 所以我只是想问是否有任何方法可以检索 mysql 中的所有行 而不调用返回 x 的 count id 的方法 而不重载现有函数 该函数在查询中根本没有限制 与我们的 string Relace 功能
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 如何在 Visual Studio 中更改 Azure 数据库表的列顺序

    我整个下午都在寻找在 MS Visual Studio 2022 中重新排序 Azure 数据库表列的方法 没有运气 在其他应用程序中 可以通过拖动或剪切和粘贴轻松重新排列列 这里无能为力 此时 我什至不确定可以在 VS 中移动列 我只对
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

    我正在开发一个新的 Java Web 应用程序 并且正在探索保存数据的新方法 对我来说是新方法 我主要有 JPA 和 Hibernate 的经验 但是 除了简单的情况之外 我认为这种完整的 ORM 可能会变得相当复杂 另外 我不太喜欢和他们
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • 月份增量查询

    我想通过添加 1 个月来更新数据库中的月份 但我不知道如何在以下存储过程查询中添加月份 我不擅长 sql 请检查它 ALTER PROCEDURE dbo ChangePassword password varchar 20 epasswo
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • 计算运行总计时出错(之前期间的累计)

    我有一张桌子 我们称之为My Table有一个Created日期时间列 在 SQL Server 中 我试图提取一个报告 该报告显示历史上有多少行My Table按月在特定时间 现在我知道我可以显示有多少added每个月 SELECT YE
  • 执行带有 EXCEPTION 的 PostgreSQL 查询会导致两条不同的错误消息

    我有一个 PostgreSQL 查询 其中包含事务和列重复时的异常 BEGIN ALTER TABLE public cars ADD COLUMN top speed text EXCEPTION WHEN duplicate colum
  • 将表数据从一个 SQL Server 导出到另一台 SQL Server

    我有两个 SQL Server 都是 2005 版本 我想将多个表从一个表迁移到另一个表 我努力了 在源服务器上 我右键单击数据库 选择Tasks Generate scripts 问题是在下面Table View options没有Scr
  • 使用间隔阈值对不同的连续时间戳记录进行分组

    我有一系列间歇性间隔的带有时间戳的 GPS 坐标 我正在使用 PostGIS 将它们渲染到地图画布上 为了渲染它们 需要使用 PostGIS 中的 ST MakeLine 聚合函数将点聚合成线 从而在地图上留下 GPS 数据丢失的间隙 数据
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • 使用 postgres 和 node js 在单个语句中执行多个查询

    我需要在像这样的单个语句中执行插入和删除查询 INSERT INTO COMPANY ID NAME VALUES 1 Paul DELETE FROM COMPANY WHERE ID 12 这是我用于执行查询的 node js 代码 p

随机推荐

  • 更换默认手机APP

    我正在尝试替换默认的 Android 电话应用程序 更具体地说 我想在每次执行呼叫操作时启动自定义电话呼叫屏幕 我知道自 Android 的 API 24 版本 7 0 Nougat 以来这是可能的 但我没有找到有关如何实现此目的的参考资料
  • 在 ionic 中加载 url 显示空白屏幕

    我在网上搜索过 但没有得到关于这个问题的具体信息 我正在使用 ionic v1 其中我正在加载我的 adfs url 来要求用户通过 adfs 网页登录 但仅在某些手机上我看到登录页面 而在其他手机上我看到空白屏幕 我尝试调试它 但到目前为
  • 如何在 Android 中以编程方式加载布局 XML 文件?

    我已经做了一个布局 比如说my layout xml 其中以编程方式包括另外两个 XML 布局文件 例如一些 layout xml and another layout xml my layout xml是使用绘制的setContentVi
  • 查找两个蓝牙设备之间的方向(定位)

    我有一个应用程序 可以扫描另一部手机正在广播的特定 UUID 并测量它们之间的信号强度 并告诉您离它们是否越来越近或越来越远 我想添加一个方向箭头 我知道如果你有 3 个点 你可以使用三角测量 但我想用 2 个点得到一些稍微准确的东西 有什
  • 对模拟对象的期望似乎没有得到满足(最小起订量)

    我在 Moq 中遇到了一些奇怪的行为 尽管我设置了一个模拟对象以某种方式行事 然后在我正在测试的对象中以完全相同的方式调用该方法 但它的反应就像该方法是从来没有打电话过 我正在尝试测试以下控制器操作 public ActionResult
  • 作为 jar 运行时出现 FileNotFoundException

    FileInputStream fstream new FileInputStream abc txt 作为 jar 运行时抛出 FileNotFoundException 为什么 通常它可以在从 main 方法运行时找到 class My
  • 如何仅删除第一页的页眉页脚 - mpdf

    下面 Mpdf 中的两个函数在所有页面中添加页眉和页脚 设置HTML标题 设置HTML页脚 但是 有人可以帮我从 pdf 第一页中删除页眉和页脚吗 mPDF 有一个名为 show this page 的选项 将其设置为0我想 不会在第一页上
  • Intellij Idea 无法启动 Windows 10

    我下载了 Intellij Idea 并使用了一段时间 效果很好 我不知道它工作期间和开始不工作期间发生了什么 当我单击快捷方式时 我的鼠标会给我加载轮 然后什么也不会发生 在任务管理器中 有一个名为 IntelliJ Idea 的任务正在
  • 发出 GET 请求时的 WhiteLabel 错误页面[重复]

    这个问题在这里已经有答案了 我收到状态为 404 的 WhiteLabel 错误页面 而不是字符串 所有电影 我正在 http localhost 8080 api v1 movies 上发出 GET 请求 我的控制器 package pl
  • 如果应用程序已经启动一次,如何阻止用户第二次进入登录屏幕?

    我正在制作一个具有登录屏幕的应用程序 登录的验证和其他内容由网络服务处理 我的问题是 如果用户安装了该应用程序 那么如果用户第一次运行该应用程序 则会出现一个登录屏幕 通过用户在从市场下载时提供的详细信息进行登录 如果用户成功登录 则第二次
  • AngularJS:在 ng-repeat 生成的范围中设置变量

    如何访问 ng repeat 生成的范围集 我想这的核心是这样一个事实 我不太明白 a 我传递到 ng repeat 指令的对象集合和 b 它生成的范围集合之间的关系是如何工作的 我可以使用 a ng repeat 作用域会监视并拾取该作用
  • 使用自定义文件格式注册ForDraggedTypes

    开发人员文档没有提供 registerForDraggedTypes 方法的完整描述 例如 我希望我的应用程序仅允许访问 abc 文件 我怎样才能做到这一点 如果您希望将文件拖到您的视图中 您应该注册NSFilenamesPboardTyp
  • 不同列的条件平均值

    我有一个像这样的 R 数据框 city2001 lt c a b a grade2001 lt c 5 5 7 city2002 lt c b b a grade2002 lt c 8 9 10 df lt data frame city2
  • 根据条件删除列表中的元素

    我有一个名为 Info 的类 其中 Info 有一个字符串类型实例变量 可以通过以下方式访问 Info getName 我还有一个实例信息列表 例如class list Info Aleck Info John Given a name l
  • 无法将类型“System.Web.Mvc.RedirectToRouteResult”隐式转换为“System.Web.Mvc.JsonResult”

    我如何将操作从 JsonResult 重定向到 ActionResult 但出现错误 我的错误是 无法将类型 System Web Mvc RedirectToRouteResult 隐式转换为 System Web Mvc JsonRes
  • pthread 与 python VM 的回调

    假设我有一个 python 脚本 它通过 ctypes 加载共享库 SL SL 设置了一个pthread T1 python 脚本通过 SL 配置回调 即 python 脚本通过引用 python 可调用项从 SL 调用函数 替代文本 ht
  • 如何通过互联网使用 MQTT?

    目前 我正在成功运行一个 mosquitto 代理 订阅主题并与本地网络中的客户端发布消息 如何与位于不同 IP 地址的另一个本地网络进行通信 我应该设置 2 个 mosquitto 经纪人 每个本地网络一个吗 其他本地网络中的 PC 需要
  • 以编程方式为本地存储库创建 NuGet 包

    我正在编写一个控制台应用程序来创建 NuGet 包 使用 Nuget Core 库 该包将托管在我们的内部服务器上以部署到我们的应用程序中 当我们使用 NuGet Package Explorer 手动创建包时 这一切都可以正常工作 但我们
  • XAML 解析器如何识别 NameScope?

    在 XAML 解析的上下文中 我想知道解析器如何知道类型何时定义 NameScope 它是否完全依赖于 INameScope 接口 检查instance is INameScope 它是否依赖于布尔属性 XamlType IsNameSco
  • 复合主键+外键

    我有一个包含调查列表的表 PK 是 ID CREATE TABLE dbo SurveyMaster ID nvarchar 4 NOT NULL Title nvarchar 200 NULL IsActive bit NOT NULL