问题标签 [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.
sql - 为什么一个 SQL 表有多个主键?
在我的工作(利用我的一些编程技能的非编程工作)中,我被要求从我们外包的定制程序的 SQL 数据库中生成一份报告。
在查看表格时,我发现其中许多都有多个字段分配为 PK,这是为什么呢?与串行数字 ID 相比,这有什么优势?
sql - 数据库设计:来自多个数据源的主键
最初,我从Food Source 1的 excel 文档中导入食物,它具有 VARCHAR 类型 primary* (PK 示例 #FOOD0001)* (因为当时只有 1 个源,我刚刚直接导入具有自动递增 int ID 的食物表)
但我需要从具有完全主键类型 (INT) 的另一个来源Food Source 2导入食物(PK 示例 #25928747)
我目前有:
食物表
名称
FoodId<PK>
_
份量表
INT
ServingId<PK>
,FoodId<FK>
, 名称, 大小
最好的数据库设计是什么,以便可以导入任何不会影响当前 ID 的食物来源,或者至少有一个映射,以便可以轻松更新、删除食物等?出于性能原因,我不想将 ID 更改为 VARCHAR
我的一个想法是在我的食物表中引入一个FoodSourceFoodId,它具有来自食物源的原始ID,这样如果食物从食物源更改/更新,那么它可以很容易地在食物表中更新?
食物表
同样,我可以对服务 id 可能与源数据中的服务 id 相关的服务表做同样的事情
你认为这是要走的路吗?或者你会建议别的吗?
sql - SQL 表主键
使用 Guid 或 Int 主键哪个更好?一些搜索结果支持 Guid,而其他搜索结果支持 Int。那么每个人的真正优点和缺点是什么。
mysql - MySQL - 也使用外键作为主键
我有一个带有主键的表 1 和一个外键的user_id
表 2 user_id
。
user_id
表2中只能存在1条记录,没有它就没有记录。
问题:user_id
表 2 中可以同时是外键和主键,如果是,这是个好主意,有什么优点/缺点?
ms-access - 在将记录添加到链接表时访问 VBA 避免与主键冲突
所以这个问题的根源可能在于糟糕的数据库设计,一些设置方式是从旧版本继承而来的。我只是想不出更好的方法来做到这一点。
我有四个由同一字段链接的表:[OBJECTID]。每个表都链接到控制数据的访问表单。重要的是这些表是分开的,因为数据是地理参考的并且需要单独映射,但是默认情况下它们会相互继承多个字段。
大多数情况下,表是一对一的关系,但偶尔只有第一个表的数据,偶尔只有第二个、第三个和第三个表的数据。第四种形式。
现在,第一个表中的 [OBJECTID] 字段设置为数据类型自动编号,以便其他表中的所有后续链接记录都可以继承该编号。对于 Tbl1 中的记录不是通过 Form1 输入的情况,很容易分配一个与任何当前编号不冲突的编号,但是如何避免分配一个可能与将来生成的 [OBJECTID] 冲突的编号通过 Tbl1 中的自动编号字段?
对不起,如果这令人困惑!提前感谢您帮助我思考这个问题......
sql - SSAS 一对多维度关系
SSAS中的问题给大家。我试图在 OLAP SSAS 多维数据集环境中定义一对多关系。但是,我在定义主键时遇到了问题。示例表如下。前 3 个表之间的关系很容易定义(TradeDate、NYMEX Trades 和 NYMEX Contract)。但是,我的目标是在 NYMEX 合约和模型合约之间建立一对多的关系。换言之,来自 1 份 NYMEX 合约的数据将在模型合约数据集中多次使用。
表:交易日期
- 交易日 (PK)
- 年
- 月等...
表:NYMEX 交易(无 PK)
- 合同名称
- 交易日
- 价格
表:纽约商品交易所合约
- 合同名称 (PK)
表:合同范本
- 模型合同名称 (PK)
- 合同名称
我需要在 NYMEX 合同和模型合同之间创建一对多的关系......但是我的 PK 在模型合同中的错误列上。有任何想法吗?
为了帮助澄清 - 我正在尝试定义一个维度 - >维度关系。表“模型合同”是一个查找表。
mysql - 主键索引自动
我目前正在使用 mysql 做一个项目,并且是一个完美的初学者.....
我用以下列制作了一个表格......
现在我只想知道是否存在ID
自动生成列插入值的任何方法......??
例如: - 如果我插入一个date - 4/10/1992
和Day - WED
作为值。Mysql 服务器应该从1
检查它们是否存在开始自动生成任何整数值。
即在包含值的表中
如果我在上表中插入日期值和日期值(在示例中指定)。它应该插入为
我尝试了使用自动增量器之类的方法.....但恐怕它只会增加 ID 值。
sql - 复合主键的重新排序组合
我有一张桌子
主键是 year + number + document_types_id。
我认为更好的主键是 year + document_types_id + number。有没有办法在不删除和重新创建 PK 的情况下重新排序此组合(不是表中的列、PK 和 FK 组合),因为此 PK 在许多其他表中用作 FK。
谢谢。
c# - Web 应用程序中基于混合字符和整数的标识符最佳实践
我正在开发一个 Web 应用程序,我需要在其中使用标识符来识别某个页面。
通常我会使用自动增量整数,它与数据库中项目的 ID 有关。
例如: http ://example.com/item/1
但我看到越来越多地使用这样的标识(TinyUrl 和 YouTube): http ://example.com/item/1BHYQJh1
我想知道,我应该选择这个解决方案吗?
有什么好处,如果你得到一个非常长的整数,它是否只是为了缩短 ID?
还是要“破解”解决方案,以便人们无法通过将 1 替换为 2 来“猜测”网址。
我真的很感谢最后一个,我想为我的应用程序添加这个额外的安全性。但是有没有人知道有什么代码片段可以做到这一点?
C# 中的示例会很棒。
mysql - 删除该键的记录后,自动重新分配 MySql 表中主键的值
我在 phpMyadmin 中使用 MySql。我有一个包含主键的表。这个主键是'userid',它也是一个“自动增量”字段。该应用程序还具有删除具有“用户 ID”的特定用户的功能。因此,当我再次创建新用户时删除用户后,'userid' 将获得下一个整数的值。我希望表格考虑删除并分配主键值,已删除的数字..
示例:表中的 'userid' 值为 - 1,2,3,4,5,6,7.... 我删除了值为 3 的用户 ID。所以现在当我创建用户的下一条记录时,表应该使用用户 ID 值“3”,因为它不再使用。我怎么能在 phpmyadmin 中做到这一点?
我想这样做以保持用户 ID 的值最小。计数可能会达到用户 ID 的 5 位数值。因此,如果一个 2 位可以使用,因为它之前被删除,使用这个 2 位值将节省数据库的内存使用