gpt4 book ai didi

google-cloud-platform - 将 INTERLEAVE 表用于一对一关系

转载 作者:行者123 更新时间:2023-12-04 18:31:48 30 4
gpt4 key购买 nike

我正在为一组文档编辑器(电子表格编辑器、文本文档编辑器、powerpoint 编辑器等)设计架构。编辑们将共享一个数据库,尽管他们有一天可能会使用单独的数据库。每个编辑共享每个文档的许多公共(public)信息,但是根据文档的类型,还有特定于编辑的信息。

我的问题来自于尝试设计每个编辑器都不同的架构部分。假设将有一个 Docs 表,它包含有关一般文档的公共(public)信息(例如,ID)。最重要的是,我想关联特定编辑器的特定信息,该编辑器与 Doc 记录具有 1:1 的关系。我建议的架构是:

CREATE TABLE Docs (
DocId STRING(MAX) NOT NULL,
CreationTime TIMESTAMP NOT NULL,
....
) PRIMARY KEY (DocId);

CREATE TABLE SpreadsheetStuff (
DocId STRING(MAX) NOT NULL,
... spreadsheet-specific information here ...
) PRIMARY KEY (DocId),
INTERLEAVE IN PARENT Docs
ON DELETE CASCADE;

CREATE TABLE TextDocumentStuff (
DocId STRING(MAX) NOT NULL,
... text-document-specific information here ...
) PRIMARY KEY (DocId),
INTERLEAVE IN PARENT Docs
ON DELETE CASCADE;

我之所以使用单独的表格,是为了将公共(public)部分与任何特定于编辑器的内容隔离开来。

我想知道这是否是不必要的,因为编辑者可以根据需要根据自己的需要更改 Docs 表,即使这种结构在技术上是可行的。换句话说,我可以在 Docs 表中添加大量额外的列,其中包含特定于编辑器的信息。一个问题是我提议的结构可能具有不明显的性能或其他影响。

这是 1:1 关系的合理结构吗?是否存在有关最佳做法的明确指导?

最佳答案

Cloud Spanner 可以有效地处理任一选项,前提是您不冒险接近 limit 列.如果您计划执行大量 SQL 查询,则使用双表方法可能会更复杂,因为您正式需要连接它们(尽管连接通常应该是高效的,因为数据是交错的)。尽管 JOIN 有额外的 SQL 复杂性,但这可能是更简洁的方法。 YMMV.

关于google-cloud-platform - 将 INTERLEAVE 表用于一对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262434/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com