长。请参阅底部的摘要。
关系数据库管理系统
RDBMS代表关系数据库管理系统。这是一个管理关系数据库的系统。数据存储在那里。数据。它没有说业务逻辑。
业务流程
业务逻辑真的意味着什么?对我来说,这是用逻辑术语描述业务流程的。
流程是指那些定期发生的业务活动,足以使它们不再是临时的。这些对于每个企业都是不同的。
让我戴上商务帽,并在此说明业务的含义。对于某些人来说,这可能令人惊讶。
商业
商业是为实现价值创造而开展的活动的总和,更具体地说是可以交易的价值。这可能意味着制作联合收割机,金枪鱼三明治或提供银行服务。在世界上大多数国家,即使是非资本主义国家,人们也希望物有所值,因此,这些有价值的商品和服务的提供者之间存在竞争。竞争通常取决于价格,质量和可用性。
快速绕道:您需要在两天内获得4000万个铆钉,无论您的价格比正常供应商的价格便宜多少,您都不会通过互联网上的某个人使用Paypal帐户订购。
工艺知识
可以想象,实现“价值”的过程大部分存在于行政首长中。其中一些已写在纸上,用作公司的政策和程序。其中一些生活在公司法律顾问的头上。其中很多生活在负责部门,部门,团队以及负责机器,收银机,烤箱,卡车的人员的头脑中。其中的一小部分使它无法满足软件的业务需求,而到计算机系统中实现时,其中的一小部分就可以实现精确化。
最后,您在代码中看到的业务逻辑不是运行业务的逻辑,而是运行业务应用程序的逻辑。实际人员内部的实际大脑拥有实际的业务流程,他们毫无疑问地了解到他们大脑中的流程比计算机中的流程更准确。顺便说一句,如果您拥有的只是大多数公司的政策和程序,那么您可能无法经营公司。尽管付出了艰辛的努力,但通常情况下,这些都是非常不准确的。
因此,最后,是将应用程序逻辑编码到软件中。人们希望将其放入数据库中,因为数据库管理系统供应商提出了宏伟的主张。
应用逻辑
我拒绝。我说应用程序逻辑留在应用程序内部。数据以非常规范的方式进入数据库,然后将ETL发送到数据仓库,以进行报告,钻取,汇总,数据透视和计算。
数据
我还说数据比应用程序寿命长,因此数据规范化工作不应针对特定应用程序,甚至不针对特定业务,而应针对一般业务。您是否存储州代码?您应该使用INCITS 38:2009(http://www.census.gov/geo/www/ansi/statetables.html),因为它可以跨企业移植。这也使多个应用程序更容易操作数据。
NoSQL?
如果您将数据库视为应用程序代码的一部分,从表布局到触发器,存储过程和数据格式,则实际上是在将企业数据库用作美化的BerkleyDB,这是美化的平面文件结构,这实际上只是持久列表。从本质上讲,这就是NoSQL所做的:回到根源,但以多进程,持久,容错的方式进行。
实际代码
不,您需要将数据库视为当前和将来多个应用程序的通用数据存储库。现在我们来论证我的症结所在。业务流程随市场,政治和时尚的变化而变化。通常,它们的更改速度超出了编码人员可以使用计算机科学级语言(Java,C#,C ++等)管理的范围,并且最终以VBA在会计或营销部门的excel电子表格中编写。(并且仅当它无法在精美的vlookups中表达时...)
数据库降级
如果组织得当,数据不会有太大变化。业务逻辑变化非常快。通过将业务逻辑放入数据库中,可以降低数据库的价值,因为它将很快变得过时且不准确。
摘要
数据必须比应用程序寿命更长,因为业务流程存在于应用程序中,并且业务流程的更改频率更高。在数据库中包含业务逻辑不利于其持久性和整体价值。
警告
我已经完成了dba-ing的工作,并且已经在dba.se上阅读了答案,但老实说,他们所说的是数据完整性问题和性能问题。我完全同意,接触公司数据的人应该知道他们在做什么,无论是dba还是程序员或具有读/写访问权限的SAS高级分析师。
我还指出,他们建议编码人员知道SQL。我同意。它是一种计算机编程语言,所以我不明白为什么计算机程序员不想知道它。
后来考虑了一下
我认为中间的目的是制作一个API,并让该API管理来回的数据流。如果您不允许应用直接连接到表格,则至少可以使访问机制采用现代语言。