SAP BusinessObjects 是否需要关系数据库的 Universe?

发布于 2024-10-09 05:40:00 字数 691 浏览 0 评论 0原文

目标:我希望用户能够直接连接到 RDBMS(例如 MS SQL Server)并通过可能的交叉引用进行一些查询。

工具: SAP BusinessObjects XI Enterprise

描述:

主要原因是 Universe 创建非常需要技术。想象一下 SQL DB 结构经常发生变化,甚至可能每天都发生变化。因此存在同步问题。

BO 是否能够使用 BO 查询 GUI 进行交叉引用,非技术人员可以使用它生成如下请求:

SELECT
    Classroom.Location
FROM
    Student,
    Classroom
WHERE
    Student.Name = 'Foo' AND
    Student.ClassroomName = Classroom.Name

...仅使用 ODBC 连接和 没有宇宙(或自动生成的宇宙)?

如果是,是否需要定义外键

如果没有,是否有一种简单的方法可以直接从数据库结构创建和更新(同步)BO Universe?可能正在使用他们的新 XML 格式?

Goal: I wish users to be able to directly connect to a RDBMS (e.g., MS SQL Server) and do some queries with possible cross references.

Tool: SAP BusinessObjects XI Enterprise

Description:

The main reason is that Universe creation is pretty techy. Imagine the SQL DB structure changing frequently, may be even daily. Hense the synchronization issues.

Is BO capable of doing a cross reference using the BO query GUI usable by non-techy do generate a request like:

SELECT
    Classroom.Location
FROM
    Student,
    Classroom
WHERE
    Student.Name = 'Foo' AND
    Student.ClassroomName = Classroom.Name

...with only a ODBC connection and no Universe (or an autogenerated Universe)?

If yes, does it require foreign keys to be defined?

If no, is there a simple way to create and update (synch) a BO Universe directly from the DB structure? May be using their new XML format?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白云不回头 2024-10-16 05:40:00

好问题。

背景

我已经实现了一个非常大且“复杂”的银行数据库,有 500 多个表,客户为其购买了 BO。 “复杂”用引号引起来,因为虽然我创建了一个纯 5NF(正确标准化为 5NF)RDB,并且大多数开发人员和高级用户并不认为它“复杂”,但一些开发人员和用户发现它“复杂”。第一个 BO 顾问甚至无法创建一个可用的宇宙,并超出了他一个月的预算。第二位 BO 顾问在 10 天内创建了整个宇宙。整个结构(1 个 5NF RDB;5 个应用程序;1 个 Universe;网络报告)都运行良好。

但通过这次练习,我很清楚,尽管宇宙非常强大,但它只需要克服非规范化数据库或包含来自许多不同源数据库的表的数据仓库的障碍,这些障碍那么需要将它们一起视为一个逻辑表。第一个顾问只是重复他习惯的事情,做他的技术事情,并且不理解规范化数据库的含义。第二个认识是,真正的(规范化的)RDB 根本不需要 BO Universe。

因此,在下一个大型银行项目中,RDB几乎是之前RDB的120%,我建议不要使用BO,而是购买了便宜得多的Crystal Reports。它提供了用户需要的所有报告,但它不具备“切片和切块”功能或本地PC上的数据立方体。我唯一需要做的额外工作是提供一些视图来简化 RDB 的“复杂”部分,所有这些都在一天内完成。

从那时起,我一直参与使用BO的作业,并修复了问题,但我没有使用XI(及其自动生成的Universe)。当然,我们倾向于使用简单的报告工具,并完全避开宇宙,这一点已被多次证明。

一般来说,是的,BO Query GUI(甚至是 XI 之前的版本)绝对会直接读取 RDB 目录,您可以从中创建和执行您想要的任何报告,无需 Universe。你的例子一点也不费劲。 “交叉引用”根本不是什么难事。非技术用户可以自己创建和运行此类报告。我已经完成了很多这样的事情,只需几分钟。有时(例如,对于超类型-子类型结构),创建视图可以进一步简化此操作。

您的问题

暴露了阻碍实现这一目标的问题。

  1. 遇到的问题是您没有关系数据库。将一些数据倒入名为“关系 DBMS”的容器中不会将该内容转换为关系数据库。

    • 真正的 RDB 的一个方面是所有定义都位于 ISO/IEC/ANSI 标准 SQL 目录中。
    • 如果我们的“外键”不在目录中,那么您就没有外键,也就没有服务器定义和维护的引用完整性。
    • 您可能也没有规则和检查约束;因此,您不具备服务器定义和维护的数据完整性。
  2. 注意到您关于更改“db”结构的评论。显然,您还没有标准化数据。

    • 如果数据已正确标准化,则结构不会改变。
    • 当然,结构将会扩展(添加列;添加新表),但实体和属性的现有结构不会改变,因为它们已经 (a) 正确建模并 (b) 标准化
    • 因此,编写的任何应用程序代码或构建的任何 BO Universe(以及由此创建的报告)都不易受到此类 RDB 扩展的影响;他们继续快乐地奔跑。
    • 是的,他们当然无法获取新列和新表,但前提是这是扩展的一部分;关键是现有的结构以及依赖于它的一切都是稳定的。
    • 注意您的示例查询。这是完全缺乏规范化的表面证据:Student.ClassroomName 是一个非规范化列。它不应该为每个学生存在一次,而应该为每个教室存在一次。
    • 我只是回答你的问题,但需要注意的是,缺乏规范化会导致许多其他问题,与你的问题没有直接关系:大量数据重复;更新异常; “数据库”和“应用程序”之间缺乏独立性(其中一个的更改会影响另一个);缺乏完整性(数据和参考);缺乏稳定性,因此是一个永无止境的项目。
  3. 因此,你不仅有一些几乎每天都在变化的“结构”,而且在“结构”中你没有任何不会改变的结构。这种程度的持续变化对于项目的原型阶段来说是典型的;尚未进入开发阶段。

  4. 如果您使用 BO 或自动生成的 Universe,则必须每天自动生成 Universe。然后每天重新创建报告定义。用户可能不喜欢重新开发宇宙以及每日报告的想法。通常,他们会等待项目的 UAT 阶段,甚至不是生产阶段。

    • 如果您有外键,因为它们位于标准 SQL 目录中,BO 会找到它们
    • 如果您没有外键,但文件之间有某种“关系”,并且可以推断出这种“关系”的某种命名约定,BO 有一个检查自动生成窗口中某处的框,这将“从列名推断外键”。当然,它会发现您可能没有想到的“关系”。
    • 如果您没有命名约定,那么 BO 就无法使用任何东西来推断此类“关系”。产品所能发挥的魔力是有限的
    • 而且你仍然面临着“结构”一直在变化的问题,所以无论你今天依赖什么魔法,明天都可能不起作用。

答案

业务对象、Crystal 报表以及所有高端到低端的报表工具主要是为关系数据库编写的,这些数据库驻留在 ISO/IEC/ANSI 标准 SQL DBMS 中。这意味着,如果定义在目录中,他们就会找到它。高端工具有各种附加选项(这就是你所付出的代价)来帮助克服 RDBMS 不合标准内容的限制,最终在 Universe 中达到顶峰;但如您所知,需要付出相当多的努力和技术资格才能实施。

因此,我能给您的最好建议是找一位合格的建模师并为您的数据建模;这样它是稳定的,没有重复,并且你的代码是稳定的,等等;这样,简单(或重型)报告工具可用于(a)轻松定义报告以及(b)运行这些报告定义而无需每天更改它们。你会发现每天都在变化的“结构”却没有。每天都在变化的是您对数据的理解。

然后,您的愿望就会实现,报告可以由用户轻松定义一次,“交叉引用”等等,无需宇宙,并且可以随时运行它们。

相关材料

您的大学或项目并不是世界上第一个尝试(a)对其数据建模或(b)实现数据库(无论是否关系)的大学或项目。您可能对其他人在该领域已经完成的工作感兴趣,因为通常有很多信息是免费提供的,以避免重新发明轮子,特别是如果您的项目没有合格的员工。这是我最近为当地一所大学所做的一个项目的简化版本(他们很高兴我发布通用版本,但不是完整的客户特定版本);我写了 RDB,他们写了应用程序。

简化的大学数据模型< /strong>

不熟悉关系建模标准的读者可能会发现 IDEF1X 表示法很有用。

对评论的回应

那就说清楚吧。首先是一个定义。

  1. 关系数据库按时间顺序,在 2010 年最后几天的背景下,拥有超过 25 年的普遍可用的真正关系技术[超过 35 年的难以使用的关系技术] ,有许多适用的标准,并使用这样的定义(维基百科不适合提供所述定义,因为贡献者缺乏技术资格):
  • 坚持关系模型作为原则

  • 规范化到至少第三范式(您需要 5NF 才能完全避免数据重复和更新异常)

  • 符合各种现有标准(适用于每个特定领域)

  • 由合格且有能力的建模者建模

  • 以 ISO/IEC/ANSI 标准 SQL 实现(即声明性引用完整性、外键定义、规则和检查约束、域、数据类型)

  • 是开放架构(可供任何应用程序使用)

  • 被视为具有重大价值的公司资产

  • ,因此可以合理地防止未经授权的访问;数据和引用完整性;不受控制的更改(影响其他用户的计划外更改等)。

否则,您将无法享受关系数据库的强大功能、性能、易于更改和易用性。

  1. 它不是 RDBMS 平台的内容。将非结构化或无组织的数据倒入标有“关系数据库引擎”的容器中并不会神奇地将内容转换为容器的标签。

因此,如果它是一个合理的(不完美的,不是100%符合标准的)关系数据库,那么BO Universe绝对不需要访问和使用它的全部功能(仅受报告工具的功能限制)。

如果它没有 DRI(FK 定义),并且没有旧式“定义的键”并且没有命名约定(从中可以导出“关系”)并且< /strong> 没有匹配的数据类型,那么任何报告工具(或人类)都无法找到任何内容,

这不仅仅是 FK 定义,

具体取决于数据堆中已实现的关系数据库的哪些位 。 > 以及 报告工具的功能(许可证费用是多少), 范围两端的某些功能,在没有 Universe 的情况下是可能的。报告工具的种类;他们的 Crystal Reports 项目大约是为非数据库提供数据库定义所需的一半。

想象一下用户发现这一点时会有什么感受。 3 个月后,他们最终获得的数据结果是重复的,没有人保持最新的

“数据库”对象定义

如果您实施的开发人员或最终用户不合格) 。 “数据库”中的“表”,那么它们给自己带来的障碍和矛盾就没有限制。 (“在这里,我有一个 RDBMS,但内容不是;我有 BO,但它不能;我有加密,但我已将工资单数据复制到五个地方,以便人们可以获取每当我认为我已经看到了疯狂的极限时,就会有人在 SO 上发布一个问题,并再次告诉我疯狂是没有极限的。

只要定义了正确的 FK,通过 ODBC 连接的 BO 就能够在没有 Universe 的情况下进行 JOIN(交叉引用)?

(ODBC 与之无关;它将通过本机进行相同的操作)连接或通过浏览器。)

这一次,重新正确定义了 FK,是的。但我长篇大论的目的是为了找出许多其他因素。

这不是一个 BO 或 BO Universe 的问题,而是“用户的定义和重复是多么疯狂”。 FK 有时可以工作,但有时则不行;今天可以工作,明天就不行了。

Good question.

Background

I have implemented one very large and "complex" banking database, 500+ tables, that the customer bought BO for. The "complex" is in quotes because although I created a pure 5NF (correctly Normalised to 5NF) RDB, and most developers and the power users did not find it "complex", some developers and users found it "complex". The first BO consultant could not even create a working Universe, and overran his budgeted one month. The second BO consultant created the entire Universe in 10 days. The whole structure (one 5NF RDB; 5 apps; one Universe; web reporting) all worked beautifully.

But as a result of that exercise, it was clear to me that although the Universe is very powerful, it is only required to overcome the impediments of an un-normalised database, or a data warehouse that has tables from many different source databases, which then need to be viewed together as one logical table. The first consultant was simply repeating what he was used to, doing his techie thing, and did not understand what a Normalised db meant. The second realisation was that BO Universe was simply not required for a true (normalised) RDB.

Therefore on the next large banking project, in which the RDB was pretty much 120% of the previous RDB, I advised against BO, and purchased Crystal Reports instead, which was much cheaper. It provided all the reports that users required, but it did not have the "slice and dice" capability or the data cube on the local PC. The only extra work I had to do was to provide a few Views to ease the "complex" bits of the RDB, all in a days work.

Since then, I have been involved in assignments that use BO, and fixed problems, but I have not used XI (and its auto-generated Universe). Certainly, a preponderance towards simple reporting tools, and avoiding the Universe altogether, which has been proved many times.

In general then, yes, BO Query GUI (even pre-XI) will absolutely read the RDB catalogue directly and you can create and execute any report you want from that, without an Universe. Your example is no sweat at all. "Cross references" are no sweat at all. The non-techie users can create and run such reports themselves. I have done scores of these, it takes minutes. Sometimes (eg. for Supertype-Subtype structures), creating Views eases this exercise even further.

Your Question

Exposes issues which are obstacles to that.

  1. What is coming across is that you do not have a Relational Database. Pouring some data into a container called "relational DBMS" does not transform that content into a Relational Database.

    • one aspect of a true RDB is that all definitions are in the ISO/IEC/ANSI standard SQL catalogue.
    • if our "foreign keys" are not in the catalogue then you do not have Foreign Keys, you do not have Referential Integrity that is defined, maintained by the server.
    • you probably do not have Rules and Check Constraints either; therefore you do not have Data Integrity that is defined and maintained by the server.
  2. Noting your comments regarding changing "db" structure. Evidently then, you have not normalised the data.

    • If the data was normalised correctly, then the structure will not change.
    • Sure, the structure will be extended (columns added; new tables added) but the existing structure of Entities and Attributes will not change, because they have been (a) modelled correctly and (b) normalised
    • therefore any app code written, or any BO Universe built (and reports created from that), are not vulnerable to such extensions to the RDB; they continue running merrily along.
    • Yes of course they cannot get at the new columns and new tables, but providing that is part of the extension; the point is the existing structure, and everything that was dependent on it, is stable.
    • Noting your example query. That is prima facie evidence of complete lack of normalisation: Student.ClassroomName is a denormalised column. Instead of existing once for every Student, it should exist once for each Classroom.
    • I am responding to your question only, but it should be noted that lack of normalisation will result in many other problems, not immediately related to your question: massive data duplication; Update Anomalies; lack of independence between the "database" and the "app" (changes in one will affect the other); lack of integrity (data and referential); lack of stability, and therefore a project that never ends.
  3. Therefore you not only have some "structure" that changes almost daily, you have no structure in the "structure" of that, that does not change. That level of ongoing change is classic to the Prototype stage in a project; it has not yet settled down to the Development stage.

  4. If you use BO, or the auto-generated Universe, you will have to auto-generate the Universe daily. And then re-create the report definition daily. The users may not like the idea of re-developing an Universe plus their reports daily. Normally they wait for the UAT stage of a project, if not the Production stage.

    • if you have Foreign Keys, since they are in the Standard SQL catalogue, BO will find them
    • if your do not have Foreign Keys, but you have some sort of "relation" between files, and some sort of naming convention from which such "relations" can be inferred, BO has a check box somewhere in the auto-generate window, that will "infer foreign keys from column names". Of course, it will find "relations" that you may not have intended.
    • if you do not have naming conventions, then there is nothing that BO can use to infer such "relations". there is only so much magic that a product can perform
    • and you still have the problem of "structure" changing all the time, so whatever magic you are relying on today may not work tomorrow.

Answer

Business Objects, Crystal reports, and all high end to low end report tools, are primarily written for Relational Databases, which reside in an ISO/IEC/ANSI Standard SQL DBMS. that means, if the definition is in the catalogue, they will find it. The higher end tools have various additional options (that's what you pay for) to assist with overcoming the limitations of sub-standard contents of a RDBMS, culminating in the Universe; but as you are aware takes a fair amount of effort and technical qualification to implement.

The best advise I can give you therefore, is to get a qualified modeller and model your data; such that it is stable, free of duplication, and your code is stable, etc, etc; such that simple (or heavy duty) report tools can be used to (a) define reports easily and (b) run those report definitions without changing them daily. You will find that the "structure" that changes daily, doesn't. What is changing daily is your understanding of the data.

Then, your wish will come true, the reports can be easily defined once, by the users, "cross references" and all, without an Universe, and they can be run whenever they like.

Related Material

This, your college or project, is not the first in the universe to be attempting to either (a) model their data or (b) implement a Database, relational or not. You may be interested in the work that other have already done in this area, as often much information is available free, in order to avoid re-inventing the wheel, especially if your project does not have qualified staff. Here is a simplified version (they are happy for me to publish a generic version but not the full customer-specific version) of a recent project I did for a local college; I wrote the RDB, they wrote the app.

Simplified College Data Model

Readers who are not familiar with the Relational Modelling Standard may find IDEF1X Notation useful.

Response to Comments

To be clear then. First a definition.

  1. a Relational Database is, in chronological order, in the context of the last few days of 2010, with over 25 years of commonly available true relational technology [over 35 years of hard-to-use relational technology], for which there are many applicable Standards, and using such definitions (Wikipedia being unfit to provide said definitions, due to the lack of technical qualification in the contributors):
  • adheres the the Relational Model as a principle

  • Normalised to at least Third Normal Form (you need 5NF to be completely free of data duplication and Update Anomalies)

  • complies with the various existing Standards (as applicable to each particular area)

  • modelled by a qualified and capable modeller

  • is implemented in ISO/IEC/ANSI Standard SQL (that's the Declarative Referential Integrity ala Foreign Key definitions; Rule and Check constraints; Domains; Datatypes)

  • is Open Architecture (to be used by any application)

  • treated as as a corporate asset, of substantial value

  • and therefore reasonably secured against unauthorised access; data and referential integrity; uncontrolled change (unplanned changes affecting other users, etc).

Without that, you cannot enjoy the power, performance, ease of change, and ease of use, of a Relational Database.

  1. What it is not, is the content of an RDBMS platform. Pouring unstructured or un-organised data into a container labelled "Relational Database Engine" does not magically transform the content into the label of the container.

Therefore, if it is reasonably (not perfect, not 100% Standard-complaint), a Relational Database, the BO Universe is definitely not required to access and use it to it full capability (limited only by functions of the report tool).

If it has no DRI (FK definitions), and no older style "defined keys" and no naming conventions (from which "relations can be derived) and no matching datatypes, then no report tool (or human being) will be able to find anything.

It is not just the FK definitions.

Depending on exactly which bits of a Relational Database has been implemented in the data heap, and on the capability of the report tool (how much the licence costs), some capability somewhere within the two ends of the spectrum, is possible. BO without the Universe is the best of breed for report tools; their Crystal Reports item is about half the grunt. The Universe is required to provide the database definitions for the non-database.

Then there is the duplication issue. Imagine how an user is going to feel when they find out that the data that they finally got through to, after 3 months, turns out to be a duplicate that no one keeps up-to-date.

"Database" Object Definition

If you have unqualified developers or end users implementing "tables" in the "database", then there is no limit to the obstacles and contradictions they place on themselves. ("Here, I've got an RDBMS but the content isn't; I've got BO but it can't; I've got encryption but I've copied the payroll data to five places, so that people can get at it when they forget their encryption key".) Every time I think I have seen the limit of insanity, someone posts a question on SO, and teaches me again that there is no limit to insanity.

BO via an ODBC connection is capable of doing JOIN (cross reference) without Universe as long as there are the correct FK defined?

(ODBC has nothing to do with it; it will operate the same via a native connection or via a browser.)

For that one time, re FKs defined correctly, yes. But the purpose of my long response is to identify the that are many other factors.

It isn't a BO or BO Universe question, it is "just how insane are the users' definitions and duplication". FKs could work sometimes and not others; could work today and not tomorrow.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文