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

nhibernate - NHibernate 3.2 符合复合 id

我正在升级到 NHibernate 3.2。我使用的是 Fluent NHibernate,但我没有看到 NH 3.2 的新版本。我正在考虑使用包含的 Conform 映射器,但它似乎不允许使用复合 ID。我无法更改数据库,所以我有一个约束。

在 Fluent NHibernate 中,我有这个(名称更改仅为示例):

我将如何使用 NH 3.2 中的 Conform 执行此操作?

谢谢,保罗

0 投票
1 回答
877 浏览

performance - 在 Hibernate 中使用复合 ID 是否存在任何性能问题?

有没有人知道在使用复合 ID 时有任何性能问题,无论是Hibernate@EmbeddedId还是?@IdClass

谢谢。

0 投票
1 回答
1605 浏览

mysql - 如何将 Django 与具有复合主键的旧式只读数据库表一起使用?

我想将 Django 用于具有旧数据库的客户端项目。如果可能的话,我希望能够使用 Django 管理界面。但是,数据库有带有多列主键的表,我看到 Django 不喜欢 - 管理界面抛出 MultipleObjectsReturned 异常。

这里有哪些选择?我可以添加新表,但我不能更改现有表,因为其他项目已经在向数据库添加数据。我已经看到其他提到代理键的问题,但似乎需要更改表。

编辑:有问题的数据库是 MySQL 数据库。

0 投票
1 回答
104 浏览

sql - 为具有几列组合唯一的表选择一个好的主键

虽然我已经使用查询 SQL 数据库工作了一段时间,但在实际构建好表方面我还是个新手。我经常纠结的一件事是使用主键。

在我现在创建的用于记录某些警报设备上的错误的表中,我需要 5 列。和列唯一parkcode标识一个站点(尽管该park列是 atm. 未使用)。然后有一serial列标识有问题的设备,以及一个error包含错误代码的列。最后timestamp,当记录错误时有一个 for。

每个站点都有几个不同的设备,一个设备可能会报告几个错误。更正错误后,将从表中删除该行。

因此,要唯一识别错误,我们需要检查parkcode和。根据可能运行的查询,所有这些似乎都是索引的良好候选者。但是,将所有这些定义为组合主键对我来说似乎并不正确,它们毕竟几乎是表中的所有列!serialfault

我曾多次为类似的问题而苦苦挣扎,但我从未觉得自己找到了一个好的解决方案。任何人都可以为这样的表提出一些好的做法,其中大多数(甚至所有)列都需要唯一标识一行?

0 投票
2 回答
3555 浏览

mysql - 如何使用 JPA/Hibernate 设置复合主键的列顺序

我的复合主键中的列排序有问题。我有一个包含以下内容的表:

它用于此映射:

当我使用具体的 @Table 类对 AbstractMessage 进行子类化时,休眠会创建没有错误的数据库和表。问题是休眠正在生成复合主键,其中列的顺序与我想要的相反。

我希望主键是

因为我知道我最多会有 10 个 loc,但每个 loc 有很多 epochtime。

任何帮助将不胜感激 =)

0 投票
1 回答
134 浏览

sql - SQL 如何创建 2 个计算键来创建 1 个复合键?

我想设计一个看起来像这样的表:

avaya nchar(6) NOT NULL,
startDate datetime NOT NULL,
endDate datetime NOT NULL,
sup_assigned nvarchar(255) NOT NULL,
myID int NOT NULL IDENTITY (1, 1)

但我想停止任何插入/更新,其中avaya,startDatesup_assigned在任何记录中相同或avaya,endDatesup_assigned在任何记录中都相同。

我应该如何最好地做到这一点?

我考虑过将包含 的 3 列的集合转换startDate为十六进制,然后添加它们以创建Key1列,对包含 和 的其他 3 列执行相同的endDate操作Key2。然后设置Key1Key2作为复合键。

但我得到这个错误:

  • 无法创建表。
    在此上下文中,用户定义的函数名称不能以数据库名称作为前缀。

我应该如何使用 MS SQL 2005 做到这一点?

0 投票
3 回答
16562 浏览

.net - 如何使用 nHibernate 映射 n 列主键

我有一个 2 列作为 PK(复合主键)的表。

如何将它们映射到“Id” hbm.xml

我怎样才能用流利的 nhibernate 做到这一点?

0 投票
3 回答
1879 浏览

sql - 在 SQL 中逻辑确定复合键

我正在使用一个没有定义主键或唯一键约束的 MSSQL 表。有两个字段,我们称它们为 xId 和 yId,我相信它们一起将是一个复合键,但我想通过检查数据来确认这一点。

我在想我应该能够编写一个 SQL 计数语句,我可以将它与表上的记录总数进行比较,这将在逻辑上确定 xId 和 yId 的组合(或第三列 id 必要)实际上是否可以充当复合键。但是,我无法提出正确的 GROUP BY 或其他类型的子句来确认或反驳这一点。

有任何想法吗?

0 投票
1 回答
1343 浏览

doctrine-orm - Doctrine 2 通过复合键一对一

我正在尝试建立如下所示的关系。每辆车可以有一个评论。一辆汽车在 2 列上有一个主键。评论通过复合主键引用回汽车。很简单,理论上。

当我尝试生成架构时,会弹出以下错误。

从 \Entity\Review 到 \Entity\Car 的关系所引用的列名id不存在。

我究竟做错了什么?

0 投票
1 回答
20310 浏览

mysql - 如何在 MySQL 中删除具有 2 列作为复合主键的多行?

我的 innodb 表具有以下结构: 4 列(CountryID, Year, %Change, Source),其中 2 列(CountryID, Year)作为主键。除了使用 for 循环删除每一行之外,如何删除多行?

我正在寻找类似的东西