Sql 当父项具有临时键时,如何管理对子记录的更改?

Sql 当父项具有临时键时,如何管理对子记录的更改?,sql,orm,temporal,Sql,Orm,Temporal,我有一张这样的桌子: CREATE TABLE accounts ( id INT, start DATETIME, end DATETIME, addy TEXT, PRIMARY KEY (id, start, end) ); CREATE TABLE invoices ( id INT, start DATETIME, end DATETIME, amt DECIMAL(6,2) ) 这与用于存储临时更新的ORM模型相关联,因此您

我有一张这样的桌子:

CREATE TABLE accounts (
  id    INT,
  start DATETIME,
  end   DATETIME,
  addy  TEXT,
  PRIMARY KEY (id, start, end)
);
CREATE TABLE invoices (
  id INT,
  start DATETIME,
  end   DATETIME,
  amt   DECIMAL(6,2)
)
这与用于存储临时更新的ORM模型相关联,因此您不必使用
UPDATE
ing,而是使用相同的
id
和新的
start
/
end
日期创建新记录

好的,现在如果我有一个
帐户的(临时)子记录,如下所示:

CREATE TABLE accounts (
  id    INT,
  start DATETIME,
  end   DATETIME,
  addy  TEXT,
  PRIMARY KEY (id, start, end)
);
CREATE TABLE invoices (
  id INT,
  start DATETIME,
  end   DATETIME,
  amt   DECIMAL(6,2)
)
我如何区分应反映母公司账户变更的发票和未反映母公司账户变更的发票

例如:

Accounts
id  start  end   addy
1   d0     null  123 Main St

Invoices
id    act    start    end     amt
1     1      d0       null    100
发票显然与主街123号的账目记录有关

Accounts
id  start  end   addy
1   d0     d1    123 Main St
1   d1     null  234 First St

Invoices
id    act    start    end     amt
1     1      d0       null    100
现在,Invoice.Account.addy的值是多少?123还是234

我是否需要其他字段来帮助确定哪个字段?如果是,这些列将是什么样子


谢谢

时态记录通常有两部分唯一键:通常认为是键的部分和时间戳。在这种情况下,“id”+“start”。我不清楚这里需要什么。有很多问题:为什么账户会被“更新”?“id”+“start”是否唯一?需要结束吗?PeopleSoft使用有效日期记录。也许这会给你一些关于如何继续的提示。当有人得到关于一个账户的更好的信息时,账户会被更新IRL,通常是电话号码,但有时是地址。复合id+开始+结束将是唯一的,并且是pkey。这是因为发票分配给一个帐户,但该帐户在某个时间存在。