Java 需要数据库设计建议:双重数据输入

Java 需要数据库设计建议:双重数据输入,java,database-design,grails,Java,Database Design,Grails,我正在设计一个数据库来获取临床试验数据。数据由两人独立输入两次,结果必须匹配。要获得最佳结果,最好使用哪些数据库工具。有没有人有类似的经历 非常感谢你的帮助 谢谢。您是在设计数据库还是将数据输入数据库的应用程序 如果您只是查看数据库,我将捕获以下信息: 1) user A item X entered data 2) user A userID 3) user A intem X entered date/time 4) user B item X entered data 5) user B

我正在设计一个数据库来获取临床试验数据。数据由两人独立输入两次,结果必须匹配。要获得最佳结果,最好使用哪些数据库工具。有没有人有类似的经历

非常感谢你的帮助


谢谢。

您是在设计数据库还是将数据输入数据库的应用程序

如果您只是查看数据库,我将捕获以下信息:

1) user A item X entered data
2) user A userID
3) user A intem X entered date/time

4) user B item X entered data
5) user B userID
6) user B intem X entered date/time
然后我会得出结论,有一个叫做“数据点”的东西包含这些字段

-- entering userID
-- entry date
-- entry data (double value)
I'd also assign it a unique ID for the entry
--entryID (autoinc)
然后我要说的是,有一种叫做“数据试验”的东西,其中有两种叫做“数据输入”

如果我认为每个数据试验的输入数量可能是3次验证而不是2次,我可能会改变我的设计,但最初我会给我的“数据试验”下以下定义:

-- data trial name
-- data trial creation date
-- user creating data trial (userID)
-- data entry 1 (dataPointID)
-- data entry 2 (dataPointID)
-- entries verified (boolean)
and give each of these a unique ID also
-- data trial ID (autoinc)

如果你正在寻找一个好的数据库工具,你应该考虑使用实体关系设计器来建模你的数据库,比如CASE Studio或NabCabelo E/Studio。

< P>数据库不是设计来解决这个问题的。复式输入是一个应用程序问题,违反了规范化。我将实现一个验证字段,以指示数据已被验证,以及是否失败。我可能会包括一个审计表,其中包含输入的每一组条目

应用程序需要一个查找函数来确定这是第一个条目还是后续条目。与此相关的设计问题很多

  • 验证找不到第一个条目
  • 如果数据在验证时不匹配,如何更正数据
  • 如何处理需要验证的未验证数据
(我还不能添加注释…)除了Zak的答案之外,如果对有多少人会输入这些值有任何疑问(如Zak所说,从2跳到3),我会将数据输入1和2(都是DataPointID)分解到另一个有两列的表中:

--data trial id
--data entry id
这样,理论上你可以拥有尽可能多的不同用户 插入数据,数据试验表将只包含关于试验的元数据,而不是“业务逻辑”,每个试验只包含2个数据条目本质上是错误的


如果不同的试验包含不同数量的数据值,可以使用类似的设置。

此问题与编程无关。这可能是superuser.com上的。谢谢你的快速回答,扎克。回答你的问题:我正在设计整个数据库。这意味着,我可以完全控制我想要使用的任何工具。此外,除了图中的两名数据输入人员外,还有另一层检查:数据管理人员负责处理结果,以发现任何可能的问题,并向所有相关方发送查询。非常欢迎您。听起来您需要做几件事:1)记录将用于捕获和验证数据的流程,以及您可以处于的流程的各种状态。2) 设计同时捕获数据和流程当前状态的数据库(数据是否已验证,是否返回给数据输入人员等)3)编写快速应用程序(可能基于web)以帮助用户正确遵循流程。你可以交给他们一份Excel电子表格和相关字段,但这并不能真正强制执行标准。复式输入不会违反标准化。假设这两个条目是可识别的(用户名?),那么只要你避免非键依赖,就没有理由为什么一个合适的设计不应该在BCNF /5NF中。考虑数据不一致的双条目。您是男性(条目1),女性(条目2)。你没有一个明确的结果。主表不应该有这两个值的列,这将违反标准格式。数据输入历史记录将显示一个用户名,它将是一个正常形式的有效弱表。