gpt4 book ai didi

c# - 使用散列作为主键?

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:23 24 4
gpt4 key购买 nike

我需要存储多台计算机的服务列表。我想我会创建一个表来保存所有可能表的列表,一个表用于所有可能的计算机,然后一个表将服务链接到计算机。

我想保持完整的服务列表是唯一的,我可以使用可执行文件的散列作为服务的主键,但我不确定这是否会有任何缺点(注意散列仅用于识别。不用于任何类型的安全目的)。我在想与其使用二进制字段作为主键/外键,不如将值存储为 base 64 编码的 sha512,并使用 nvarchar(88)。类似这样的东西:

CREATE TABLE Services
(
ServiceHash nvarchar(88) NOT NULL,
ServiceName nvarchar(256) NOT NULL,
ServiceDescription nvarchar(256),
PRIMARY KEY (ServiceHash)
)

此解决方案是否存在任何固有问题? (我将使用 SQL 2008 数据库并通常通过 C#.Net 访问它)。

最佳答案

问题是散列根据定义不是唯一的。您不太可能发生碰撞,但有可能发生。因此,您不能仅使用哈希,这意味着整个哈希 id 是死胡同。

使用普通的 ID 字段,在 ServiceName 上使用带索引的唯一约束。

关于c# - 使用散列作为主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com