我想知道如何使用EclipseLink在JPA 2中实现时态表.时间上我指的是定义有效期的表.
我面临的一个问题是引用表不再具有对引用表(时态表)的外键约束,因为引用表的性质现在它们的主键包括有效期.
我发现的唯一一件事就是一个名为DAO Fusion的框架来处理这个问题.
这是一个数据模型及其类的虚构示例.它起初是一个简单的模型,不需要处理时间方面:
第一种情景:非时间模型
数据模型:

团队:
@Entity
public class Team implements Serializable {
private Long id;
private String name;
private Integer wins = 0;
private Integer losses = 0;
private Integer draws = 0;
private List<Player> players = new ArrayList<Player>();
public Team() {
}
public Team(String name) {
this.name = name;
}
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQTEAMID")
@SequenceGenerator(name="SEQTEAMID", sequenceName="SEQTEAMID", allocationSize=1)
public Long getId() {
return id;
}
public …Run Code Online (Sandbox Code Playgroud) 长期以来,我们一直希望创建一个不会丢失历史的案例管理系统.当进行更改时,我们希望记录该更改,但能够返回到任何时间点并查看记录的外观.我想向Stack Overflow社区提出这个问题,看看有什么方法可以做到这一点,是否已经有技术来实现这一目标?
以下是我想在Web应用程序中执行的两个潜在工作流程.
变化1
变化2:
在每种情况下,我都想知道:确保对此服务的并发访问能够产生合理结果的标准方法是什么?(即没有人的编辑被破坏,值对应于编辑的某些顺序,等等)
情况是假设的,但这里有一些细节,我可能需要在实践中处理这个问题:
我觉得我宁愿不尝试在这里重新发明轮子.当然,这些是众所周知的解决方案中众所周知的问题.请指教.
谢谢.
时态表比变更数据捕获或变更跟踪有什么优势?
sql-server change-tracking change-data-capture sql-server-2016 temporal-tables
我的原始问题可以在这里找到,为此我得到了一些很棒的答案,idas和提示.
作为可行性和性能研究的一部分,我已经开始转换我的模式,以便使用这些想法对我的数据进行版本化.在这样做的时候,我想出了一些其他的问题.
在我原来的问题中,我的例子很简单,没有真正的关系引用.为了保留我之前问题的例子,我现在将'Name'部分扩展到另一个表.
所以现在,我的数据变成了:
Person
------------------------------------------------
ID UINT NOT NULL,
NameID UINT NOT NULL,
DOB DATE NOT NULL,
Email VARCHAR(100) NOT NULL
PersonAudit
------------------------------------------------
ID UINT NOT NULL,
NameID UINT NOT NULL,
DOB DATE NOT NULL,
Email VARCHAR(100) NOT NULL,
UserID UINT NOT NULL, -- Who
PersonID UINT NOT NULL, -- What
AffectedOn DATE NOT NULL, -- When
Comment VARCHAR(500) NOT NULL -- Why
Name
------------------------------------------------
ID UINT NOT NULL,
FirstName VARCHAR(200) NOT NULL,
LastName VARCHAR(200) NOT NULL, …Run Code Online (Sandbox Code Playgroud) 嗨,我正在开发一个发票应用程序.
所以一般的想法是有两个表:
Invoice (ID, Date, CustomerAddress, CustomerState, CustomerCountry, VAT, Total);
InvoiceLine (Invoice_ID, ID, Concept, Units, PricePerUnit, Total);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这种基本设计会导致大量重复记录,其中客户端将具有相同的地址,状态和国家/地区.
所以另一种方法是拥有一个地址表,然后建立一个地址<-Invoice.
但是我认为发票是不可变的文件,应该按照它最初制作的方式存储.有时,客户会更改其地址或状态,如果它来自地址目录,该目录将更改以前制作的所有发票.
那你的经历是什么?
客户地址如何存储在发票中?在发票表中?地址表?或者是其他东西?
您能否提供指向书籍,文章或文档的指南,以便进一步详细讨论?
我要求在SQL Server支持的网站中本质上是一个大型CRUD应用程序,用户应该能够"回到过去"并能够在给定时间点导出数据.
我的问题是这个问题的最佳策略是什么?我可以采取一种系统的方法并将其应用于所有表格吗?
发票数据库设计可能看起来像这样...... http://www.databaseanswers.org/data_models/invoices_and_payments/index.htm
现在如果用户决定更改/修改产品代码/描述
它将更改以前的订单和发票生成代码/说明:(
你是做什么?将产品代码说明复制到发票表中?
database ×3
sql-server ×3
sql ×2
.net ×1
concurrency ×1
eclipselink ×1
invoice ×1
invoices ×1
java ×1
jpa-2.0 ×1
versioning ×1