问题标签 [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.
database - 在 Products 表的人工主键和自然键之间做出决定
基本上,我需要将来自多个供应商的产品数据合并到一个数据库中(当然,它比这更复杂),其中有几个表需要连接在一起以进行大多数 OLTP 操作。
我将坚持使用默认值并使用自动递增整数作为主键,但是当一个供应商提供他们自己的“ProductiD”字段时,其余的则不提供,我将不得不做很多手动映射到另一个表然后加载数据(因为我必须先将其加载到 Products 表中,然后将 ID 取出并将其与我需要的其他信息一起添加到其他表中)。
或者,我可以使用产品的 SKU 作为其主键,因为 SKU 对于单个产品是唯一的,并且所有供应商都在其数据馈送中提供 SKU。如果我使用 SKU 作为 PK,那么我可以轻松加载数据馈送,因为一切都基于 SKU,这就是它在现实世界中的工作方式。但是,SKU 是字母数字的,并且可能比基于整数的密钥效率略低。
我应该看看有什么想法吗?
database - 如何在 CakePHP 中使模型的数据库可移植?
我对蛋糕不是很熟悉..所以这是我的问题..我们正在mysql上开发一个应用程序,但它最终可能需要部署到mssql或oracle。我们如何确保我们的主键不会出现奇怪的问题?在 mysql 中,它们是 AUTO INCREMENT 列,但在 oracle 中的 IIRC 您需要使用序列……有没有办法使这成为透明的更改?我是不是想多了?
有没有人有在 cakephp 应用程序上切换数据库供应商的经验?有什么需要注意的提示或事情吗?
ruby-on-rails - 如何在 Rails 中为具有多个关键字段的资源定义 RESTful 路由?
我的用户模型具有通常的id
主键,但它也有一个login
可以用作标识符的唯一键。因此,我想定义路由,以便用户可以通过 id 或登录访问。理想情况下,路线应该是这样的:
执行此操作(或类似方法)的最佳方法是什么?
mysql - MySQL 中每个表的更多主/自动添加唯一 ID?
MySQL 中的每个表是否可以有两个或多个主要/自动添加的唯一 ID?例如:
主键 (INT,11);shop_id;invoice_id
是否可以将其设置为 MySQL 表?-> 所以表中还有一些其他值的主键.. ?
我正在一张表中寻找更多的自动增量。
mysql - MySQL中的重复PK
不久前在这个网站上有人告诉我,使用多对多(在我的情况下是 facebook-ish“交友”系统)的唯一方法是执行以下操作:
这不会给我留下很多相同的主键(我相信这是不可能的吗?)如果我不能将 uid 设置为 PK,我怎样才能快速搜索表格?必须有一种方法可以通过 PK 来解决这个问题。
谢谢!
sql - 使用 GUID 作为主键时的“无”或“未使用”外键
我们正在构建一个可能需要复制到许多服务器的应用程序(我希望不会,但是在我们发布在线产品之前,无法知道客户端是否需要他们自己的客户端/服务器副本)。
由于服务器的数量未知,我决定对任何事务表 ID 使用 GUID。由于每个客户端都有自己的数据库,我打算使用 NEWSEQUENTIALID() 默认值,并且最大的表每年将添加不超过 150 万行(但平均为 15K 行),我预计不会有太大的性能问题.
但是,我不确定如何处理我们希望外键指示“未选择”的情况。例如,一个客户端有一个管理员用户。这被设置为 login.id(GUID)的外键(login_id)。但是,如果客户端还没有管理员用户,我们如何轻松设置“None Selected”键?
在以前的应用程序中,我们使用 IDENTITY 列,并在大多数 ID 为 0 的表中插入了一个虚拟条目。是否有一种可接受的方法来提供具有 GUID 的类似功能?
sql - 你可以在 MySql 中使用自动增量而不是主键吗
我使用 GUID 作为所有其他表的主键,但我有一个需要递增数字的要求。我尝试使用自动增量在表中创建一个字段,但 MySql 抱怨它需要成为主键。
我的应用程序使用 MySql 5,nhibernate 作为 ORM。
我想到的可能的解决方案是:
将主键更改为自动增量字段,但仍将 Id 作为 GUID,因此我的应用程序的其余部分是一致的。
使用 GUID 和自动增量字段创建复合键。
我目前的想法倾向于复合关键思想。
编辑:行 ID(主键)是当前的 GUID。我想添加一个自动递增的 INT 字段,以便人类可读。我只是不想摆脱将 GUID 作为主键的应用程序中的当前标准。
sql-server - 主键升序与降序
在 Sql Server 中,我有一个带有 Identity 主键的表。通常我想要最新的几条新记录,所以我获取按主键降序排序的 Top n。我应该将主键索引定义为降序,还是没有区别?即,如果它们按升序排列,那么 sql 可以同样有效地向后工作吗?
performance - 主键顺序增加的性能
寻找有关为特定密钥模式选择数据库提供程序的指导。
唯一的关键字段将是一个预先分配的唯一顺序递增的数字。每天将添加、处理(更新)50 到 100,000 个项目,然后保留一周左右,之后通常会删除编号最低的记录。记录的数量每天不会有很大的波动,但在周末可能会下降。在 100M 左右之后,这些数字可能会回到 1。
我需要找到一个数据库实现,其中索引查找、添加和删除的效率保持不变。我是否应该担心随着关键值范围不断向上移动,性能可能会下降?
sql - 外键是指跨多个表的主键?
我有两个表,即employees_ce 和employees_sn 数据库employees 下。
它们都有各自唯一的主键列。
我有另一个名为 deductions 的表,我想引用employees_ce 和employees_sn 的主键的外键列。这可能吗?
例如
那么这可能吗?