я буду использовать несколько отдельных таблиц или одну таблицу с несколькими разделами в Oracle - PullRequest
0 голосов
/ 28 февраля 2012

У меня есть объект, который можно назвать Response, а другой объект с именем ResponseType, Response содержит объект ResponseType.
Поэтому, когда я строил физическую модель, я не понимал, как ее реализовать.

У меня есть два варианта:

  1. Я могу создать таблицу Response для каждого из ResponseType.
  2. Я могу создать глобальную таблицу Response со столбцом ResponseType и создать раздел для каждого ResponseType.

Обратите внимание, что Response Сущность одинакова для каждого из ResponseType. Каждый ResponseType эквивалентен.

Какова ваша идея?

1 Ответ

0 голосов
/ 28 февраля 2012

Я не вижу причин для создания отдельных таблиц.

Обычно вы создаете таблицу Response, таблицу ResponseType и создаете внешний ключ между ними.Что-то вроде

CREATE TABLE ResponseType (
  ResponseTypeId NUMBER PRIMARY KEY,
  <<other columns>>
);

CREATE TABLE Response (
  ResponseId     NUMBER PRIMARY KEY,
  ResponseTypeId NUMBER REFERENCES ResponseType( ResponseTypeId ),
  <<other columns>>
);

Если у вас есть Enterprise Edition, и вы также лицензировали опцию разделения, и ваши запросы всегда будут указывать ResponseTypeId при запросе таблицы Response и, как правило, захотят прочитать всеResponse строк для конкретного ResponseTypeId, вместо того, чтобы использовать индекс, может быть выигрыш в производительности при разбиении таблицы Response.Но это довольно большое количество if утверждений.

...