相关疑难解决方法(0)

如何使用JPA实现时态表?

我想知道如何使用EclipseLink在JPA 2中实现时态表.时间上我指的是定义有效期的表.

我面临的一个问题是引用表不再具有对引用表(时态表)的外键约束,因为引用表的性质现在它们的主键包括有效期.

  • 我如何映射我的实体的关系?
  • 这是否意味着我的实体不再与那些有效时间实体建立关系?
  • 我是否应该在某种服务或专门的DAO中手动执行初始化这些关系的责任?

我发现的唯一一件事就是一个名为DAO Fusion的框架来处理这个问题.

  • 有没有其他方法可以解决这个问题?
  • 您能否提供有关此主题的示例或资源(带有时态数据库的JPA)?

这是一个数据模型及其类的虚构示例.它起初是一个简单的模型,不需要处理时间方面:

第一种情景:非时间模型

数据模型: 非时态数据模型

团队:

@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)

java temporal-database eclipselink jpa-2.0

25
推荐指数
1
解决办法
1万
查看次数

在SQL Server 2008数据库中维护数据历史的方法

长期以来,我们一直希望创建一个不会丢失历史的案例管理系统.当进行更改时,我们希望记录该更改,但能够返回到任何时间点并查看记录的外观.我想向Stack Overflow社区提出这个问题,看看有什么方法可以做到这一点,是否已经有技术来实现这一目标?

.net sql change-tracking sql-server-2008 entity-framework-4

9
推荐指数
1
解决办法
5049
查看次数

如何处理Web应用程序中的并发更改?

以下是我想在Web应用程序中执行的两个潜在工作流程.

变化1

  • 用户发送请求
  • 服务器读取数据
  • 服务器修改数据
  • 服务器保存修改后的数

变化2:

  • 用户发送请求
  • 服务器读取数据
  • 服务器向用户发送数据
  • 用户发送修改请求
  • 服务器保存修改后的数

在每种情况下,我都想知道:确保对此服务的并发访问能够产生合理结果的标准方法是什么?(即没有人的编辑被破坏,值对应于编辑的某些顺序,等等)

情况是假设的,但这里有一些细节,我可能需要在实践中处理这个问题:

  • Web应用程序,但语言未指定
  • 可能,使用Web框架
  • 数据存储是SQL关系数据库
  • 所涉及的逻辑太复杂,无法在查询中表达,例如value = value + 1

我觉得我宁愿不尝试在这里重新发明轮子.当然,这些是众所周知的解决方案中众所周知的问题.请指教.

谢谢.

database concurrency web-applications race-condition

7
推荐指数
1
解决办法
3964
查看次数


数据库 - 数据版本控制(后续)

我的原始问题可以在这里找到,为此我得到了一些很棒的答案,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)

database versioning database-design

5
推荐指数
1
解决办法
2502
查看次数

发票和发票行:您如何存储客户地址信息?

嗨,我正在开发一个发票应用程序.

所以一般的想法是有两个表:

Invoice (ID, Date, CustomerAddress, CustomerState, CustomerCountry, VAT, Total);

InvoiceLine (Invoice_ID, ID, Concept, Units, PricePerUnit, Total); 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这种基本设计会导致大量重复记录,其中客户端将具有相同的地址,状态和国家/地区.

所以另一种方法是拥有一个地址表,然后建立一个地址<-Invoice.

但是我认为发票是不可变的文件,应该按照它最初制作的方式存储.有时,客户会更改其地址或状态,如果它来自地址目录,该目录将更改以前制作的所有发票.

那你的经历是什么?

客户地址如何存储在发票中?在发票表中?地址表?或者是其他东西?

您能否提供指向书籍,文章或文档的指南,以便进一步详细讨论?

database-design invoices

5
推荐指数
1
解决办法
6021
查看次数

在SQL Server中对数据进行版本控制,以便用户可以对数据进行一定的切割

我要求在SQL Server支持的网站中本质上是一个大型CRUD应用程序,用户应该能够"回到过去"并能够在给定时间点导出数据.

我的问题是这个问题的最佳策略是什么?我可以采取一种系统的方法并将其应用于所有表格吗?

sql database sql-server version-control database-design

5
推荐指数
1
解决办法
1658
查看次数

发票数据库设计

发票数据库设计可能看起来像这样...... http://www.databaseanswers.org/data_models/invoices_and_payments/index.htm

现在如果用户决定更改/修改产品代码/描述

它将更改以前的订单和发票生成代码/说明:(

你是做什么?将产品代码说明复制到发票表中?

sql-server database-design invoice

1
推荐指数
1
解决办法
3492
查看次数