Sql server SQL连接与由2个键组成的其他表

Sql server SQL连接与由2个键组成的其他表,sql-server,Sql Server,因此,我有一个名为Patient的表 和另一个名为Ordonnance的表 一个患者有多个Ordonnance,而一个Ordonnance应该只与一个患者相关(患者:1.n,Ordonnance:1.1) 我的问题是,Patients主键由2个键组成(id_pers+catégorie) 但对于Ordonnances,外键仅为一个字段(id_pers) 我的第一个想法是为Ordonance添加另一个字段,并将其命名为(category),然后在两个表之间建立关系, 但我觉得有点不对劲 如果有

因此,我有一个名为
Patient
的表

和另一个名为
Ordonnance
的表

一个患者有多个Ordonnance,而一个Ordonnance应该只与一个患者相关(患者:1.n,Ordonnance:1.1)

我的问题是,Patients主键由2个键组成(id_pers+catégorie)

但对于Ordonnances,外键仅为一个字段(id_pers)

我的第一个想法是为Ordonance添加另一个字段,并将其命名为(category),然后在两个表之间建立关系, 但我觉得有点不对劲


如果有人对如何解决这个问题有更好的想法,我会非常高兴

如果有机会,您可能希望更改该表,使患者和医嘱都有一个单列主键。这些概念似乎可以独立存在,不需要复合键

也许关系图可以如下所示:

table Patient (
    PatientId primary key);

table Ordonnance (
    OrdonnanceId primary key,
    PatientId references Patient(PatientId));

根据您的要求,在Ordonance(PatientId)上应该有一个唯一的索引。

如果您有机会,您可能希望更改表,使Patient和Ordonance都有一个单列主键。这些概念似乎可以独立存在,不需要复合键

也许关系图可以如下所示:

table Patient (
    PatientId primary key);

table Ordonnance (
    OrdonnanceId primary key,
    PatientId references Patient(PatientId));

根据您的要求,Ordonance(PatientId)上应该没有唯一的索引。

除非您的要求不同,否则您的
Ordonance
表必须包含复合键
id_pers+catégorie
,以便正确映射


您需要在这两个表中进行更改。

您的
或Connances
表必须包含符合您的Partent表的组合键
id_pers+catégorie
,以便正确映射,除非您的要求不同


您需要在这两个表中进行更改。

我想您可以将
Patient
中的PK更改为
id\u pers
,然后使用
id\u pers
categorie
@JimHewitt smart idea在
Patient
上创建一个唯一索引,这个解决方案以后会有任何问题吗?@jim hewitt的建议应该没有其他问题,除非实际上需要主键由这两列组成。@Reda我永远不会告诉你这不是绝对确定的,但我假设这是你可以彻底测试的。此外,您可能应该在中的
id\u pers
上放置一个唯一索引`Ordannance@JimHewitt--我只是好奇,为什么你认为在
或管理
中的
id\u pers
上应该有一个唯一的索引?我认为@Reda是在说每个患者应该有很多治疗方案。也许我遗漏了什么。我想你可以将
Patient
中的PK更改为
id\u pers
,然后使用
id\u pers
categorie
@JimHewitt smart idea在
Patient
上创建一个唯一索引,这个解决方案以后会有任何问题吗?@jim hewitt的建议应该没有其他问题,除非实际上需要主键由这两列组成。@Reda我永远不会告诉你这不是绝对确定的,但我假设这是你可以彻底测试的。此外,您可能应该在中的
id\u pers
上放置一个唯一索引`Ordannance@JimHewitt--我只是好奇,为什么你认为在
或管理
中的
id\u pers
上应该有一个唯一的索引?我认为@Reda是在说每个患者应该有很多治疗方案。也许我遗漏了什么。