问题标签 [composite-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 投票
1 回答
417 浏览

.net - EF 代码优先,带静态部分的复合外键

我在现有 SQL DB 上遇到 EF 4.2 Code First 问题。

我有多个实体,如公司、用户等。

公共信息存储在一个名为 Entity 的单独表中,主键为 [EntityId, EntityTypeId]。

  • EntityId 对应 CorporateId、UserId 等。
  • EntityTypeId 是一个静态 ID,用作实体之间的鉴别器

我有以下课程设计。

如您所见,EntityTypeId 是静态属性,用户表中没有相应的列。

地图:

当我运行此代码时,我收到错误消息:System.Data.SqlClient.SqlException:列名“EntityTypeId”无效。

我认为这是因为 EntityTypeId 列在 User 表中不存在。有没有办法解决这个问题,因为我不能在表格上创建这个列?!

非常感谢

0 投票
3 回答
1210 浏览

ruby-on-rails - 具有复合主键(id + parent_id)的 Rails 3.1 嵌套资源

假设我需要嵌套在 routes.rb 中的两个资源,如下所示:

按照惯例, comments.id将是评论主键comments.post_id将是外键

我需要主键复合键 [comments.post_id, comments.id]

这样我就可以对每个具有 id == 1 的不同帖子的第一条评论,对每个具有 id == 2 的不同帖子的第二条评论等等......

当然,我还需要禁用所有引用评论(子资源)的路由,而不是引用它的帖子(父资源)。

这只是一个例子,我的实际项目与博客无关(我对这个问题的处理方式不同),我想知道是否有办法为嵌套资源实现这种行为以实现兼容性使用遗留数据库。

谢谢你。

0 投票
2 回答
4760 浏览

entity-framework - 无法在没有主键的实体模型中添加表

我在使用实体数据模型时遇到问题。我无法在没有主键的实体模型中添加表。具有复合键的表也是如此。

0 投票
6 回答
200571 浏览

sql - 如何使用 SQL 语法更改主键约束?

我有一个表,它的主键约束中缺少一列。我不想通过 SQL Server 对其进行编辑,而是将其放入脚本中以将其添加为我们更新脚本的一部分。

我可以使用什么语法来做到这一点?我必须删除并重新创建键约束吗?

0 投票
5 回答
9511 浏览

sql - SQL 主键 - 有必要吗?

我有一个项目清单。这些物品中的大部分都没有库存。item 表有 id、name、description。项目的数量存储在另一个名为 inventory 的表中。库存表具有 item_id 和库存商品的数量。

我需要库存表的主键吗?如果是这样,我应该使用串行密钥还是复合密钥?表什么时候可以没有主键?

编辑:谢谢大家提供的非常丰富的信息。除了极少数例外,我现在将始终拥有主键。我还学到了更多关于串行键和复合键的知识。

0 投票
1 回答
279 浏览

mysql - 在这种情况下,自然键和复合键之间有什么更好

我有一张表,必须在 mysql 中存储数百万个帖子(在不久的将来)。这是简化的结构(我没有指出我的主键,因为我的问题是基于此的):

我的问题是:定义密钥的最佳方式是什么?

  1. 考虑到需要存储的记录数量,最好仅将 my AUTO_INCREMENTing ' ' 用作主键和唯一键吗?post_id

  2. 我必须同时使用 ' post_id' 和 ' user_id' 作为复合键才能用作主键和唯一键吗?如果这是最好的,我如何在其他表中使用它作为外键?我是否只是将它们添加为这些表中的列?

您能否还指出每个的优点和缺点(如果有),也许还有一些关于使用哪种 ENGINE 的建议。如果我使用第二个选项,我认为 Innodb 会是最好的。我不知道。

0 投票
2 回答
290 浏览

mysql - 处理日期/时间时的复合主键或代理

我看过很多关于这个的讨论。我只是在寻求您对此的建议。基本上,我使用的是 PHP 和 MySQL。我有一张users桌子:

和另一个存储用户更新的表

用户的个人资料页面将显示用户最近的 5 次更新。问题是:

  1. 对于updates表,是否可以将uiddate设置为复合主键,其中uid引用uidusers
  2. 或者最好只创建另一个updates自动递增的列并将用作主键(而 uid 将是 FK 到 uid in users)?
0 投票
6 回答
373058 浏览

mysql - ALTER TABLE to add a composite primary key

I have a table called provider. I have three columns called person, place, thing. There can be duplicate persons, duplicate places, and duplicate things, but there can never be a dupicate person-place-thing combination.

How would I ALTER TABLE to add a composite primary key for this table in MySQL with the these three columns?

0 投票
1 回答
1788 浏览

composite-key - Teradata Database:唯一的复合键是否可能?

这是我第一次真正使用复合键。我有一个由三个外键列组成的记录。这三个键的组合必须是唯一的。如果插入重复记录,则应抛出约束错误,就像它是唯一的单字段主键一样。

这适用于 Teradata 数据库。

0 投票
0 回答
668 浏览

sqlalchemy - Sqlalchemy:如何设置多列主键的键长?

我知道我可以mysql_length = xxx用来设置索引的长度。

但是如何将此约束应用于多列主键?(使用PrimaryKeyConstraint

PS:我的主要列是 A,B (A 是一个Integer,B 是一个String(256),问题是当添加到复合键时如何减少它)