在oracle中指定外键关系时,不需要说关系是1对1、1对多等。但是在cognos框架管理器中指定关系时,为什么要指定1对1、1对许多等?此外,不相关但只是好奇,像 Hibernate 这样的 ORM 工具中的行为也是如此。该规范仅用于优化目的吗?
我的另一个问题是指定错误的基数关系有什么影响?即,我指定了一个 1 对 1 的关系,实际上它是一对多的。我冒的风险是什么?
在oracle中指定外键关系时,不需要说关系是1对1、1对多等。但是在cognos框架管理器中指定关系时,为什么要指定1对1、1对许多等?此外,不相关但只是好奇,像 Hibernate 这样的 ORM 工具中的行为也是如此。该规范仅用于优化目的吗?
我的另一个问题是指定错误的基数关系有什么影响?即,我指定了一个 1 对 1 的关系,实际上它是一对多的。我冒的风险是什么?
您确实在 Oracle 中声明了关系,关系的性质隐含在向 Oracle 声明的方式中,例如:
CONSTRAINT fk FOREIGN KEY (id) REFERENCES parent_table (id)
表示父表与本表存在1:M关系。
此外,如果子表上存在唯一约束,例如:
CONSTRAINT uk UNIQUE (id)
意味着关系是 1:1。
来自 Cognos 文档:
IBM® Cognos® 软件通过以下方式使用关系的基数:
避免重复计算事实数据
支持星型模式模型中常见的循环连接
优化对底层数据源系统
的访问 识别表现为事实或维度的查询主题
有关更多详细信息,请查看此处: Framework Manager Cardinality