![]() |
1
24
基本性质 是吗 它一定是独一无二的。使该键的一部分可为空会破坏此属性。 有两种可能的解决方案:
|
![]() |
2
6
我想MySQL就是在这里做的。其他一些数据库(例如Microsoft SQL Server)将NULL视为只能插入唯一列一次的值,但我个人认为这是一种奇怪和意外的行为。
|
![]() |
3
5
由于没有自然键,因此无法解决基于名称没有重复项的问题。为出生日期未知的人输入假日期并不能解决您的问题。出生于1900/01/01的约翰·史密斯仍然会是一个不同于出生于1960/03/09的约翰·史密斯的人。
如果要插入员工数据以唯一地标识每个员工,最好的方法是使用员工ID。然后检查用户界面中的uniquename,如果有一个或多个匹配项,询问用户是否是指这些匹配项,如果他拒绝,则插入记录。然后构建一个deupping进程,如果有人意外地被分配了两个id,则修复问题。 |
![]() |
4
3
我们将列命名为 出生日期 并创建唯一的约束雇员(姓名、出生日期)。因此,当两个recored具有相同的名称和空的出生日期值时,唯一约束仍然有效。 但对于同一意义的两个栏目的维护力度,以及新栏目的性能危害,都应慎重考虑。 |
![]() |
5
2
我建议创建其他表列
这个解决方案会产生很小的技术开销,因为对于每个插入的对,都需要生成散列(对于每个搜索查询都是一样的)。为了进一步改进,您可以在每次插入时添加将为您生成哈希的触发器:
|
|
6
0
完美的解决方案是支持基于函数的UK,但这变得更加复杂,因为mySQL还需要支持基于函数的索引。这将避免使用“假”值代替空值,同时也允许开发人员决定如何在英国处理空值。不幸的是,mySQL目前不支持我所知道的功能,所以我们还有解决方法。
IFNULL() 唯一键定义中的函数) |
![]() |
7
0
我有一个类似的问题,但有一个扭曲。在你的情况下,每个员工都有一个生日,尽管这可能是未知的。在这种情况下,系统为生日未知但信息完全相同的员工分配两个值是合乎逻辑的。尼尔布公认的答案非常准确。 但是,我遇到的问题是数据字段不一定有值。例如,如果您在表中添加了“name_of_spooth”字段,则表中的每一行不一定都有值。在这种情况下,NealB的第一个要点(错误的方式)实际上是有意义的。在这种情况下,对于没有已知配偶的每一行,应在配偶的列名中插入字符串“None”。 我遇到这个问题的情况是编写一个带有数据库的程序来对IP流量进行分类。目标是在一个私有网络上创建一个IP流量图。每个包都被放入一个数据库表中,根据其ip源和目标、端口源和目标、传输协议和应用程序协议,该表具有唯一的连接索引。然而,许多数据包根本没有应用程序协议。例如,所有没有应用程序协议的TCP数据包都应该被分类在一起,并且应该在连接索引中占据一个唯一的条目。这是因为我希望这些包形成我的图的一条边。在这种情况下,我从上面接受了自己的建议,并在application protocol字段中存储了一个字符串“None”,以确保这些数据包形成一个唯一的组。 |
![]() |
8
0
您可以添加生成的列,其中
|
|
9
-2
简而言之 唯一约束 是使字段或列。 这个 无效的 销毁此属性,因为数据库将空视为 为了避免重复并允许空值:
|
![]() |
blogger13 · 视频租赁店数据库的规范化 8 月前 |
![]() |
ì¤ì¤í · 为什么LEFT INNER JOIN被弃用? 9 月前 |
![]() |
relatively_random · 确保两个表之间一致的共同参考 9 月前 |
|
Grenish Rai · Firestore错误“用户文档不存在” 1 年前 |
![]() |
Saijo-Shi · PLpgsql中的更新触发器 1 年前 |
![]() |
Dante · Django::配置不当:池不支持持久连接 1 年前 |
![]() |
YouLocalRUser · 删除重复行,保留第一行 1 年前 |