![]() |
1
1
几乎所有这些都可以使用触发器来处理增强的完整性约束。 我建议你熟悉一下 Object Role Modeling 作为一种使用更细粒度约束集(包括您描述的检查类型)设计关系数据的方法。 |
![]() |
2
1
我什么都不知道。这可能是因为大多数dba相当保守,可能不允许将一组现成的东西放入其数据库中。
在之前的一次工作中,我实际上有一个代理工作,称为每个数据库的主完整性检查,并通过电子邮件发给我。(实际上,有些个别问题是通过电子邮件发送给负责跟踪和解决问题的适当工作人员的。尤其是在集成场景中,您不能仅仅阻止外部信息的传入,您必须让它无效地传入,并在稍后尝试更正它) |
![]() |
3
1
似乎您正在寻找一个允许您声明具有任意复杂度的数据库约束的系统。我假设你想在违反约束的那一刻抓住它们,而不是在一些事后验证过程中。 要做到这一点,您需要一个关系数据库管理系统,唉,这样的事情还不存在。 要在sql系统中实现这一点,您唯一的选择是编写大量的约束执行代码,并将这些代码保存在触发器等中。如果这是不可能的,由于政治等原因,目前没有工作解决你的问题。 当心那些引导您找到不能与dbms本身紧密耦合的对象解决方案的人。最终,有人会部署一些代码,绕过dbms约束实施规则之外的代码,让您在决定问这个问题时保持原样。 我同意斯普利夫。事后约束检查在我看来也是一个愚蠢的想法。但如果这是你真正想要的,那么这里有一个可能的方法: 根据理论,所有数据库约束都可以表述为“一个查询结果总是空的查询”。因此,这样一个查询会给出类似于“具有相同键值的所有不同行对”的内容,或者,一般来说,这样一个查询会给出一个“所有错误的内容”的列表。 以每个可能违反的约束一个的速度写下查询/脚本,并在一夜之间运行这些查询/脚本。测试它们是否返回非空结果。 |
![]() |
4
1
从这里的响应可以看出,对数据运行非内联定期检查的想法并不流行。然而,如果你将你的问题重新定义为“现有哪些工具允许我监控系统中数据的状态,正如我们定义的规则所表达的那样”,那么你说的是一类解决方案,这里的大多数人可能都会用到。 例如,我相信这里的大多数DBA都会提倡监视跟踪某些表大小的脚本,或者检查空闲一段时间的数据,等等。脚本的成功或失败并不构成损坏的架构,但实际上是执行某种维护或调查的信号。 我们使用nagios作为系统监控解决方案。它所做的只是让您定义规则,这些规则通过运行脚本进行检查—在我们的例子中是由数据库的命令行接口(sqlplus for oracle)运行的.sql文件。脚本必须返回pass、fail或warn值。您可以设置如何通知(邮件、分页等),以及何时(每一次失败,或只是第一次失败,直到它被成功清除),并记录事件的历史。至于规则本身,在点按约束强制方面没有“框架”-您必须能够通过编写自己的sql来表达规则。 这是一个很大的领域-只是谷歌周围的“应用程序监测”,并找到一个适合你的需要的产品。 |
![]() |
5
0
好吧,您可以将正确的答案(约束和触发器)与错误的答案(事后测试)混合起来,方法是使用约束构建第二个相同的数据库,然后尝试迁移数据。如果新数据库在尝试插入时出现抖动,则会发现错误。一旦你的“政治”问题得到解决,你就可以永久地迁移整个事情。 |
![]() |
6
0
我会推荐bg基准(
目前bg对支持社交网络的数据和操作进行建模。你可以定义你的行为符合你的规则。 |
|
kaiselwyvrn · 我无法打开Visual Studio项目 1 年前 |
![]() |
4SadMemeXD · 无法在Django中选择相关类别 2 年前 |
![]() |
Agrim Singh · 用户数据。名称未显示用户名 2 年前 |
![]() |
Peloucvo · 用数据库中的数据填充JTable 2 年前 |
![]() |
Montaser Majid · 用于从多行中提取单行的SQL查询 2 年前 |
![]() |
Max J. · 用整数作为键将dict写入csv 2 年前 |