问题标签 [primary-key]

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 投票
10 回答
15438 浏览

database - 在 Products 表的人工主键和自然键之间做出决定

基本上,我需要将来自多个供应商的产品数据合并到一个数据库中(当然,它比这更复杂),其中有几个表需要连接在一起以进行大多数 OLTP 操作。

我将坚持使用默认值并使用自动递增整数作为主键,但是当一个供应商提供他们自己的“ProductiD”字段时,其余的则不提供,我将不得不做很多手动映射到另一个表然后加载数据(因为我必须先将其加载到 Products 表中,然后将 ID 取出并将其与我需要的其他信息一起添加到其他表中)。

或者,我可以使用产品的 SKU 作为其主键,因为 SKU 对于单个产品是唯一的,并且所有供应商都在其数据馈送中提供 SKU。如果我使用 SKU 作为 PK,那么我可以轻松加载数据馈送,因为一切都基于 SKU,这就是它在现实世界中的工作方式。但是,SKU 是字母数字的,并且可能比基于整数的密钥效率略低。

我应该看看有什么想法吗?

0 投票
3 回答
854 浏览

database - 如何在 CakePHP 中使模型的数据库可移植?

我对蛋糕不是很熟悉..所以这是我的问题..我们正在mysql上开发一个应用程序,但它最终可能需要部署到mssql或oracle。我们如何确保我们的主键不会出现奇怪的问题?在 mysql 中,它们是 AUTO INCREMENT 列,但在 oracle 中的 IIRC 您需要使用序列……有没有办法使这成为透明的更改?我是不是想多了?

有没有人有在 cakephp 应用程序上切换数据库供应商的经验?有什么需要注意的提示或事情吗?

0 投票
4 回答
4539 浏览

ruby-on-rails - 如何在 Rails 中为具有多个关键字段的资源定义 RESTful 路由?

我的用户模型具有通常的id主键,但它也有一个login可以用作标识符的唯一键。因此,我想定义路由,以便用户可以通过 id 或登录访问。理想情况下,路线应该是这样的:

执行此操作(或类似方法)的最佳方法是什么?

0 投票
2 回答
251 浏览

mysql - MySQL 中每个表的更多主/自动添加唯一 ID?

MySQL 中的每个表是否可以有两个或多个主要/自动添加的唯一 ID?例如:

主键 (INT,11);shop_id;invoice_id

是否可以将其设置为 MySQL 表?-> 所以表中还有一些其他值的主键.. ?

我正在一张表中寻找更多的自动增量。

0 投票
5 回答
192 浏览

mysql - MySQL中的重复PK

不久前在这个网站上有人告诉我,使用多对多(在我的情况下是 facebook-ish“交友”系统)的唯一方法是执行以下操作:

这不会给我留下很多相同的主键(我相信这是不可能的吗?)如果我不能将 uid 设置为 PK,我怎样才能快速搜索表格?必须有一种方法可以通过 PK 来解决这个问题。

谢谢!

0 投票
4 回答
1405 浏览

sql - 使用 GUID 作为主键时的“无”或“未使用”外键

我们正在构建一个可能需要复制到许多服务器的应用程序(我希望不会,但是在我们发布在线产品之前,无法知道客户端是否需要他们自己的客户端/服务器副本)。

由于服务器的数量未知,我决定对任何事务表 ID 使用 GUID。由于每个客户端都有自己的数据库,我打算使用 NEWSEQUENTIALID() 默认值,并且最大的表每年将添加不超过 150 万行(但平均为 15K 行),我预计不会有太大的性能问题.

但是,我不确定如何处理我们希望外键指示“未选择”的情况。例如,一个客户端有一个管理员用户。这被设置为 login.id(GUID)的外键(login_id)。但是,如果客户端还没有管理员用户,我们如何轻松设置“None Selected”键?

在以前的应用程序中,我们使用 IDENTITY 列,并在大多数 ID 为 0 的表中插入了一个虚拟条目。是否有一种可接受的方法来提供具有 GUID 的类似功能?

0 投票
6 回答
16442 浏览

sql - 你可以在 MySql 中使用自动增量而不是主键吗

我使用 GUID 作为所有其他表的主键,但我有一个需要递增数字的要求。我尝试使用自动增量在表中创建一个字段,但 MySql 抱怨它需要成为主键。

我的应用程序使用 MySql 5,nhibernate 作为 ORM。

我想到的可能的解决方案是:

  • 将主键更改为自动增量字段,但仍将 Id 作为 GUID,因此我的应用程序的其余部分是一致的。

  • 使用 GUID 和自动增量字段创建复合键。

我目前的想法倾向于复合关键思想。

编辑:行 ID(主键)是当前的 GUID。我想添加一个自动递增的 INT 字段,以便人类可读。我只是不想摆脱将 GUID 作为主键的应用程序中的当前标准。

0 投票
2 回答
23945 浏览

sql-server - 主键升序与降序

在 Sql Server 中,我有一个带有 Identity 主键的表。通常我想要最新的几条新记录,所以我获取按主键降序排序的 Top n。我应该将主键索引定义为降序,还是没有区别?即,如果它们按升序排列,那么 sql 可以同样有效地向后工作吗?

0 投票
1 回答
355 浏览

performance - 主键顺序增加的性能

寻找有关为特定密钥模式选择数据库提供程序的指导。

唯一的关键字段将是一个预先分配的唯一顺序递增的数字。每天将添加、处理(更新)50 到 100,000 个项目,然后保留一周左右,之后通常会删除编号最低的记录。记录的数量每天不会有很大的波动,但在周末可能会下降。在 100M 左右之后,这些数字可能会回到 1。

我需要找到一个数据库实现,其中索引查找、添加和删除的效率保持不变。我是否应该担心随着关键值范围不断向上移动,性能可能会下降?

0 投票
7 回答
166389 浏览

sql - 外键是指跨多个表的主键?

我有两个表,即employees_ce 和employees_sn 数据库employees 下。

它们都有各自唯一的主键列。

我有另一个名为 deductions 的表,我想引用employees_ce 和employees_sn 的主键的外键列。这可能吗?

例如

那么这可能吗?