问题标签 [data-integrity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
465 浏览

oracle - 如何防止 b 列包含与 Oracle 中任何 a 列相同的值?

什么是防止具有 2 列 a(唯一)和 b 的表在 b 列等于 a 列中的任何值的任何记录的好方法?这将用于这样的更正表,

我可以看到如何在没有并发活动的情况下使用触发器和子查询来完成它,但更可取的是更具声明性的方法。

这是应该防止的一个例子,

理想情况下,该解决方案将适用于并发插入和更新。

0 投票
3 回答
1050 浏览

database - 如何组织实时数据完整性测试和代码单元测试?

我有几个带有代码测试代码的文件(使用“unittest”类)。

后来我发现测试数据库完整性也很好。我把它放到一个单独的目录树中。(诸如键的格式正确,父节点和子节点指向正确等。编辑:这是一个 nosql 项目,我不能依赖数据库级别的检查,例如引用完整性等。)

我使用相同的 unittest 类进行完整性测试。

现在我想知道把它分开是否真的有意义。为了测试数据的完整性,我经常复制用于测试处理数据的代码的部分代码。

但它不一样。代码测试使用测试数据库(每次测试后都会被删除),完整性测试连接到实时数据并对其进行分析。我想从 cron 调用完整性测试并在实时数据库中发生某些事情时发送警报。

你会怎么处理?这种设置有标准吗?你的经验是什么?

我倾向于将所有内容放在同一个文件中,这将导致代码测试也由生产环境中的 cron 执行。

编辑:我的另一个动力是尽量保持项目简单,不要让单个任务或工作流程涉及太多文件。如果没有所有的测试,我已经有了一个类文件、一个子类、一个相关类、一些库(帮助程序)文件和主代码。测试添加一个文件。它可以帮助我在编码时保持注意力集中,减轻压力,并且我相信我犯的错误更少,并且我可以更快地记住并找到受影响的文件较少的某个代码部分。每个工作流程只有一个测试文件会有所帮助。如果我将其分开,则有 2 个文件(数据完整性测试和代码测试),可能还有 3 个(两者的通用库)。抽象会增加复杂性。

Edit2:我现在正在重构一点,只将数据测试文件移动到代码测试所在的同一目录树,但保留不同的文件,其名称表示“完整性”或“测试”。我不会(还)合并文件,因为有 2 个人反对它,我现在相信他们的经验和建议。我将暂时忍受代码重复。

Edit3:我忘了提到每次运行的测试选择在这种情况下不是由树结构决定的。测试在一个主文件中枚举,所以我目前有2个主文件“完整性”和“代码测试”,测试可以生活在同一个目录结构中。

也许更多人会回答。到目前为止,感谢您提供的宝贵意见,这已经帮助我开发了最终结构!

编辑4:我现在做了更多的重构。看来我应该保留 2 个文件,但目的稍作修改。一种针对生产服务器上的计划监控。另一个用于开发。但在这两个文件中都可以是完整性测试或代码测试。在这两个文件中,操作都可以在测试数据库(测试后被删除)和永久数据库(每个都有一个永久数据库、生产服务器和开发服务器)上执行。还有一件重要的事情:我发现自己将大量通用代码从测试文件转移到类文件中。因此,这些课程也获得了仅供测试的能力。到目前为止我喜欢这个,感觉很干净。我还没有(还)创建一个在 2 个测试前端之间共享的测试库,此代码已转到目前正在测试的对象的类文件。

请注意,我下面的评论是用“user89021”签名的,但这是我,karlthorwald。我对此无能为力。

0 投票
3 回答
3217 浏览

ms-access - MS Access 2003:数据可以从记录中消失吗?我该如何测试并防止它?

问题和关于数据库:Access 2003 数据库中记录的数据已消失。该数据库有 1 个后端和 3 个前端、多个用户并托管在 Citrix 上。在这个数据库中,我们有所有服务客户的记录,范围在 1000 多个。

背景信息:客户数据输入表单设置有各种子表单,包括“已注册程序”子表单和“服务”子表单。一个客户可以注册多个项目。一旦注册了一个程序,就可以使用服务子表单为该程序区域输入服务。服务子表单中有多个字段,其中一个是下拉字段,允许您从客户已注册的计划中进行选择(只要客户注册新计划,该列表就会更新)。

问题详情:对于一个特定的记录和一个特定的程序领域,该程序已从“已注册的程序”子表中消失,并且所有相关服务已从“服务”子表中消失,为期 3 个月的数据输入。但是,该记录的其他程序和服务并没有消失。

问题:数据消失是 Access 2003 的常见问题吗?是否有可以运行的测试来查看数据是否正在消失并捕获该数据?如果是这样,它们是什么?如果涉及特定代码,它是什么?可以做些什么来防止数据消失(除了使用不同的数据库)?

0 投票
4 回答
3166 浏览

mysql - 防止两个用户编辑相同的数据

我在不同的网络应用程序中看到了一个功能,包括 Wordpress(不确定?),如果他/她从数据库中打开一篇文章/帖子/页面/任何内容,而其他人正在同时编辑相同的数据,它会警告用户。

我想在我自己的应用程序中实现相同的功能,我对此进行了一些思考。以下示例是如何执行此操作的好习惯吗?

它有点像这样:

1)User A进入神秘文章X的编辑页面。Events查询数据库表以确保当前没有其他人在编辑同一页面,此时没有人。然后随机生成一个令牌并将其插入一个名为 的数据库表中Events

1)User B还想对文章X进行更新。现在由于我们User A已经在编辑文章,因此Events查询表格如下所示:

2) 正在检查时间戳。如果它有效并且不到 100 秒,则会出现一条消息,并且用户无法对请求的文章 X 进行任何更改:

3) 如果用户 A 决定继续并保存他的更改,则令牌与所有其他数据一起发布以更新数据库,并切换查询以删除带有令牌的行uniqueid##。如果他决定做其他事情而不是提交他的更改,文章 X 仍将在 100 秒内可供编辑User B

让我知道您对这种方法的看法!

祝大家周末愉快!

0 投票
2 回答
563 浏览

iphone - 通过许多传入的一对多关系维护核心数据实体的完整性

我有一个核心数据存储,其中包含许多描述媒体项目的 MediaItem 实体。我也有 NewsItems,它与许多 MediaItems 具有一对多的关系。到现在为止还挺好。

但是,我也有 PlayerItems 和 GalleryItems,它们也与 MediaItems 具有一对多的关系。所以 MediaItems 是跨实体共享的。

鉴于许多实体可能具有一对多关系,我如何设置从 MediaItem 到与其有关系的所有(1 个或多个)实体的互惠关系,此外,我如何实施删除 MediaItem 的规则当这些互惠关系的数量下降到0?


作为记录(如果它对其他人有用),我通过创建一个与(在末尾和末尾命名)MediaLinkedEntity具有一对多关系的抽象类来解决这个问题。然后我将此实体子类化为and并在中实现以下方法:MediaItemsMediaItemsMediaLinkedEntityLinkedEntitiesMediaItemNewsItemsGalleryItems-prepareForDeletionMediaLinkedEntity

本质上,遵循下面马库斯的回答。

0 投票
1 回答
1521 浏览

core-data - 对 Core Data NSManagedObject 深拷贝的质疑

我有一种情况,我必须将一个 NSManagedObject 从主上下文复制到编辑上下文中。正如我在 Stackoverflow 中描述的类似情况中看到的那样,对大多数人来说这听起来没有必要,但我看起来需要它。

在我的应用程序中,标签栏中有许多视图,每个视图处理与其他视图相关的不同信息。我认为我需要多个 MOC,因为用户可能会从一个选项卡跳转到另一个选项卡,并在某个选项卡中留下未保存的更改,但它可能会将数据保存在其他一些选项卡/视图中,因此如果发生这种情况,其余视图中的更改将在未经用户同意的情况下保存在最坏的情况下会使应用程序崩溃。

为了添加新信息,我使用添加 MOC 然后合并两个 MOC 中的更改,但编辑并不那么容易。我在 Stackoverflow 中看到了类似的情况,但是应用程序崩溃了,因为我的数据模型似乎没有使用 NSMutableSet 来处理关系(我认为我没有多对多关系,只是一对多)我认为它可以修改,所以我可以检索关系,就好像它们是属性一样

但我不知道如何合并克隆对象和原始对象的更改。我想我可以从主上下文中删除对象,然后合并两个上下文并在主上下文中保存更改,但我不知道这样做是否正确。我还担心数据库完整性,因为我不确定反向关系是否会保持对克隆对象的相同引用,就好像它是原始对象一样。

有人可以请教我吗?

0 投票
3 回答
4194 浏览

visual-studio-2010 - VS 2010 数据库项目删除列名更改的数据

我正在测试 Visual Studio 2010 的新数据库项目功能,并希望更改表中列的名称。我更改了创建脚本中的名称并将其部署到数据库中。生成的脚本只是删除了该列并添加了一个具有正确名称的新列,但所有数据都丢失了。

是否有不会删除列数据的设置?

我正在寻找这个问题的“DataDude”解决方案。(如果有的话)

谢谢你,基思

0 投票
3 回答
8134 浏览

php - 导出到 csv,其中包含逗号的字符串,将其拆分

此代码将数据导出到 csv 文件中,该文件在 Excel 中打开。

当字符串中包含逗号时,它会打乱数据的顺序。

我需要帮助修改下面的代码以解析其中包含逗号的任何字符串,以便在字符串之后才创建新列。

我假设它将在双引号或包含字符串的内容中传递每个字符串,因此这些引号中的任何逗号都会产生异常。

任何帮助表示赞赏。

0 投票
10 回答
1634 浏览

database - 在开发过程中如何管理数据库?

我的四个人的开发团队已经面临这个问题一段时间了:

有时我们需要处理同一组数据。因此,当我们在本地计算机上开发时,开发数据库是远程连接的。

但是,有时我们需要在数据库上运行会踩到其他开发人员数据的操作,即我们打破关联。为此,本地数据库会很好。

是否有解决此困境的最佳实践?有没有类似“SCM for data”工具的东西?

以一种奇怪的方式,在 git 存储库中保留一个 SQL 插入/删除/更新查询的文本文件会很有用,但我认为这可能会很快变得非常慢。

你们如何处理这个问题?

0 投票
3 回答
202 浏览

c# - 函数中的重复参数检查

我经常有调用层次结构,因为所有方法都需要相同的参数。如果我不想将它们放在实例级别(类成员),那么我总是问我在每个方法中检查它们的有效性是否有意义。

例如:

如果MethodA 使用该参数,那么它就很清楚了,我必须在那里以及在 MethdoB 中检查有效性。但是,只要 MethodA 只o提供给它MethodB,那么检查有效性是否也是一种好习惯MethodA

也签入的好处MethodA可能是异常在被调用者调用的方法中抛出,这很好,但有必要吗?调用堆栈也会说明这一点。也许它在公共、内部、受保护的方法中有意义,但在私有方法中没有?

我以空检查为例,但索引验证或范围验证也属于自我问题,但我认为由于冗余代码的危险,存在限制。你怎么看?

更新

通过 AakashM 的回答,我发现我不太准确。MethodA不仅电话MethodB,它还做其他事情,但不相关o。我添加了一个示例来澄清这一点。谢谢阿卡什M。