Общее правило проектирования баз данных гласит: каждая таблица должна иметь первичный ключ, и чем больше таблица, тем большей будет путаница в случае ослабления этого ограничения. Естественно, что хотя бы самые большие таблицы (секционированные) должны иметь первичные ключи. Но создание для таких таблиц первичных ключей приведет к тому, что мы лишимся независимости секций — у нас должен быть индекс первичных ключей таблицы, чтобы обеспечить уникальность на табличном уровне. Что же делать в таком случае? Можно равносекционировать (equi-par-tition) таблицу и уникальный индекс. Если это сделать, то при наличии требуемой секции индекса мы сможем вставить данные в секцию таблицы и принудительно ввести ограничение. Равносекционирование проиллюстрировано на рис. 4.2 и подробно рассматривается в разделе "Секционированные индексы".
CALLS9801  INO       CALLS9802 IND
CALLS OLD IND
CALLS9801	CALLS9802
Рис. 4.2. Равносекционирование таблицы CALLS и индекса
Большинство таблиц связано отношениями с другими таблицами. Хотя во многих приложениях для хранилищ данных достаточно секционировать только таблицу фактов, некоторые приложения обработки транзакций работают более эффективно, если секционировать обе таблицы в отношении "главная-подчиненная". Чтобы обеспечить независимость секций, возможно, следует равносекционировать обе таблицы. При этом, однако, возникает логическая проблема: как правило, подчиненные таблицы значительно больше главных,
56
Oracle 8