Parent child Cloud Paner子表能否与父表具有相同的主键?

Parent child Cloud Paner子表能否与父表具有相同的主键?,parent-child,primary-key,google-cloud-spanner,Parent Child,Primary Key,Google Cloud Spanner,云扳手子表能否定义父表使用的相同主键(子表在父表中交错)?我知道子项的主键必须使用父项的主键作为前缀,但子项是否需要使用至少一个附加列?如果允许使用同一把钥匙,这是坏习惯吗?如果不允许,为什么不允许 例如: CREATE TABLE Furniture ( FurnitureId STRING(MAX) NOT NULL, MakerId INT64 NOT NULL, // additional fields here... ) PRIMARY KEY (FurnitureId,

云扳手子表能否定义父表使用的相同主键(子表在父表中交错)?我知道子项的主键必须使用父项的主键作为前缀,但子项是否需要使用至少一个附加列?如果允许使用同一把钥匙,这是坏习惯吗?如果不允许,为什么不允许

例如:

CREATE TABLE Furniture (
  FurnitureId STRING(MAX) NOT NULL,
  MakerId INT64 NOT NULL,
  // additional fields here...
) PRIMARY KEY (FurnitureId, MakerId);

CREATE TABLE FurnitureHistory (
  FurnitureId STRING(MAX) NOT NULL,
  MakerId INT64 NOT NULL,
  // additional fields here...
) PRIMARY KEY (FurnitureId, MakerId),
  INTERLEAVE IN PARENT Furniture;
谢谢!
彼得

这是允许的,但乍一看似乎有点奇怪。此数据模型允许您为每个父行最多插入一个子行。这与向父表添加两个可选字段非常相似,但这些可选字段在逻辑上与父表分离。所以我想如果:

  • 您有许多具有不同逻辑含义的附加字段,这为您提供了将它们存储在子表中的理由
和/或

  • 其他字段要么根本不应填充,要么在填充其中一个字段时填充所有字段(或至少多个字段)