问题标签 [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.
sql-server - 如何创建引用复合主键中的一列的外键
我有两个表 Catalog 和 CatalogIndex
目录有以下列
其中 DN、PID 两列是该表的复合主键的一部分。
CatalogIndex 具有以下列
PID 和 PItem 是 CatalogIndex 表的复合主键的一部分。
我想在引用目录表中的 PID 的 PID 列上向 CatalogIndex 添加一个外键。
我正在使用 SQL Server 2008
谢谢
.net - NHibernate - 如何将复合ID与父子引用映射
我有以下场景(为了更好地说明,示例非常简化) 数据库模型 BAS_COSTCODE 指的是 BAS_CONTEXT。此表的键是 COSTCODEID 和 CONTEXT_FK 的组合。CONTEXT_FK 指的是 BAS_CONTEXT。要构建分层树,CostCode 可以有一个父级。出于这个原因,有一个对表本身的引用。
Context 的架构文件是这样的:
CostCode 的架构是这样的:
如果我创建一个新的 CostCode 实体并运行 Commit(),我会得到以下异常: System.IndexOutOfRangeException:“此 SqlParameterCollection 的索引 13 无效,Count=13。”
我认为 NHibernate 的引用 ParentCostCode 有问题,它指的是父 CostCode 对象。NHIbernate 假定将值写入列 PARENTCOSTCODE_FK 和 CONTEXT_FK。在映射中,composite-id 指向 CONTEXT_FK,ParentCostCode 指向 CONTEXT_FK。因此它们“共享”同一列,NHibernate 应该只向 PARENTCOSTCODE_FK 列写入一个值。
一种解决方案是向表 BAS_COSTCODE 添加一个附加列(可能是 PARENTCONTEXT_FK)来表示父对象的上下文。但我不想有一个额外的列,因为如果存在对父对象的引用,则 CONTEXT_FK 和 PARENTCONTEXT_FK 的值必须具有相同的值。那将是多余的。
这类问题有更好的解决方案吗?或者我不能阻止 BAS_COSTCODE 中的附加列?
非常感谢您的回答!
grails - 如何使用 GORM 创建复合主键?
我有三个域类:Beer、Review 和 Reviewer。
我希望 Review 表在 Beer 和 Reviewer 之间创建多对多关系,因此我希望 Review 的主键是 Beer 和 Reviewer 的 id 字段的组合。我正在关注这个 Grails 文档。
这是我的域类。
我遇到了编译错误,但是 stackoverflow 上的另一个答案说我需要添加implements Serializable
. 这解决了错误,但是当我查看数据库时,我仍然没有得到复合主键。
这是我查看表定义时看到的内容。我正在使用 Postgres。
我很乐意只使用具有唯一约束的复合索引,但我也不知道如何做到这一点。我已经能够制作一个非唯一的复合索引,但这有两个问题。一,它是非唯一的。二、列在索引中按字母顺序指定(beer_id、reviewer_id)。我想指定索引中列的顺序。
android - Android复合主键?
谁能告诉我如何在 Android 1.6 中声明一个包含自动增量 _id 列的复合主键?我不确定语法。当我尝试添加值时,我最终只是在 Java 中强制执行它(其中 registrationNumber + date 在表中必须是唯一的):
我真的不需要 _id 列,但如果表没有,它会使生活变得棘手。
干杯,巴里
database-design - 关于复合主键的问题
示例表:
假设id
和tenant_id
在每个表上组成复合主键,这ticket_id
是一个外键,Ticket
这个设置会保护我免受 a TicketItem
hastenant_id=1
和ticket_id=5
where the Ticket
with id=5
has的情况tenant_id=2
吗?简而言之,数据库是否允许我将 2 个表中的行(每个表都有不同的)链接tenant_id
在一起,破坏我的数据,还是它可以保护我免受这种情况的影响?
另外,上面的例子看起来像是对复合主键的“好”使用吗?
sql - sql server 2005 中的复合聚集索引和非聚集索引
我创建了一个具有复合主键的新表,可以说是 PrmID 和 Type,因此创建了一个新的复合聚集索引(首先是 PrmID)。我为 Type 添加了另一个非聚集索引。
我的问题是 - 当我生成对类型(例如 GROUP BY)执行任何语句的查询时,SQL 引擎是使用非聚集索引表还是 PK 聚集索引(对于那种查询来说更昂贵)?
mysql - 具有int和varchar字段的表的Mysql主键?
我有一个电影表,想存储替代标题。我会将替代标题/别名存储在另一个表中。我不确定什么是最好的主键。
我将有一个movie_id
INT
领域,一个alias
varchar(255)
领域。主键是否应该在两个字段上(因为一部电影可以有多个别名)?我是否应该为主键添加另一个字段,例如alias_id
只是自动递增,但这没有其他用途。还是这个表需要主键?也许它应该只在别名上有一个唯一索引并且不需要主键?
sql - How can a table violate it's own primary key index?
I have a PostgreSQL database which has a table with the primary key applied to three columns. According to the database, there is an index on the key:
#xA;Yet some simple tests reveal that I have duplicate keys:
#xA;Clearly there are fewer distinct rows (based on the primary key) than there are rows. My question is, how is this possible?
Edit: The full table definition is such:
#xA;For an example of duplicate rows:
#xA;eclipse - 为什么这个 JPA 2.0 映射在 Eclipse/JBoss Tools 中给我一个错误?
我有以下情况:(
来源:kawoolutions.com)
JPA 2.0 映射(可能只考虑 Zip 和 ZipId 类就足够了,因为这似乎是错误的来源):
很简单的设计:
国家是一个地理区域,并从根类继承 ID。邮政编码在其国家/地区内是唯一的,因此它结合了 ISO 代码和实际邮政编码作为 PK。因此 Zips 引用了 Country.iso_code,它上面有一个替代的唯一非空键(引用非主键列!)。Zip.country 关联获得一个@Id 注释,其变量名称与其 ID 类 ZipId 中的变量名称相同。
但是,我从 Eclipse 中收到此错误消息(也使用 JBoss 工具):
验证消息:“与 ID 类属性 country 匹配的属性没有正确的 java.lang.String 类型”
- 为什么JPA 2.0语法中有此错误(请参阅 Zip.country 上的 @Id 注释)?我不认为它是。毕竟对于 JPA 2,Zip.country 和 ZipId.country 的所有类型不能相同,因为 @ManyToOne 上的 @Id 注释和 PK 是一个简单的整数,它成为 ID 类对应项。任何人都可以检查/确认这一点吗?
- 这可能是一个错误,可能在 JBoss 工具中吗?(哪个软件组件报告了上述错误?将 3 个表和实体类放入新的 JavaSE 项目时,没有显示错误的确切代码......)
sql - 选择带有复合主键的刚刚插入的记录
我有一个带有复合主键的表,排列如下:
这两个列都是主键的一部分(它实际上是真实表上的 4 部分 PK,但为了示例,我已经对其进行了简化)。没有一列是身份。我正在编写一个存储过程,它在order_seq
给定的下一个插入新记录some_id
:
我需要知道如何设置@newSeq。我想避免在插入后运行选择查询,因为我不想遇到并发问题——我被禁止锁定表或使用事务(不要问)。
据我所知,我不能使用SCOPE_IDENTITY()
,因为没有一列是身份。如何newSeq
正确设置?