sql-server - 一个具有一个主键的表和另一个具有两个主键的表之间是否存在关系?
问题描述
我一般都在问这个问题,但我会举一个例子来说明。
表 1 具有以下列:
ID (Pk)
Order_Desc
Order_DT
表 2 具有以下列:
ID (PK)
Product_Code (PK)
Product_Desc
我有可能在 Table1 和 Table2 之间建立关系吗?如果是这样,您将如何在 SQL 中执行此操作而不会遇到错误?如果产品代码或 ID 不是主键,您能否创建关系?相反,它是一个外键?
解决方案
您table2
没有两个主键 - 它有一个由 2 列组成的主键。任何关系表都不会有多个主键——这根本不可能。
与该表的任何 FK 关系必须包括被引用表的 PK 具有的所有列 - 因此任何 FKTable2
必须同时包含ID
和Product_Code
。
这是一个全有或全无的命题——要么你的外键包括引用表主键的所有列——要么你不能建立 FK 关系。
推荐阅读
- typescript - 创建一个类型,它是对象属性的数组
- ios - 如何以编程方式使用约束安排 tableViewController 中的视图?
- ruby-on-rails - 如何在“rails new”之后修复 Rails 服务器错误“无法加载此类文件 - nokogiri (LoadError)”?
- regex - 用于在多行输入中查找特定模式的正则表达式
- c++ - 如何在拒绝浮点数和空格的同时接受整数输入?
- java - Spring Reactor:如何压缩两个 Flux,但有顺序?
- python - 根据同一数组中最大值的百分比减少数组的长度
- excel - 来自用户表单组合框的结果,查找/匹配然后在用户表单标签中显示来自相邻单元格的结果
- php - 使用 Dejavu 字体时,DOMPDF 输出到服务器不显示文本
- javascript - 如何启动使用 jQuery 自动下载 zip 文件的 PHP 脚本