如何解决Cloud Spanner子表可以与父表具有相同的主键吗?
Cloud Spanner子表是否可以定义父表使用的相同主键(子表与父表交错)?我知道孩子的主键必须使用父母的主键作为前缀,但是子键是否需要才能至少使用一列?如果允许使用相同的密钥,这是不好的做法吗?如果不允许的话,为什么呢?
例如:
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),INTERLEAVE IN PARENT Furniture;
谢谢! 彼得
解决方法
这是允许的,但乍一看似乎有些奇怪。此数据模型将允许您为每个父行最多插入一个子行。这与向父表添加几个可选字段非常相似,但是这些可选字段在逻辑上与父表分开。因此,我认为如果:
- 您还有许多其他字段,它们的逻辑含义不同,这使您有理由将它们存储在子表中。
和/或
- 附加字段要么根本不填写,要么全部(或至少一个以上)填写。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。