【问题标题】:Can i mix two primary key from two different tables into one Primary key in a new table我可以将两个不同表中的两个主键混合到一个新表中的一个主键中吗
【发布时间】:2020-03-13 12:18:39
【问题描述】:

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

【问题讨论】:

  • 您不应该将猫和狗分开到单独的表格中。你应该有一个宠物桌,宠物类型。毕竟,除非您是兽医,否则猫和狗非常相似,至少从数据建模的角度来看是这样。
  • @Gordon Linoff 我可以这样做,但是,我可以将 ID 分成两部分吗?因为我将来需要检索数据,例如,哪些狗有这种治疗的记录。我正在考虑使用 DogIDs 和 CatIDs 查询它,以便在需要数据检索时将它们分开。
  • 。 .您只需过滤pet_type

标签: sql database database-design


【解决方案1】:

不,当您将连接添加到 CatDog 表与 Appointment 表时,这会产生冲突。

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

【讨论】:

  • 这样,当我为我的猫指定时,我需要在 for DogID 时输入 null 对吗?这不会在检索数据时产生问题吗?
  • 正如 Gordon 指出的那样,您应该使用 PetIDPetType 而不是 DogPetIDCatPetID
猜你喜欢
  • 2014-07-16
  • 2019-12-23
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-19
相关资源
最近更新 更多