Anchor Modeling的优点和缺点是什么?

时间:2012-05-04 22:13:24

标签: sql database-design database-normalization temporal-database anchor-modeling

我目前正在尝试创建一个数据库,其中很大一部分数据是暂时的。在阅读了许多这样做的技术(大多数涉及6nf标准化)之后,我遇到了Anchor Modeling

我开发的模式非常类似于Anchor Modeling模型,特别是因为用例(Temporal Data + Known Unknowns)非常相似,我很想完全接受它。

我遇到的两个最大的问题是,我找不到任何详细说明这种方法的负面影响的内容,而且我找不到任何对生产中用于战争故事和陷阱的组织的引用,我需要注意

我想知道这里是否有人熟悉,可以简要阐述一些否定因素(因为积极因素在研究论文及其网站上得到了很好的宣传),以及在生产环境中使用它的任何经验。

5 个答案:

答案 0 :(得分:14)

参考anchormodeling.com

以下是我所知道的几点

  1. 数据库对象的数量太大而无法手动维护,因此请确保您始终使用设计器来发展架构。

  2. 目前,设计人员完全支持MS SQL Server,因此如果您必须始终端口代码,则可能需要等到目标数据库完全受支持。我知道它在下拉框中有Oracle,但是......

  3. 不要指望(也不要求)开发人员理解它,他们必须通过5NF视图访问模型 - 这很好。问题是表是通过视图上的(而不是)触发器加载的,这可能(或可能不)是性能问题。

  4. 预计您可能需要编写一些额外的维护程序(对于每个时间属性),这些程序尚未自动生成(尚未)。例如,我经常需要一个时间属性的修剪程序 - 在两个连续的时间事件中删除相同ID的相同值记录。

  5. 生成的视图和视图上的查询可以很好地解决,因此您将来可能会编写任何内容。但是,“其他人”将在视图上查看视图的查询 - 这并不总能很好地解决。因此,您可能需要比平常更多地查询查询。

  6. 令人伤心的是,我最近使用这种方法来重构我的仓库的一部分,它就像一个魅力。诚然,仓库没有这里列出的大部分问题。

    我建议创建一个演示系统并测试,测试,测试......,尤其是第3点 - 通过触发器加载。

答案 1 :(得分:7)

关于上述第4点。重述控制几乎完成,这样您就可以防止两个连续的相同值随时间推移。

一般评论,加入并不一定是坏事。阅读:Why joins are a good thing

6NF在Anchor Modeling中的一大好处是非破坏性模式演变。换句话说,数据库模型的每个先前版本都可用作当前模型中的子集。此外,由于更改由架构中的扩展(新表)表示,因此升级数据库几乎是即时的,可以安全地在线完成(即使在生产环境中)。这种好处将在5NF中丢失。

答案 2 :(得分:5)

我没有读过任何关于它的论文,但由于它基于6NF,我预计它会受到6NF之后的任何问题的困扰。

6NF要求每个表由候选键和不超过一个非键列组成。因此,在最坏的情况下,您需要9个连接才能生成10列结果集。但是你也可以设计一个数据库,比如200个5NF的表,30个BCNF的表,只有5个6NF的表。 (我认为这本身就不再是Anchor Modeling,这似乎把所有表都放在6NF中,但我可能错了。)

神话人月仍然与此相关。

  

因此,管理问题不在于是否建立试点系统并将其丢弃。你会那样做的。唯一的问题是,是否提前计划建造一次性,或承诺向客户提供一次性。

小弗雷德布鲁克斯, The Mythical Man-Month ,第116页。

你可以多么便宜地制作一个原型来测试你预期的最坏情况?

答案 3 :(得分:-3)

在这篇文章中,我将介绍属于数据库的大部分真实业务。在这个大业务领域中,数据库的解决方案根本无法通过使用“锚模型”来解决。 在现实世界中,这种情况每天都在发生。数据输入人员输入错误的数据就是这种情况。

在实际业务中,错误经常发生在数据输入级别。数据输入经常会生成大量错误数据。因此,这是一个现实的大问题。 “锚模型”无法解决此问题。

使用“锚定建模”数据库的任何人都可以输入不正确的数据。这是可能的,因为“锚模型”的作者已经写过可以删除错误的数据。

让我通过以下示例解释此问题: 数学教授给成绩最差的学生以最好的成绩。在这所高中,教授在相应的数据库中输入成绩。这位学生把钱捐给了教授,以进行这项刑事服务。学生使用这个错误的成绩设法进入了大学。 暑假过后,数学教授回到学校。从数据库中删除了错误的分数后,教授在数据库中输入了正确的分数。在这所学校,他们使用“锚模型”数据库。因此,数学教授删除了“锚模型”作者严格建议的错误数据。 现在,由于使用了“锚定模型”软件,这位曾犯下这种犯罪行为的数学教授是干净的。

此示例说明,使用“锚定建模”,您只需应用“锚定建模技术”即可对数据进行犯罪


在5.4节中,“锚定建模”的作者写道:“仅在删除错误数据时才允许使用删除语句。” 您可以在“锚模型”作者撰写的论文“使用第六范式的敏捷建模技术处理结构演化数据”中看到本文。

请注意,“锚模型”是在第28届国际概念模型会议上提出的,并获得了最佳论文奖?!


“锚模型”的作者声称他们的数据模型可以保留历史记录!但是,此示例鞋“锚定模型”根本无法保留历史。


由于“锚定模型”允许删除数据,因此“锚定模型”具有对数据的所有操作,即:添加新数据,删除数据和更新。更新可以通过以下两种操作获得:首先删除数据,然后添加新数据。

这进一步意味着Anchor建模没有历史记录,因为它具有数据删除和数据更新的功能。


我想指出的是,在“锚模型”中,每个错误数据“必须”都将被删除。在“锚定模型”中,不可能保留错误的数据和校正的数据。

“锚定建模”不能维护错误数据的历史记录。

在本文的第一部分中,我展示了通过使用“锚模型”,任何人都可以对数据进行犯罪。这意味着“锚定模型”将公司的业务直接运营到灾难中。

答案 4 :(得分:-3)

我将举一个例子,以便专业人员可以看到真实而重要的例子,“锚定建模”有多糟糕。

示例 从事数据库业务的专业人员知道,有成千上万的国际标准已成功地用作数据库的密钥。

国际标准: 所有专业人员都知道什么是汽车的“ VIN”,什么是书籍的“ ISBN”以及数千种其他国际标准。

国家标准: 所有国家/地区对于护照,个人文件,银行卡,条形码等都有自己的标准

地方标准: 许多公司都有自己的标准。例如,当您付款时,您有一张写有标准密钥的发票,并且该密钥也写在数据库中。

可以使用各种机构,警察,海关,银行信用卡,邮局等来检查此示例中所有上述类型的钥匙。您可以在Internet上或通过以下方式检查许多“钥匙”使用电话。

我相信这些数据库中具有标准密钥的实体(在本示例中已介绍)的百分比超过了95%。

对于上述所有情况,“锚替代键”都是胡说八道。 “锚定建模”仅使用“锚定替代键”

在我的解决方案中,我使用全局或局部级别上所有标准且简单的键。

弗拉基米尔·奥德金