Sql 我可以将两个不同表中的两个主键混合到新表中的一个主键中吗

Sql 我可以将两个不同表中的两个主键混合到新表中的一个主键中吗,sql,database,database-design,Sql,Database,Database Design,首先,我有4个表,猫、狗、约会和用户表。我将dog和cat表分开,因为如果用户注册宠物,它将创建新的数据,并将其用户ID作为前置键。在我的约会表中,我将约会ID设置为主键,并且我计划(如果可能的话)制作一个名为PetID的前键,其中CatID(Cat表的主键)和DogID(DogID(Dog表的主键)将插入到用户注册的宠物对应的PetID中 否,当您将连接添加到带有约会的表的Cat或Dog表时,这将产生冲突 推荐的方法是使用CatPetID和DogPetID添加两个前键,这样当您想要检索猫或狗的

首先,我有4个表,猫、狗、约会和用户表。我将dog和cat表分开,因为如果用户注册宠物,它将创建新的数据,并将其用户ID作为前置键。在我的约会表中,我将约会ID设置为主键,并且我计划(如果可能的话)制作一个名为PetID的前键,其中CatID(Cat表的主键)和DogID(DogID(Dog表的主键)将插入到用户注册的宠物对应的PetID中

否,当您将连接添加到带有约会的表的CatDog表时,这将产生冲突


推荐的方法是使用CatPetIDDogPetID添加两个前键,这样当您想要检索猫或狗的约会数据时,它将为您提供正确的数据

你不应该把猫和狗分开放在不同的桌子上。你应该有一张宠物桌,有宠物类型。毕竟,除非你是兽医,猫和狗是非常相似的,至少从数据建模的角度来看是如此。@Gordon Linoff我可以这样做,但是,我能把ID分成两部分吗?因为我将来需要检索数据,例如,哪些狗有这种治疗的记录。我正在考虑使用DogIDs和CATID查询,以便在需要数据检索时将它们分开。你只需要在宠物类型上进行过滤。这样,当我为我的猫指定狗ID时,我需要在狗ID上输入null,对吗?这不会给检索数据带来问题吗?正如Gordon指出的,您应该使用
PetID
PetType
,而不是
DogPetID
CatPetID