首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中由主键和唯一键组成的复合键?

mysql中由主键和唯一键组成的复合键?
EN

Stack Overflow用户
提问于 2018-10-08 10:18:02
回答 2查看 78关注 0票数 0

我有一个表,其中需要有一个由三个键组成的组合键:manufacturer, modelNumberparentModelNumber。每一行/条目都有一个manufaturer的值和一个modelNumberparentModelNumber的值。复合键是否可以由一个主键和两个唯一键组成,从而允许其中一个唯一键为空值?我一直在用头撞墙,有些人说“主键”是“唯一键”,但当“唯一键”被允许为空值而“主键”不被允许时,这怎么可能呢?我很困惑。

假设我可以这样做一个组合键,当组合键由一个‘主键’和两个‘唯一键’组成,其中一个‘唯一键’的值为空值时,INSERT ON DUPLICATE KEY UPDATE会对它求值吗?

我有人可能会建议一种不同的方法,我对此持开放态度。我只做了大约一个星期,我所知道的就是我知道的不多。我也开放阅读文章的参考资料。谢谢。

EDITED_______________________________________________

@TimBiegeleisen -假设我想输入一台适用于2001款福特f-150的交流发电机,但交流发电机上没有型号。我将制造商=福特,parentModelNumber =2001F-150,modelNumber = null。

现在假设我有一个由Mechman制造的交流发电机,它的型号是SK3345,但它不是为了适合特定的车辆而制造的。我将制造商= Mechman,modelNumber = SK3345,parentModelNumber = null。

我想在一个表中存储所有的交流发电机,并要求每个条目都有一个已知的制造商和一个已知的型号或它适合的已知车辆。我想我可以创建两个表,但是我想知道是否所有重复的字段都是一个好主意。每行的其他字段是尺寸和材料类型以及类似的详细信息。

EN

回答 2

Stack Overflow用户

发布于 2018-10-09 10:18:40

包含null的列不能是键或任何键的一部分。不幸的是,MySQL的非标准语法将关键字用于任何索引,即使是可以为空和非惟一的索引也是如此。实键必须定义为NOT NULL并具有唯一性约束( UNIQUE或PRIMARY key均可完成此任务)。

在这种情况下,您似乎在一个表中模拟了三种不同的东西。我建议至少创建三个表:一个表用于具有零件号的零件;一个表用于没有编号的零件;一个表用于将零件与其适合的模型相关联。真正的问题是对没有数字的部分使用什么键。

票数 2
EN

Stack Overflow用户

发布于 2018-10-09 10:18:28

一个建议。

  • 使用空字符串而不是NULL。这避免了app键的问题,因为PRIMARY KEY(manufacturer, parentModelNumber, modelNumber)
  • Also有INDEX(manufacturer, modelNumber)
  • Use UNIQUE代码来处理
  • 的唯一性约束。这包括不信任IODKU (除非PK可以在'correctly').

上工作

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52694591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档