mysql - 外键有重复且没有主键

标签 mysql sql

我有一个具有以下结构的表 A

Contract_ID     Parent_Contarct_ID      Client_ID
--------------------------------------------------
CON_001         CON_001                 CLNT_20001
CON_002         CON_002                 CLNT_20002
CON_003         CON_003                 CLNT_20003
CON_004         CON_004                 CLNT_20004

这里的 Contract_ID 有重复项,因此我无法创建主键或唯一键。

但是我需要在其他一些表中引用这个contract_ID。如果我不创建外键,如何引用?

我使用的是mysql

最佳答案

我认为您对数据缺乏基本的了解。有重复项是什么意思?如果您确实认为合约 ID 应该是唯一的,但事实并非如此,那么您就会遇到数据问题(以及放置该数据的任何软件中的错误)。如果重复可以,那意味着什么?

当然,您可以添加一个身份和链接,但这并不能解决您的实际问题 - 您最终会回到这里询问为什么您为给定的契约(Contract)返回太多行!

因此,第一步是了解您的数据。然后根据需要进行清洁。只有这样,您才能将所有 PK 和 FK 约束放在正确的位置,并且使任何列都有意义。

关于mysql - 外键有重复且没有主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19354018/

相关文章:

php - MariaDB/MySQL : combine rows if fields are NULL

php - 从数据库中提取每个标签的图标

c# - C# 中的 "Object cannot be cast from DBNull to other types"

javascript - SQL UPDATE 事件无法通过消息事件与 discord.js 一起正常工作

MySQL 只能与 --skip-grant-tables 一起使用,并且无法摆脱它。 Linux

mysql - Django 查询集 : Get unique/first element from ForeignKey field

php - 根据另一列的值按不同列排序

mysql - SQL中的这个查询有什么问题

sql - 如何强制执行 1 到 n 的关系

sql - 如何将格式传递给 postgresql 中的 to_timestamp?