问题标签 [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 投票
9 回答
4075 浏览

database-design - 对主键使用项目特定前缀和自动编号?

我们今天早上开了个会,讨论如何为我们正在制作的数据库中的一些资产存储我们的 ID,讨论产生了一些热度,所以我决定咨询 SO 的专家。

我认为我们应该拥有的表结构(短版)如下所示:

示例 1)

  • AssetId - int(32) - 主键
  • 类型 - 字符串

所以一些示例数据是这样的:

等等

团队的另一位成员提出了这样的建议:

例 2)

  • AssetId - 字符串 - 主键
  • 类型 - 字符串

所以一些示例数据是这样的:

我们制作一个简短版本的类型并将其附加到 ID 的前面并将其存储在数据库中。我见过一些这样做的资产数据库,但从未真正采用过这种方法。

由于排序原因,我从来没有真正喜欢过使用字符串作为 ID 的想法。我也觉得当你已经拥有资产商店的类型时,它只是为了它而存储无用的信息。

你会采取什么方法?为什么?使用方法 1 超过 2 有什么好处吗?

编辑:是的,我将在方法 1 中使用 AUTO_INCREMENT。

0 投票
15 回答
153285 浏览

sql - 字符串作为 SQL 数据库中的主键

我对数据库及其工作原理不是很熟悉。从性能的角度来看(插入/更新/查询)使用字符串作为主键是否比整数慢?

0 投票
5 回答
669 浏览

sql-server-2005 - SQL 2005 中表的主键和聚集索引的智能选择,以提高选择单记录或多记录的性能

编辑:我添加了“Slug”列来解决特定记录选择的性能问题。

我的表格中有以下列。

大多数时候,我按 EntryDate 订购 select 语句,如下所示。

如果有重复的EntryDates,我将按EntryDate 和Id 对其进行排序。

当我选择 A 记录时,我执行以下操作。

我有一个独特的 Slug & EntryDate 键。

在我的情况下,什么是键和索引的明智选择?我面临性能问题可能是因为我按未聚集索引的列排序。

我应该将 Id 设置为非聚集主键并将 EntryDate 设置为聚集索引吗?

我感谢您的所有帮助。谢谢。

编辑:

我没有尝试在 EntryDate 上添加非聚集索引。从后端插入的数据,因此插入的性能对我来说没什么大不了的。此外,EntryDate 并不总是插入日期。它可以是过去的日期。后端用户选择日期。

0 投票
1 回答
9307 浏览

c# - 如何修复:对于不返回任何键列信息的 SelectCommand,不支持为 DeleteCommand 生成动态 SQL

我的代码有效。在我复制了大约 10 个表后,我得到了一个错误。Dynamic SQL generation for the DeleteCommand is not supported against a SelectCommand that does not return any key column information.好的,我知道我需要生成一个主键。但是为什么我可以复制 10 个左右的表,然后我得到错误。每一行都必须返回一个主键吗?如果一行没有主键,我如何生成一个?

这是我的代码:

谷歌在这方面对我帮助不大。请提供一个编码示例。

0 投票
2 回答
232 浏览

php - 在 MySQL 中检索多列 PK

如何在 MySQL 中检索多列 PK?

例如,我将主键设置为 PRIMARY KEY ( donor_id, country_id)

现在,如果我想获取主键值而不在选择查询中连接这两个字段,我该怎么做?我想在视图中使用它(或者更好的是,直接在 phpmaker 中)。

0 投票
5 回答
1376 浏览

sql - SQL Server PK 最佳实践

我一直想知道在 SQL Server 的 M2M 表中设置 PK 的最佳实践或后果是什么。例如:

我有 2 张桌子

  • 用户
  • 角色

我正在制作一张新桌子

  • 用户角色

其中有 2 个字段 RoleId 和 UserID

现在我应该

  1. 创建一个 UserRoleID 作为 PK,并使 UserID 和 RoleID 成为 FK
    • 制作 PK UserID AND RoleID 并将它们设置为 FK
    • 别的东西

我想知道每个选项的性能问题以及推荐的最佳实践是什么。

0 投票
8 回答
17426 浏览

oracle - 在多个列中创建主键是否会为所有列生成索引?

如果我在 Oracle 的多个列中设置主键,是否还需要在需要时创建索引?

我相信,当您在列上设置主键时,您会为其编制索引;多列 PK 是否相同?

谢谢

0 投票
6 回答
4130 浏览

database - 本机主键还是自动生成的主键?

通常是使用本机主键(即现有列或列组合)还是将主键设置为自动生成的整数行更好?

编辑:
有人向我指出这与这个问题非常相似。

这里的共识是使用代理键,这是我的自然倾向,但我的老板告诉我,我也应该尽可能使用自然键。他的建议可能最适合这个特定的应用程序,因为行中的名称唯一标识它,我们需要保持查看旧数据的能力,因此对名称/规则的任何更改都将意味着新的唯一行。

虽然这里的答案都很有帮助,但它们中的大多数都是基于主观的“这是你应该做的”,并且没有引用支持来源。我是否遗漏了一些必要的阅读材料,或者最佳实践数据库设计是否高度主观和/或依赖于应用程序?

0 投票
12 回答
6832 浏览

sql - 在 MS SQL 中使用 GUID 作为主键是不是一个坏主意?

我们有一个使用 UniqueIdentifier 作为每个表的主键的系统。我们已经注意到这是一个坏主意。我看过关于这个主题的类似帖子,但我对任何 MS SQL 性能和由于这个决定可能遇到的其他潜在问题感兴趣。

0 投票
13 回答
62684 浏览

.net - ADO.NET Entity Framework:更新向导不会添加表

我在我的项目中添加了一个新的 ADO.Net 实体数据模型,并使用更新向导将表添加到模型中。五个选定的表格被添加到设计图面上。其他两个表不会添加。我在向导中选择它们并单击完成,但它们从未出现在设计图面上。

这是一个错误,还是在某些情况下无法将表添加到模型中(按设计)?


更新:XML (*.edmx) 揭示了问题。