问题标签 [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.
ruby-on-rails - Rails ORM,它可以处理引用同一个表的两个外键的复合主键吗?
编辑于 30 日,03:16,以显示改进的迁移和模型
我有一个元素表,每个元素都可以连接到许多其他元素。在 Rails 的迁移和模型中可以做到这一点吗?(以下是用SQL实现的)
元素表:具有整数 id 主键字段以及其他字段。
元素间链接表:
此查询返回通过其 id 链接到特定元素的所有元素,例如 3:
这在 Postgres 中有效,我想翻译成 Rails,但正在努力为 Rails 找到解决方案……我在做什么是愚蠢的,还是只是不那么常见?
到目前为止,我有迁移(它有一个假的复合主键,没有引用 elements.id 的外键):
并有以下型号:
任何想法将不胜感激!
在过去的 24 小时内,我发现了一些似乎很接近但还没有完全让我明白的事情:
- 此处讨论了类似的问题,但我无法找到建议的插件,它对迁移方面没有帮助。
- 我已经使用这个插件成功地在 InterElementLink 上获得了 Rails 模拟主键,所以如果有一个 element1_id = 3 和 element2_id = 5,则调用 InterElementLink.find(3,5) 有效,但显然 InterElementLink.find(5,3 ) 不起作用...而 I/ActiveRecord 将需要它。
- 我了解包括 ActiveRecord 在内的 ORM 不支持外键,请参阅有关此的很好的讨论(尽管我知道您可以使用此插件)。 我尝试这样做来制作主键,但失败了。
非常感谢!
jpa - 当目标实体具有复合主键但源没有时的一对多问题映射
我有一个用户获得一些个人资料的用例:所以是一对多关联。
这是通过伪 sql 中的这些遗留表映射的。
这是java映射:
和 userprofiles 类
当我从 UserDao 获得用户时,我收到此异常:
问题是在源实体(获得 1-N 关联的实体)上,我只有一列可以进行连接。
我试图更改目标实体的 ID;所以在 user_profiles 类中,只声明 user_id 作为键:但是以这种方式,当 jpa 创建查询时,它只处理一个 user_profiles 出现,使关系为 1-1。
知道如何解决问题并使关联正常工作吗?
亲切的问候马西莫
django - Django 中的复合 OneToOneFields
我对 Django 相当陌生,我想我几乎了解了 ORM 的基本概念。但是,有一种特殊的情况,我看不到一个合理的解决方案。我有一个遗留数据库,我正在尝试为其编写一个 Django 应用程序。两张表的sql结构为:
第一个表不能更改,因为它会破坏很多代码(我没有写)。第二个表是我写的(因此是代理键)。在第二个('alerts')表中,(sid,cid)是唯一的。
问题是 (sid,cid) 是可以有效连接表的关键。应该如何重写模型,以便 Django 可以准确地捕获两个表之间的关系?我分别为 sid 和 cid 尝试了 OnetoOne,但这显然没有用,因为 OnetoOne 应该同时应用于 (sid,cid)。OnetoMany 也没有用,ForeignKey 也没有用,因为我需要 (sid,cid) 作为外键。看来 (sid,cid) 复合字段应该是 OnetoOne 但我不知道如何实现。
注意 - (sid,cid) 值将是 1-55,2-55,3-55,1-56,2-57,3-60 等类型。所有这些都是唯一的,并且只有一个条目两个表。
后期编辑:我猜 Django 不支持 Composite onetoone 键(至少这是 google-group 中的一个人所说的)。我迁移到 SQLalchemy,它完全按照我想要的方式表示模型(复合键等)
ruby - oracle上ruby、activerecord和composite_primary_keys的过度引用问题
由于为表之间的关联生成了 SQL,我收到了 Oracle 错误。不涉及复合主键,但在添加composite_primary_keys gem 之前没有出现此问题。
关联的外键被添加到 SQL 中,如下所示:
“bar_id”列确实存在。但是,当我们以这种方式将“Bar_id”放在引号中时,Oracle 会认真对待我们,并且会区分大小写。
如果我们只生成这个:
或这个:
我们会没事的。
这是我们得到的错误:
实际上,我已为 Composite_primary_keys gem 的 3.1.0 版本修复(读作“hacked”)此问题,但现在我需要升级到 4.0.0,代码更改非常重要,以至于我以前使用的简单黑客不再是如此明显。
知道如何解决这个问题吗?
使用的东西的版本:
- 复合主键 4.0.0
- 活动记录 3.1.0
- activerecord-oracle_enhanced-适配器 1.4.0
- jruby 1.6.3
java - 非原始属性的复合主键
我是 Java 和 Hibernate 的新手。我有复合键的问题。我正在尝试做这样的事情:
当我表演
然后抛出异常类型A和B不能插入数据库。是否有可能以某种方式告诉休眠不保存 A 对象而只保存 A id?我的方法绝对错误吗?我应该只在 C_PK 类中使用原始数据类型吗?
mysql - 使用 mysql 触发器更新复合主键的字段部分
我是 mysql 触发器的新手,我试图弄清楚如何为以下情况创建触发器。
我有一个具有以下结构的表:
这是表格与一些示例数据的外观:
我要创建的触发器应确保,对于使用给定组添加的每条新记录,订单字段都使用正确的订单索引进行更新。
因此,如果我要在组 1 中添加一条新记录,订单字段将自动更新为下一个订单,对于给定的示例,该订单将是 4。
entity-framework-4 - Entity Framework 4.1 Code First,组合主键作为外键
我在使用 Entity Framework 时遇到问题,其中我有类似于以下样机的内容:
ClassD 是我遇到问题的地方,我希望表示 ClassC 上的主键的属性是 ClassD 上的主键,但也是外键引用。(假设上面的属性名与表列名相同)
在底层数据库中,ClassC 和 ClassD 的对应表是一对一的关系,而 ClassA 到 ClassC 和 ClassB 到 ClassC 是一对多的关系。
然而,当涉及到实体框架时,它似乎无法同时处理多个同名属性作为主键和外键,在它生成的底层 SQL 中,我可以看到它正在寻找列 ClassD_ClassAID、ClassD_ClassBID -有没有办法使用模型配置来指定正确的映射?
我努力了:
我也试过:
到目前为止,任何引入映射的尝试都会遇到
'元数据中已存在属性名称 xxx'。
sql - 主键约束的警告消息
我在其中一个包含员工信息的表中分配主键时遇到问题。该表中没有唯一列,我剩下的唯一选择是将三列组合作为主键。
Warning! The maximum key length is 900 bytes. The index 'pk_hrempid' has maximum length of 1530 bytes.For some combination of large values, the insert/update operation will fail
但是当我知道这将是将来插入数据的主要问题时,它会发出警告消息。这个警告有解决方案吗?另一个问题是我可以将自动增量值作为唯一 id,推荐吗?我想确保它在未来不会出现问题,因为我有许多包含其他部门员工信息的表格。一些员工可能出现在两个或多个表中
任何帮助表示赞赏!
database-design - 可以使用复合主键来阻止您链接不相关的对象吗?
如果我有几个模型(命名你最喜欢的框架):
是否有可能有一个数据库约束,这将使得无法插入主键指向的Resaturant
谁的一部分和谁的指向。基本上,保护我不会意外关联属于不同租户的对象。tenant_id
TenantA
fruit_available
tenant_id
TenantB