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

database - 应该在只有 2 列的表上使用主键,两者都是唯一的

如果我有如下表

客户地址(客户 ID,地址 ID)

我是否还需要一个额外的主键,例如 int auto increment?或者将两列都设置为主键就足够了?

假设:删除时,我只会按 customerId 删除,绝不会同时按 customerId 和 AddressId

0 投票
2 回答
699 浏览

php - 在 MySQL 中使用唯一引用作为主键

我有一个普遍的问题。

我非常喜欢生成这样的页面的 URL:

www.example.com/order/1e4fk678

其中 1e4fk678 是发布到生成输出的 php 文件的变量。

我的问题是:创建数据库表的最佳方法是什么。具有主键自动认证的 ID 只会生成像 1、2、3、...这样的 ID。

那么使用唯一 id 并导致快速数据库跟踪/跟踪的最佳方法是什么?

谢谢

0 投票
1 回答
3441 浏览

duplicates - 关于重复和区域服务器热点的 HBase 表键设计

我需要存储由userId标识的用户生成的事件。每个用户都属于一个由companyId标识的公司。我在 HBase 中提出了一个表设计,如下所示:

行键:<公司ID ><用户ID ><时间戳>

column-family : info (封装事件属性集,如下所示)

:< attr1 >、< attr2 >....< attrn >

我知道这种键设计将有助于稍后通过使用部分键扫描在companyId和/或userId上查询数据。话虽如此,我有一些问题和疑虑,想得到一些想法。

1-如果我们有一个读取给定时间范围的所有数据的读取用例,那么在当前的设计中,我们将无法使用 rowKey。相反,我们将不得不对时间戳字段进行全面扫描和过滤行(作为attr列之一单独维护)我在这里完全偏离基础吗?

2-如何处理重复?我知道 HBase 在这种情况下会创建该行的新版本,但它是否允许稍后根据 1 中提到的读取用例进行读取?我知道您可以在查询时控制版本,但这会是一个好的设计还是错误地重载本机功能?

3-这与区域服务器热点有关。我们没有单片密钥,但如果某个特定公司或用户非常活跃,我们仍然可以解决这个问题。基于服务器数量的散列和分桶在这种情况下不起作用?也许如果我们对时间戳字段进行散列并将其附加到 rowKey 而不是原始值?但是问题在于无法扫描密钥的时间戳组件。我们必须在一个列中有一个单独的列 (attr) 来捕获它。有什么建议么?

非常感谢您提供的任何输入(评论、链接、书籍、想法)。

0 投票
3 回答
47942 浏览

mysql - 如何从同一个表中的主键和外键的mysql表中删除主键。?

我有两个不同的表,每个表有 20k 个条目,我错误地将 summaryId 作为同一个表中的主键和外键,但现在我想删除主键约束,它也是自动增量。当我尝试删除主键语法时,它返回一个错误:

#1025 - 将 '.\tg#sql-a38_7f' 重命名为 '.\tg\rest_web_availability_summary_pm' 时出错(错误号:150)

我尝试了以下查询。

如果有人有任何想法,请告诉我如何删除主键。

0 投票
2 回答
310 浏览

oracle - Oracle 外键或主键

当我应该使用主键或外键时,我有点困惑。我有两个表,在这两个表中,一些列引用了其他表中的主键列。他们来了:

在第一个表中,我从引用其他表中的列的两列中创建了一个复合主键。这些列恰好是各自表中的主键。

在第二个表中,我再次创建了一个外键来引用另一个表中的主键。但是什么是最佳实践?第一个表中的键是否也应该是外键,因为它引用了其他表中的主键?

0 投票
2 回答
186 浏览

nosql - HBase 是否支持对列表属性和不等式运算符进行索引?

有 GAE 大表的背景。根据我的阅读,HBase 是 Big Table 的开源版本,在功能上应该非常相似。

使用 Big Table,可以在 Olog(n) 时间内对该对象进行索引和查询:

目的

询问

几个小时以来一直在研究 HBase 文档,但似乎仍然无法找到这个问题的明确答案:

问题:

我可以使用 HBase 在大约 Olog(n) 时间内执行一个不相等运算符和两个或多个相等运算符的搜索吗?

这在 GAE 的大表中是可能的,如下所示:https ://developers.google.com/appengine/docs/python/datastore/queries#Restrictions_on_Queries

非常感谢!

0 投票
2 回答
97 浏览

sql - 在不更改列内容的情况下为 id 增加 +1

我有这个随机内容的随机表。

编号 | 姓名| 任务
1 | 啊啊啊 基特
2 | bbbb | 等
3 | cccc| qwqw
4 | dddd | qwert
5 | eeee | 潜力
6 | 呸呸呸| 多多


我想要的是在上表中添加一个 id=3 的列,具有不同的名称和不同的任务,但旧的 id =3 我想要一个 id = 4 的名称和它之前的任务,当它是 id =3,OLD id =4 变成 id=5,名字和任务为 id 5,以此类推。
就像我想在列中输入一列,而在下面的列中我想增加 id +1 但列保持不变。下面的例子:


编号 | 姓名| 任务
1 | 啊啊啊 基特
2 | bbbb | 等
3 | zzzzzz| zzzz
4 | cccc| qwqw
5 | dddd | qwert
6 | eeee | 潜力
7 | 呸呸呸| 多多

为什么我要这样做?我有一个有 2 个 CLOB 的表。在这些 CLOBS 内部有不同的查询,例如: id =1 具有创建表的 clob id=2 为列插入 id=3 具有创建另一个表 id=4 具有
如果您在一个文本中添加所有这些 id 的功能(或 clob)他们必须先创建然后插入然后再创建函数。那张桌子就像一个巨大的脚本。
我为什么要这样做?开发人员正在构建他们的应用程序,他们希望 sql 以特定顺序工作,我有 6 个开发人员,正在组织数据建模和性能以及脚本的运行方式。所以上表是组织脚本的调用他们衰弱

0 投票
2 回答
5934 浏览

sql-server - SQL Server 中主键(簇)和聚集唯一索引的区别

我了解什么是主键和唯一聚集索引我的问题是为什么在定义唯一聚集索引时需要主键。仅考虑性能良好的数据库设计。

根据我的理解,当我们定义一个聚集唯一索引时,它会对数据进行物理排序,这是表性能所必需的,我们是否定义主键并不重要

0 投票
0 回答
79 浏览

sql - 数据库架构设计 - 一个外键引用不同表中的 2 个主键

我有一个数据架构设计问题,希望你能帮助我。我无法改变设计的当前架构,我只能添加它。

当前设置

  • 我有 2 个表customerType1& customerType2- 都包含一个customerId列和一个代理ID字段,这是一个递增的身份字段
  • customerType1当这些客户被计费时,账单被记录customerType2在同一个表中。

问题

  • 我想将此计费表链接到customerType表,而不必在Billing表中列出 2 个外键,每个代理 ID 一个。

谁能建议如何最好地处理这个问题?

提前致谢,

问候,

戴夫

0 投票
3 回答
239 浏览

database - 主键和复合键

如果我们有一个主键是复合键的表,我们是否总是创建一个新列作为主键而不是复合键?还是取决于数据库分析?

哪种方式最好?为什么?