2012-04-12 5 views
1

Для моего бизнес-приложения, использующего Oracle 11.2.0 в качестве бэкэнд, мы собираемся иметь ряд таблиц Foo {0}, где {0} - дата, и будет один таблица для каждого конца месяца (длинный рассказ о том, почему это требуется, но это мои походные приказы). Каждая таблица будет иметь ограничение первичного ключа и индекс, используя одни и те же столбцы для всех таблиц. Вместо определения ограничения и индекса для всех таблиц можно создать один из них и применить их ко всем таблицам? Спасибо за любую помощь.Включение Oracle Constraint в нескольких таблицах

+3

Почему вы не создать единую таблицу и раздел, который к дате? –

+0

@a_horse_with_no_name - возможно, потому, что Partitioning является дополнительным для лицензии Enterprise Edition и, следовательно, * дорогостоящим *. – APC

+0

Основная проблема сейчас - масштаб; в настоящее время у нас есть все эти данные в одной таблице, но из-за требований к приложениям он создает много избыточных данных. В ближайшее время мы перейдем на SQL/Azure, поэтому мы пытаемся найти способы сокращения этих увольнений. Каждый месяц в этих таблицах записывается около 25 000 записей с более чем 100 столбцами. – Joe

ответ

2

Нет. Если вы хотите 12 отдельных таблиц, вам нужно будет определить 12 отдельных ограничений первичного ключа (и 12 отдельных индексов, если вы не хотите, чтобы Oracle автоматически создавал индекс при создании ограничения).

+0

Thanks; вот что я понял, но никогда не боюсь спрашивать! – Joe

1

Нет причин для создания этих 12 таблиц в Oracle 11.2.

Я предлагаю:

  • Создать одну таблицу. разделено на 12
  • Создания единого единый первичный ключ с соответствующим глобальным индексом
  • Создать вид на эту таблицу для Foo1, Foo2 ... Foo12 если это требуется для совместимости с существующим кодом
+0

Thanks WW; каждая таблица была специфичной для AsOfDate (ежемесячные обновления данных), но я думаю, что если я просто включу AsOfDate в первичный ключ, он доставит нас туда, где мы хотим быть. – Joe

Смежные вопросы