问题标签 [primary-key-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
253 浏览

django - 分配主键整数的范围

给定自动递增主键整数的 RangeA(1 到 32767)和 RangeB(32768 到 2147483647)。如果条件为真,则保存在 RangeA 中分配主键的对象,否则将其保存在 RangeB 中。

管理员(我)将是唯一保存到 RangeA 的用户。如果上述方法不可行:如果 Django 始终保存在 RangeB 中并且需要进入 shell 以保存在 RangeA 中,这将不理想但仍然可用。

如何使用 Django 和 Postgres 来做到这一点?

0 投票
1 回答
55 浏览

sql-server - 为什么数据库有一个奇怪的字母数字键

我正在尝试连接两个数据库中的数据,这两个数据库都是由不同的 UI 应用程序自动创建的。一方面,所有密钥都采用这种格式“D8FC23D7-97D6-42F5-A52F-1CE93087B3A4”。

有什么理由这样做吗?我还看到了在 GIS 数据库中看起来相似的键。我不知道这些是否应该是一些计算的密钥,也许是为了检测我正在尝试做的事情,或者只是出于其他目的随机。

PS 我正在使用 SQL Server。据我所知,这不是 SQL Server 自动生成的。

0 投票
1 回答
228 浏览

database - UnixNano 与服务器 ID 连接是一个好的主键吗?

我试图从 Go 的 UnixNano 生成 10k 整数,但它没有显示任何冲突。

数据库最大只支持 64 位整数,不支持原子计数器/序列。

编辑 2017-03-06 它有碰撞

因此,如果我使用该数字创建一个主键,转换为 base-36,并附加 3 位服务器密钥,就不会发生冲突吗?

一些例子:

要求 2017-03-04

  • 字典正确
  • 独特的
  • 尽可能短
  • 按创建时间排序
0 投票
1 回答
142 浏览

sql - 在 SQL Server 中插入或删除的输出

我有一张SalesTransaction桌子Invoice

我想要的是Invoiceid从表到表Invoice的标签InvoiceIdSalesTransaction

起初InvoiceIdofSalesTransaction为NULL,发票表数据添加后,应标记回InvoiceIdofSalesTransaction

0 投票
1 回答
25 浏览

sql - 如果未删除 SQL 唯一键

我有如下表格:

目前,它是一对多的关系(一个父级,多个子级),主键是子级 ID,因为一个子级只能映射到一个父级(到目前为止都非常简单)。
我的问题现在出现了,但我想添加一个辅助列,如下所示:

所以情况是,出于审计原因,我需要跟踪已删除父母的映射,我的想法是让 Child Id 唯一,如果 Deleted是错误的。问题是我如何实现这一目标?是否有可能或应该创建一个用于存档已删除条目的辅助表,是否有任何其他建议我可以如何实现这一目标或我可以采取的其他方法?

0 投票
2 回答
969 浏览

java - Hibernate 获取带有字符串前缀的下一个 ID

我有一个关于 Hibernate 中的主键生成的问题。我正在维护现有的注册表系统。当前设计使用字符串作为主键。规则类似于"EXE" + max(). 下面是表格的样子。

目前我使用下面的代码来生成 ID。

但问题是;它使用行数来获取下一个序列数字。因此在上述情况下,该方法将返回EXE5(该 ID 已存在于表中,因此引发异常),因为表中的行数为 4,然后递增 1。我需要的是EXE16.

任何帮助深表感谢。额外信息,我们使用 Informix 作为数据库引擎。

0 投票
0 回答
405 浏览

mysql - n:m 关系的主键处理与识别父关系?

观看此示例以了解项目和错误之间的识别关系:

示例 MySQL Workbench 架构

bug.idMySQL Workbench 在识别关系时创建,而不是像table那样的单个主键bug。在这种情况下,主键由bug.id和组成,bug.project_id因为project它是 的标识父实体bug

如果我在这种情况下制作一个n:m像这样的表,那么添加了原因bug_has_media的主键字段也有一个with 。在这种情况下,MySQL Workbench 会自动创建此字段。如果没有必要,是否可以删除该字段?或者MySQL中识别关系和非识别关系的背景和目的是什么?我知道这两种关系的含义是什么。但不是为什么 MySQL Workbench 在这种情况下会基于两个字段创建主键,并将这两个字段添加到所有 n:m 关系中。bug_project_idproject1:n identifying relationshipbugbug_project_idbug_project_idbug_has_media

0 投票
1 回答
543 浏览

database - 我可以使用优雅的配对功能作为数据库中的主键吗?

我正在编写一个允许多个用户可以修改帖子的服务器。
所以我创建了包含用户 ID、帖子 ID 和权限数据的权限表。
而且我只想用一个值来查询这个(我只是认为用一个值查询比用两个值查询更有效),所以我用谷歌搜索并找到了这个
但是,我也发现Cantor Pairing Function 不是 unique
所以我们不能使用 Cantor Pairing Function 作为主键。

但这仅涉及康托尔方式,而不是优雅配对功能(Matthew Szudzik)
优雅配对功能怎么样?
使用优雅的配对键作为数据库中的主键是否安全?
还是我应该放弃并用两个值查询?

0 投票
3 回答
3893 浏览

azure - 如何检索添加到 Cosmosdb 集合的文档的 ID?

我有一个集合,我在其中插入不同类型的文档。我使用类型参数来区分集合中的不同数据类型。在插入文档时,我为每个文档创建了一个 Id 字段,但 Cosmosdb 有一个内置的 id 字段。

如何在一个查询中插入新文档并检索已创建文档的 id?

0 投票
1 回答
3308 浏览

amazon-dynamodb - DynamoDB 主键时间戳

我试图在 dynamodb 中查询主键是时间戳的数据集。首先,我想获取特定 sensorId 的所有数据。我尝试了扫描(scan.json):

这个 Json 是通过 CLI 命令使用的:

那是成功的,并为我提供了指定 sensorid 的所有数据。

现在,如果我只想获得时间戳和 sensorId 作为结果,我阅读了有关投影表达式并尝试进行查询(query.json):

aws cli 命令

给我 :

调用查询操作时发生错误(ValidationException):Invalid ProjectionExpression: Attribute name is a reserved keyword;保留关键字:时间戳

但是为了测试目的用“sensorId”替换“timestamp”给了我:

调用查询操作时发生错误(ValidationException):查询条件缺少键架构元素:时间戳

而且我知道 sensorId 对键表达式无效。 KeyConditionExpression 仅接受键属性、哈希键和范围键。但是如何得到结果呢?

我只想要一个 sensorId 的时间戳。我的主键错了吗?应该更好地使用 sensorId 作为主键和时间戳作为范围键?