标签: composite-key

web2py中的复合键

我有一个在web2py中定义的表

db.define_table(
'pairing',
Field('user',writable=True,readable=True),
Field('uid', writable=True , readable=True)
)
Run Code Online (Sandbox Code Playgroud)

此表需要具有唯一的用户和uid组合.我查看了web2py文档,但没有直接的方法来定义组合键.我们如何在web2py中定义复合方式

python web2py composite-key

2
推荐指数
1
解决办法
2525
查看次数

将外键添加到组合键时出错

我在sql server中有两个表:

第一个表Message_Child有一个复合主键(MessageId,ChildId)

Message_Child (MessageId, ChildId, Date)
Run Code Online (Sandbox Code Playgroud)

第二个表应该包含表的外键Message_Child,所以我创建了两列:MessageId和ChildId.

Request (RequestId, MessageId, ChildId, type)
Run Code Online (Sandbox Code Playgroud)

我创建了约束如下:

Alter table Request
ADD FOREIGN KEY (MessageId, ChildId) REFERENCES Message_Child(MessageId, ChildId);
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

引用的表'Message_Child'中没有主键或候选键与外键'FK_ Request _534D60F1' 中的引用列列表匹配.

编辑 添加代码:

Message_Child表:

CREATE TABLE [dbo].[Message_Child](
[ChildId] [int] NOT NULL,
[MessageId] [int] NOT NULL,
[Date] [datetime] NULL,
 CONSTRAINT [PK_Message_Child] PRIMARY KEY CLUSTERED 
(
[ChildId] ASC,
[MessageId] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,      ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) …
Run Code Online (Sandbox Code Playgroud)

sql-server foreign-keys composite-key

2
推荐指数
1
解决办法
140
查看次数

当孩子有复合PK时,如何在父实体中定义@OneToMany?

我的Parent班级有两个子班级: ChildParentHobby. Child 类有一个单一的 PK 并且@OneToMany它的映射有效。问题是我不知道如何将它映射到具有复合 PK 的 ParentHobby 类上。

家长:

//this works
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.EAGER)
private List<Child> childList;

//this DOES NOT work
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.EAGER)
private List<ParentHobby> hobbyList;
Run Code Online (Sandbox Code Playgroud)

孩子:

@Entity
@Table(name="CHILD")
public class Child {


    @Id
    @SequenceGenerator(name="CHILD_SEQ", sequenceName="CHILD_DB_SEQ", allocationSize = 1)
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CHILD_SEQ")
    @Column(name="CHILD_ID")
    private long childID;

    @JoinColumn(name = "PARENT_ID", referencedColumnName = "PARENT_ID", insertable = true, updatable = true)
    @ManyToOne(optional …
Run Code Online (Sandbox Code Playgroud)

referential-integrity hibernate jpa composite-key

2
推荐指数
1
解决办法
3050
查看次数

如何在 Oracle 中为列和固定值的组合提供唯一约束?

我有一个包含 3 列的表格:A(数字)、B(数字)和 C(布尔值)。

我需要创建一个规则,以防止使用列 A 和 B 以及 C 等于 true 创建记录。例如。

这将被允许:

A  B  C
1  2  true
1  2  false
1  2  false
Run Code Online (Sandbox Code Playgroud)

但是这个,不:

A  B  C
1  2  true
1  2  true
1  2  false
Run Code Online (Sandbox Code Playgroud)

sql oracle constraints composite-key unique-constraint

2
推荐指数
2
解决办法
581
查看次数

JPA Composite键(所有字段都不是Null和PRI)

我看到存在多种方法来映射具有JPA 的复合键.

但在我的情况下有点不同:

我有一个只有2列的表:

mysql> desc mytable;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| name   | varchar(80) | NO   | PRI |         |       |
| tag    | varchar(80) | NO   | PRI |         |       |
+--------+-------------+------+-----+---------+-------+

我的观点是:我是否需要创建一个新的(主键类)类来映射我的复合键?

我正在努力寻找最简单的方法.

有人可以帮我吗?

提前致谢!


我正在尝试这种方法:http://www.java.net/print/236710


java jpa composite-key

1
推荐指数
1
解决办法
1051
查看次数

Hibernate复合键,它是另一个表的foreigen键

我有两个表Part和SubPart.部分表具有一般字段,如id,name,desc等.SubPart表具有part_id,sub_part_id作为复合键.这两列都引用了Part表,并且每个列都有一对多的映射,就像Part表中的每个part_id一样,SubPart表中的两个列都可以有多个条目.我在定义SubPart表的复合键时遇到问题.我尝试了嵌入式标签,但它不起作用.我该如何解决这个问题.非常感谢.

像这样的零件表.

@Entity
@Table(name="Part")
public class Part {

    @Id
    @GeneratedValue
    @Column(name="Part_Id")
    private int id;
    @Column(name="Part_Number")
    private String partNumber;
    @Column(name="Part_Name")
    private String partName;
}
Run Code Online (Sandbox Code Playgroud)

子部件表

@Entity
@Table(name="SubPart")
public class SubPart {
    // part and subPart combination is the compound key here.
    @ManyToOne
    @JoinColumn(name="Part_Id")
    private Part part;

    @ManyToOne
    @JoinColumn(name="Sub_Part_Id")
    private Part subPart;

    @Column(name="Quantity")
    private Integer quantity;
}
Run Code Online (Sandbox Code Playgroud)

java hibernate composite-key

1
推荐指数
1
解决办法
2672
查看次数

PostgreSQL 内部复合列基数

编辑

这不是关于空间的问题,而是关于索引的唯一性,它会影响查询计划。

就基数而言,哪个索引场景更高:

一种

Table:
(
  Col1 smallint,
  Col2 smallint
)
Run Code Online (Sandbox Code Playgroud)

在哪里

Range Col1 : 0 - 1000
Range Col2 : 0 - 1000
Run Code Online (Sandbox Code Playgroud)

和 上的复合索引(Col1, Col2),始终按顺序查询。

桌子:

(
  Col1_2 int
)
Run Code Online (Sandbox Code Playgroud)

在哪里

Range Col1_2 : 0 - 1000^2
Run Code Online (Sandbox Code Playgroud)

以及(Col1_2)结合 Col1 和 Col2 组件的存储和查询的单个索引。

我基本上要问的是,将多个小数字组合在一起(散列)更好(如在索引使用中),还是没有区别?

postgresql indexing database-design composite-key database-indexes

1
推荐指数
1
解决办法
887
查看次数

如果列(允许重复)的组合是唯一的,则MySQL仅插入新行

由于MySQL不支持IF EXISTS,我很难想到在MySQL中执行类似下面伪操作的语法:

IF ((select count(*) from table where col1='var1' AND col2='var2' AND col3='var3' AND col4='var4' AND col5='var5')>0) then
    combination of vars exist in record - do a thing;
ELSE
    combination of vars does not exist in record - insert record;
END IF;
Run Code Online (Sandbox Code Playgroud)

我应该认为CASE适合这种情况,但对于我的生活,我无法想到正确的语法.我使用唯一索引,但每个列都需要允许重复,它只是所有列的匹配组合,需要是唯一的,而不是字段本身.

我被告知在所有列中使用复合键可以避免重复插入,但是从我收集的内容中我需要使用不同的插入.

简短版本:在MySQL中,如果在现有行中找不到精确指定的列匹配,如何插入新行.

任何建议或意见将不胜感激.

mysql sql if-statement primary-key composite-key

1
推荐指数
1
解决办法
6599
查看次数

复合键是否允许重复

我需要知道复合键是否允许其中存在重复值?

例如:

我有 2 张桌子。

1)表“学生”,其中包含字段studentID(PK),标准,地址。

2) 表“Class”,其中包含字段 classID(PK)、classname、studentID(FK)。

通过将复合键设置为(classID,studentID),它是否允许重复值?

我想知道的是,是否有可能在类表的classID字段中输入重复的值?因为我无法在 classID 中输入重复的值,因为它是主键字段。

复合键能帮助我实现这一目标吗?请在这方面帮助我。

mysql sql constraints composite-key

1
推荐指数
1
解决办法
8296
查看次数

SQL中的复合键是一对多,而不是一对一对吗?

如果我创建一个带有复合键的表(一对多关系).如何确保一对多关系是单方面的?我的意思是A和B是复合键; A可以有多个B,但B不能有多个A.

编辑:将数据类型从数字更改为int

例如:

CREATE TABLE voting (
TaskOrder int,
MemberID int,
PRIMARY KEY (TaskOrder , MemberID)
);
Run Code Online (Sandbox Code Playgroud)

功能要求 - 一个成员可以有多个任务订单.但是,无法将一个任务订单分配给多个成员.

我如何确定?起初,我想过使用复合键.还有其他选择吗?或者使用复合键可以吗?

sql sql-server primary-key composite-key one-to-many

1
推荐指数
1
解决办法
282
查看次数