问题标签 [composite-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 回答
1329 浏览

ruby-on-rails - 为什么 Rails 的 Composite_primary_keys gem 不起作用?

我已按照此处的说明进行操作,通过安装composite_primary_keys gem

那工作得很好。现在,当我将以下内容添加到我的模型中时

我得到

此外,如此处所述,在迁移中使用多个主键无效。

任何想法为什么这可能不起作用以及如何使其起作用?

注意:我不想我为什么不应该使用复合键发表演讲——我已经下定决心,只想让它发挥作用。谢谢!

0 投票
4 回答
1043 浏览

mysql - MySQL:自动递增组合键

好的,我有一个看起来像这样的表:

这个想法是 Id 和 Version 一起将成为主键,因为您可以多次发布一个帖子,但版本不同。

我的问题是:我想让 Id 自动递增。在这样的设置中这可能吗?例如,当我插入帖子的第二个版本时,事情会变得一团糟吗?


看来我需要在这里清除一些东西。我想做的是做这样的事情:

这将创建一个带有一些自动递增 id 的新帖子。假设它的 id 为 7。我现在想创建一个新版本:

那行得通吗?还是 id 仍然会获得自动递增的值?即使它确实有效,从数据库设计的角度来看,我是否在做一些我不应该做的事情,等等?

0 投票
3 回答
1499 浏览

mysql - MySQL 复合外键插入失败

我有 2 个表,两者之间有一个复合外键。当我尝试在子表中插入一行时,即使父表中存在这些值,我也会遇到约束失败。

以下是父表的概述:

子表具有处理器和发布日期列的外键:

我在residual_reports 表中插入了一行,其中处理器= 1,posting_date = 2010-03-10。

当我尝试使用处理器 = 1 和posting_date = 2010-03-10 插入residual_data 表时。

我得到一个:

[Err] 1452 - 无法添加或更新子行:外键约束失败 ( residual_data, CONSTRAINT residual_data_ibfk_1FOREIGN KEY ( processor, posting_date) REFERENCES residual_reports( processor, posting_date) ON UPDATE CASCADE)

验证了值肯定存在于父表中,但仍然得到外键约束错误。复合外键是否缺少我的东西?

0 投票
1 回答
1372 浏览

c# - Fluent nhibernate:当我需要字符串时,复合键中的枚举被映射到 int

默认情况下,FNH 的行为是将枚举映射到其在数据库中的字符串。

但是在将枚举映射为复合键的一部分时,该属性被映射为 int。
例如
在这种情况下

地址类型在哪里

FNH 映射为

此映射的架构创建导致

和 hbm 作为

AddressType 应该在哪里生成

如何指示 FNH 将 mappit 作为默认字符串枚举通用映射器?

0 投票
1 回答
118 浏览

relational-database - 是否可以破坏复合键?

是否可以破坏表的复合键并将其中一个用作其他表的主键?如果是,那么请告诉我我该怎么做?

0 投票
1 回答
992 浏览

ruby-on-rails - 在存在代理键的情况下,我应该如何为域约束定义复合外键?

我正在用 Rails 编写一个新应用程序,所以我在每个表上都有一个 id 列。使用外键强制域约束的最佳实践是什么?我将概述我的想法和挫败感。

这就是我想象的“Rails Way”。这是我开始的。

这样做的问题是,来自一家公司的产品可能出现在另一家公司的发票上。我向 LineItems 添加了一个 (company_id: integer, not null),有点像我只使用自然键和序列号时所做的,然后添加了一个复合外键。

这将 LineItems 适当地限制为一家公司,但它似乎过度设计和错误。LineItems 中的 company_id 是无关的,因为代理外键在外表中已经是唯一的。Postgres 要求我为引用的属性添加一个唯一索引,因此我在产品和发票中的 (id, company_id) 上创建一个唯一索引,即使 id 只是唯一的。

下表包含自然键和序列发票编号不会增加这种复杂性,因为引用的列已经是自然键,因此它们已经具有唯一索引。

我可以忽略 LineItems 表中的代理键,但这似乎也是错误的。当数据库已经有一个整数可供使用时,为什么要在 char 上加入数据库?此外,完全按照上述方式进行操作将需要我将 company_code(自然外键)添加到 Products 和 Invoices。

妥协...

不需要其他表中的自然外键,但当有可用整数时,它仍然在 char 上加入。

有没有一种干净的方法可以像上帝预期的那样使用外键强制域约束,但是在代理存在的情况下,而不会将模式和索引变成复杂的混乱?

0 投票
1 回答
2569 浏览

database - 使用 phpmyAdmin(复合键)的数据库关系

我对制作一个好的关系数据库有点困惑。我正在使用 phpmyAdmin 创建数据库。我有以下四个表。不要担心地点和价格是可选的,它们只是。

  1. 人(必填)
  2. 项目(必填)
  3. 地点(可选)
  4. 价格(可选)

项目是主​​表。它将始终与人员相关联。* 我知道你在 mysql 中加入了表格。如果我想将表链接在一起,我可以使用复合键(使用每个表中的 id),但是这是链接表的最正确方法吗?这也意味着项目将有 5 个 id,包括它自己的。这一切都会导致空值(显然是一个很大的不,我可以理解),因为如果地点和价格是可选的并且不用于项目表的一个条目,我将在那里有一个空值。请帮忙!

提前致谢。我希望这是有道理的。

0 投票
2 回答
6796 浏览

asp.net-mvc - Asp.Net MVC 使用复合键创建/更新/删除

我不确定如何使用复合键。

我的 Categories 表有 CategoryId (PK,FK)、LanguageId (PK,FK)、CategoryName

我按照这个设计

默认操作看起来像

和 ActionLink

我应该使用类似的东西吗

所以网址是

/Category/Edit/5-5

或将路线更改为类似

/Category/Edit/5/5

或者有什么更好的方法?

0 投票
9 回答
78231 浏览

java - @OneToMany 和复合主键?

我正在使用带有注释的 Hibernate(在 spring 中),并且我有一个具有有序、多对一关系的对象,该对象具有一个复合主键,其中一个组件是返回到父对象的id。

结构看起来像这样:

我尝试了各种注释组合,但似乎都不起作用。这是我能想到的最接近的:

经过长时间的实验后,我得出了这个结论,在这些实验中,我的大多数其他尝试都产生了由于各种原因休眠甚至无法加载的实体。

更新:感谢大家的评论;我已经取得了一些进展。我做了一些调整,我认为它更接近(我已经更新了上面的代码)。但是,现在问题在于插入。父对象似乎保存得很好,但子对象没有保存,我能够确定的是休眠没有填写子对象的(复合)主键的 parentId 部分,所以我m 得到一个非唯一错误:

我在自己的代码中填充了nameandpos属性,但是我当然不知道父 ID,因为它还没有保存。关于如何说服hibernate填写这个的任何想法?

谢谢!

0 投票
1 回答
941 浏览

c# - NHibernate MySQL 复合键

我正在尝试创建一个模拟内置 MySQL.DB 表中的 PrimaryKeys 集的复合键。

Db主键如下:

这是我的DataBasePrivilege.hbm.xml文件

以下是我的复合键的 2 个类:

以下是我得到的例外:

编辑:现在我得到了这个例外。有人可以帮忙吗?