Cloud Spanner child table 可以与 parent table 具有相同的主键吗?

Can a Cloud Spanner child table have the same primary key as the parent table?

Cloud Spanner child table 可以定义 parent table 使用的相同主键吗(child 在 parent)?我知道 child 的主键必须使用 parent 的主键作为前缀,但是 child 键 需要 才能使用至少一列?如果允许使用相同的密钥,这是不好的做法吗?如果不允许,为什么不呢?

例如:

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;

谢谢! 彼得

这是允许的,但第一手看起来有点奇怪。此数据模型将允许您为每个父行最多插入一个子行。这与向父 table 添加几个可选字段非常相似,但是这些可选字段在逻辑上与父 table 分开。所以我想这是有道理的,如果:

  • 您有许多具有不同逻辑含义的附加字段,这使您有理由将它们存储在子项中 table。

And/or

  • 附加字段要么根本不填写,要么在其中一个字段已填写时全部(或至少超过一个)填写。