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

java - 休眠零到一

我正在尝试在两个实体之间建立零对一的关系。也就是说,Parent 可以在没有关联的 Child 实体的情况下保存,也可以与关联的 Child 一起保存。以下是 2 个实体类...


员工(父母)


员工信息(儿童)

在 MySql DB 中,将唯一 Parent (Employee) 表的这种关系和 id 列设置为 AUTO INCREMENT ,问题是在保存 Parent->Child 对象图时,我得到以下异常

我尝试在 DB 中将 Child Table 的 Id 属性设置为 AUTO INCREMENT,这样的 Parent->Child 对象图的持久性是成功的。但是,这里描述的问题浮出水面,因为我有一个场景,我想在没有关联 EmpInfo 对象的情况下保存父 (Employee) 对象,因此不希望在 Child's id column 上有 AUTO INCREMENT


一种解决方案可能是不使用 PrimaryKeyJoinColumn,而是使用特定的 JoinColumn,但这会在我现有的表中添加一个不必要的列。


有没有人遇到过这样的问题?如果是的话,任何指针都会很有帮助。

0 投票
1 回答
915 浏览

hibernate - hibernate 3.6如何级联保存简单的共享主键一对一映射

我需要一个与另一个实体具有一对一关系的实体的简单休眠示例,它们都共享主键。我只需要保存自动生成其主键的主实体,而其他依赖实体会自动级联保存。例如:

我们能够轻松设置这两个实体。但是我们必须先保存人,然后通过hibernate保存名称。我们只需要救人,这一点非常重要。

0 投票
7 回答
8940 浏览

mysql - 共享主键

我猜这是一个半常见的问题,但我在过去的问题列表中找不到它。我有一组需要共享主键索引的产品表。假设如下:

显然,在两个产品表之间有一个共享索引会很有用。请注意,将它们分开的想法是因为它们在基础之外具有很大不同的字段集,但是它们共享一个共同的分类。

更新:

很多人建议使用表继承(或 gen-spec)。这是我知道的一个选项,但在其他数据库系统中,我可以在表之间共享一个序列,我希望 MySQL 有一个类似的解决方案。我将假设它不基于响应。我想我将不得不使用表继承......谢谢大家。

0 投票
1 回答
269 浏览

nhibernate - NHibernate的主键是1-1映射吗?

也许我只是设计错了,如果是这样,我很乐意退出并以另一种方式掠夺它......

我目前有 2 个这样的表,它们有一个共享的主键:

人 - id (PK)、姓名、created_date、...

person_details - person_id (PK),年龄,身高,...

现在这个人被创建了,一个人只能有一组细节。所以最初我认为在映射 person_details 时,我会分配 PK,因为它是由人生成的。

现在我对如何在数据库中创建此数据的第一个实例有点困惑,因为当我创建一个包含 PersonDetails 模型实例的 Person 模型时,此时两者都没有 Id,因为他们没有'没有被创建。那么如何告诉 PersonDetails 模型在创建时从 Parent Person 模型中获取其 Id 呢?

我只是发疯了还是我需要在 Person 模型中做一个简单的映射来告诉它在从自己的 Id 插入时推断 PersonDetails Id?我最终需要 PersonDetails 上的 Person_Id ,因为如果在初始创建后进行更改,它们会通过 Ajax 从外部更新到人员...

0 投票
2 回答
4178 浏览

sql - SQL 更新:无法更改第一条记录的复合键值之一

MSSQL Server中,我有一个带有复合主键StudentIDCourseID)的StudentCourse表。我正在尝试将所选学生更改为另一门课程。每个课程组的一个学生记录阻止我做手术。UPDATE

我可以将(1, 2) , (1, 3)记录的CourseID更新为5,但我无法将(1, 1)记录的CourseID 更新5。同样,我可以将(2, 2)(2, 3)记录的CourseID更新为5,但我无法将(2,4)记录的CourseID更新为5

只有这样CourseID组的一条记录阻止我更改其CourseID字段。我收到以下错误。

违反主键约束“PK_StudentCourse”。无法在对象“StudentCourse”中插入重复键。该语句已终止。

我不知道是每组的第一条记录还是最后一条记录禁止我更改CourseID。我确定StudentCourse表中没有CourseID = 5的记录,并且我在Course表中有CourseID5的课程记录。

任何帮助,将不胜感激。

0 投票
2 回答
1861 浏览

orm - JPA - One to One relationship with shared primary key among multiple tables

Consider the below example:

I have 3 tables: Fruit, Orange and Apple

id is generated in fruit table and is the primary key here

id is also primary key for Orange and Apple (shared primary key)

So for e.g. if id in fruit is 1, 2, 3, 4, 5 -- then scenario could be 1, 2 are Orange, 3, 4 are Apple and 5 is again Orange..

So Orange table will have id 1,2,5 while Apple table will have id 3, 4

Issue: How to create entity classes capturing relationshipd also with only JPA annotations (I don't want to use hibernate generatedValue annotation).

If such annotation is possible with pure JPA then please guide me towards it.

Nik

0 投票
1 回答
776 浏览

c# - 使用 EF 4.1 创建一个主表,其中两个子表以一对零或一的形式链接

使用 MVC EF4.1,我正在尝试将表(TableMaster)链接到 TableChildOne(关系一对零或一)以及 TableChildTwo(也是一对零或一)。TableChildOne 和 TableChildTwo 没有直接链接。

TablechildOne 和 TableChildTwo 需要共享 TableMaster 的主键(我看了这是不可能的,有什么变通方法吗?)

我添加了一张图片以使其更加清晰,不确定是否应该在某处添加外键,这不是由代码创建的实际模型,而是我想要的。不确定某处是否应该有外键?

图片:http ://www.davidsmit.za.net/img/untitled.png

我下面的代码可以编译,但是在尝试添加控制器时,出现错误:

“已添加具有相同密钥的项目”

当我完全删除第二张桌子时,它工作正常。

我使用下面的链接作为示例(表 OfficeAssignment 和 Student),它显示了如何将表链接到一对零或一。但我无法添加另一个具有相同链接的表: http ://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model- for-an-asp-net-mvc-应用程序

任何帮助将不胜感激。

谢谢appelmeester

0 投票
2 回答
703 浏览

entity-framework - 实体框架 - 添加具有共享主键的实体(及其导航属性)

这是我要解决的问题的简化版本:

有两个实体:

物品

物品 ID (PK)

其他简单属性...

WorkItem(导航属性)

工作项

物品 ID (PK)

其他简单属性...

项目(导航属性)

 

我需要为它创建一个项目和一个 WorkItem,并且我需要设置两个导航属性,以便两个实体可以在保存之前相互指向。

我可以这样做:

不幸的是,在储蓄方面,这失败了。我相信 EF 在尝试设置 WorkItem 的 Item 关联时,会尝试设置 WorkItem 的主键。

有人可以告诉我实现这一目标的正确方法吗?

 
更新:  
 
所以,我尝试使用继承来构建模型。模型构建并验证。

不幸的是,为我的模型添加 WCF 数据服务并尝试在浏览器中查看该服务给了我这个:

CostItem 是另一个实体,如 WorkItem,它派生自 Item。

0 投票
3 回答
302 浏览

database-design - 外键作为主键或仅将代理主键与 JPA 上下文中的外键不同

在 JPA 上下文中使用 FK 作为 PK 或使用代理 PK 和 FK 作为 FK 的最佳实践是什么?我看到几次有人说他们必须将 FK 映射为 PK,因为他们有遗留数据库。那么这是否意味着对于新表,如果您可以控制创建它们,最好使用以下结构:

代替:

0 投票
2 回答
1667 浏览

sql - SQL,两张表,一张共享主键

我想要两个表,这样我就可以将旧记录移动到第二个表中,这样我就可以保持主表很小,但仍然希望能够使用一个 int 主键链接到两个表。

例如:(我已经根据我的真实表中的内容简化了这个示例)我正在跟踪会话并希望将过期的会话移动到 Expired_Sessions 表中,但我还将会话链接到像 Login_Attempts 表这样的日志表,但我没有不想破坏这些表的链接。

我确实想到了两种可行的方法,但我认为应该有更好的方法来做到这一点?

一:在我的 sys_constants 表中存储一个主键计数器,并在每次添加记录时递增它。或者

二:添加另一个表,将会话表主键和过期会话主键链接到第三个主键,然后使用第三个主键链接到我的日志表。