问题标签 [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-design - 对主键使用项目特定前缀和自动编号?
我们今天早上开了个会,讨论如何为我们正在制作的数据库中的一些资产存储我们的 ID,讨论产生了一些热度,所以我决定咨询 SO 的专家。
我认为我们应该拥有的表结构(短版)如下所示:
示例 1)
- AssetId - int(32) - 主键
- 类型 - 字符串
所以一些示例数据是这样的:
等等
团队的另一位成员提出了这样的建议:
例 2)
- AssetId - 字符串 - 主键
- 类型 - 字符串
所以一些示例数据是这样的:
我们制作一个简短版本的类型并将其附加到 ID 的前面并将其存储在数据库中。我见过一些这样做的资产数据库,但从未真正采用过这种方法。
由于排序原因,我从来没有真正喜欢过使用字符串作为 ID 的想法。我也觉得当你已经拥有资产商店的类型时,它只是为了它而存储无用的信息。
你会采取什么方法?为什么?使用方法 1 超过 2 有什么好处吗?
编辑:是的,我将在方法 1 中使用 AUTO_INCREMENT。
sql - 字符串作为 SQL 数据库中的主键
我对数据库及其工作原理不是很熟悉。从性能的角度来看(插入/更新/查询)使用字符串作为主键是否比整数慢?
sql-server-2005 - SQL 2005 中表的主键和聚集索引的智能选择,以提高选择单记录或多记录的性能
编辑:我添加了“Slug”列来解决特定记录选择的性能问题。
我的表格中有以下列。
大多数时候,我按 EntryDate 订购 select 语句,如下所示。
如果有重复的EntryDates,我将按EntryDate 和Id 对其进行排序。
当我选择 A 记录时,我执行以下操作。
我有一个独特的 Slug & EntryDate 键。
在我的情况下,什么是键和索引的明智选择?我面临性能问题可能是因为我按未聚集索引的列排序。
我应该将 Id 设置为非聚集主键并将 EntryDate 设置为聚集索引吗?
我感谢您的所有帮助。谢谢。
编辑:
我没有尝试在 EntryDate 上添加非聚集索引。从后端插入的数据,因此插入的性能对我来说没什么大不了的。此外,EntryDate 并不总是插入日期。它可以是过去的日期。后端用户选择日期。
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 个左右的表,然后我得到错误。每一行都必须返回一个主键吗?如果一行没有主键,我如何生成一个?
这是我的代码:
谷歌在这方面对我帮助不大。请提供一个编码示例。
php - 在 MySQL 中检索多列 PK
如何在 MySQL 中检索多列 PK?
例如,我将主键设置为 PRIMARY KEY ( donor_id
, country_id
)
现在,如果我想获取主键值而不在选择查询中连接这两个字段,我该怎么做?我想在视图中使用它(或者更好的是,直接在 phpmaker 中)。
sql - SQL Server PK 最佳实践
我一直想知道在 SQL Server 的 M2M 表中设置 PK 的最佳实践或后果是什么。例如:
我有 2 张桌子
- 用户
- 角色
我正在制作一张新桌子
- 用户角色
其中有 2 个字段 RoleId 和 UserID
现在我应该
- 创建一个 UserRoleID 作为 PK,并使 UserID 和 RoleID 成为 FK
- 制作 PK UserID AND RoleID 并将它们设置为 FK
- 别的东西
我想知道每个选项的性能问题以及推荐的最佳实践是什么。
oracle - 在多个列中创建主键是否会为所有列生成索引?
如果我在 Oracle 的多个列中设置主键,是否还需要在需要时创建索引?
我相信,当您在一列上设置主键时,您会为其编制索引;多列 PK 是否相同?
谢谢
database - 本机主键还是自动生成的主键?
通常是使用本机主键(即现有列或列组合)还是将主键设置为自动生成的整数行更好?
编辑:
有人向我指出这与这个问题非常相似。
这里的共识是使用代理键,这是我的自然倾向,但我的老板告诉我,我也应该尽可能使用自然键。他的建议可能最适合这个特定的应用程序,因为行中的名称唯一标识它,我们需要保持查看旧数据的能力,因此对名称/规则的任何更改都将意味着新的唯一行。
虽然这里的答案都很有帮助,但它们中的大多数都是基于主观的“这是你应该做的”,并且没有引用支持来源。我是否遗漏了一些必要的阅读材料,或者最佳实践数据库设计是否高度主观和/或依赖于应用程序?
sql - 在 MS SQL 中使用 GUID 作为主键是不是一个坏主意?
我们有一个使用 UniqueIdentifier 作为每个表的主键的系统。我们已经注意到这是一个坏主意。我看过关于这个主题的类似帖子,但我对任何 MS SQL 性能和由于这个决定可能遇到的其他潜在问题感兴趣。
.net - ADO.NET Entity Framework:更新向导不会添加表
我在我的项目中添加了一个新的 ADO.Net 实体数据模型,并使用更新向导将表添加到模型中。五个选定的表格被添加到设计图面上。其他两个表不会添加。我在向导中选择它们并单击完成,但它们从未出现在设计图面上。
这是一个错误,还是在某些情况下无法将表添加到模型中(按设计)?
更新:XML (*.edmx) 揭示了问题。