使用另一个表上的一个表的主键作为主键

时间:2015-08-01 11:51:21

标签: relational-database

我有两张桌子

  • "Cannot invoke 'getObjectInBackgroundWithId' with an argument list of type (string, block: (PFObject!,NSError?) -> Void" {ID,name,...}
  • var result = PFQuery(className: "posts") result.getObjectInBackgroundWithId("kk", block: { (object: PFObject, error: NSError?) -> Void in object["pLikes"] = object["pLikes"] + 1 object.save() }) {PersonId,Infected} - 这始终是一对一的映射

是否可以将Person用作PeopleInfected表中的主键,还是应该为PersonId创建单独的PeopleInfected列。

我希望将Id保留在另一个表格中,因为我不想用PeopleInfected填写此类信息。

2 个答案:

答案 0 :(得分:2)

这称为垂直分区,可能有几个原因可以做到,虽然"节省空间" (顺便说一句,nulls不占用太多空间)并不是最常见的原因(更好的理由是数据的访问模式不同)。

执行垂直分区的常用方法是使用外键,但使用相同的ID(没有外键)应该是OK(ish)。

可能的问题是,有时ID是由RDBMS或ORM(例如实体框架)自动生成的,强制它使用指定的ID可能并不简单。另一个可能的问题是你被迫先插入Person表。

答案 1 :(得分:1)

是的,没关系。组合2个表通常更常见,但如果您有特殊原因不这样做(例如,辅助表的填充率低),那就没关系