Почему нам нужно указывать мощность в cognos/hibernate, но не в oracle

1 Victor [2012-09-03 00:27:00]

Когда мы укажем отношение foregin key в oracle, нам не нужно говорить, является ли отношение от 1 до 1, 1 ко многим и т.д. Но когда мы укажем отношения в менеджере фреймворков cognos, почему нам нужно указывать от 1 до 1, 1 для многих и т.д.? Кроме того, не связанный, но просто любопытный, то же самое поведение в инструменте ORM, как Hibernate. Является ли спецификация только для целей optmisation?

Мой другой вопрос заключается в том, что является следствием определения неправильной взаимосвязи кардинальности? i, e, я указываю отношение 1 к 1, где оно действительно 1 для многих. Каков эффект, которым я подвергаюсь риску?

oracle10g cardinality cognos-8


2 ответа


0 Решение Jeffrey Kemp [2012-09-04 06:06:00]

Вы объявляете отношения в Oracle, характер отношений неявна в том, как он объявляется Oracle, например:

CONSTRAINT fk FOREIGN KEY (id) REFERENCES parent_table (id)

подразумевает, что между родительской таблицей и этой таблицей существует соотношение 1: M.

Если, кроме того, существует уникальное ограничение для дочерней таблицы, например:

CONSTRAINT uk UNIQUE (id)

подразумевает, что отношение равно 1:1.


0 Ran Avnon [2012-09-03 22:10:00]

Из документации Cognos:

Программное обеспечение IBM® Cognos® использует мощность отношений следующими способами:

избежать двойных учетных данных фактов
для поддержки объединений циклов, которые являются общими в моделях звездной схемы
для оптимизации доступа к базовой системе источников данных
для определения объектов запроса, которые ведут себя как факты или измерения

Для получения дополнительной информации смотрите здесь: Framework Manager Cardinality