MySQL 唯一和 NULL 索引建议

标签 mysql indexing database-design unique-constraint unique-index

我有一个我无法弄清楚的唯一索引要求。

我的表格中有三列

Code (VarChar)  |  User(Int - Nullable)  |  Item(Int - Nullable)  

我在Code AND User上设置了一个唯一索引,在Code AND Item上设置了另一个索引

这意味着如果itemNULL,我们在任何时候都不能有多个代码引用同一用户,并且我们不能有更多如果 userNULL

,则不是引用同一 item 的一个代码

但是我还有第三种情况...

我希望能够拥有与用户和项目相关的代码,该代码可能已经存在于相同的项目或用户中。但我不能这样做,因为它会与上面的索引之一冲突。

因此,鉴于上述唯一索引,我也希望能够插入这些记录

Code (VarChar)  |  User(Int - Nullable)  |  Item(Int - Nullable)  
   12345678     |        NULL            |          1  
   12345678     |        1               |         NULL
   12345678     |        2               |          1     ** This row clashes on ITEM **

这可能吗,还是我又做了一些愚蠢的事情!?

最佳答案

对 - 答案似乎只是“不要使用 NULL

因此,如果我在不需要 ItemUser 数据的情况下使用 0 而不是 NULL,我可以拥有唯一的约束我需要!

关于MySQL 唯一和 NULL 索引建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143884/

相关文章:

elasticsearch - 如何确保所有文件在ElasticSearch中建立索引

python - 多对多领域 - Django 模型 - 理解

sql-server - 如何在 SQL 表中实现这种数据结构

MySQL 将两列合并为行

mysql - 在 godaddy 上使用 MySQL 和 Entity Framework 的安全异常

mysql - Filemaker Pro 并在 html 中生成统计数据

entity-framework - 如何使用 Entity Framework 代码首先迁移删除唯一索引

mysql - 使用 MySQL 为 Varchar 建立索引

mongodb - Elasticsearch ,MongoDB:Mongo-Connector自定义映射和设置

mysql - 数据库连接-数据库设计-父级-子级-子级的子级