ПОИСК Статьи Чертежи Таблицы Ошибки и недостатки моделирования индексов и ограничений из "Создание информационных систем с AllFusion Modeling Suite " Колонки потенциальных ключей допускают значение NULL. Поскольку каждый экземпляр сущности должен однозначно идентифицироваться, не допускается значение NULL для первичных и альтернативных ключей. [c.298] Поскольку первичный ключ уникален, любая перестановка колонок ключа должна быть уникальна, поэтому индекс, функционально эквивалентный первичному ключу, должен быть уникален и, вероятно, не нужен, либо первичный ключ определен на колонках, которые не обеспечивают уникальности строки. Рассмотрим пример. [c.298] Для того чтобы найти такую ошибку, нужно убедиться, что колонки,. входящие в первичный ключ, действительно обеспечивают уникальность строки. Если это так, то индекс должен быть уникальным. [c.298] Если первичный ключ не обеспечивает уникальности сроки таблицы, необходимо пересмотреть колонки-кандидаты на первичный ключ и дополнить первичный ключ так, чтобы он обеспечивал уникальность. [c.299] Если первичный ключ не обеспечивает уникальности, необходимо пересмотреть состав первичного ключа. [c.299] Неверно определенный альтернативный ключ. Таблица имеет суррогатный ключ (т. е. ключ, который не имеет соответствия в предметной области, например порядковый номер последовательности). В этом случае целесообразно создать альтернативный ключ (см. гл. 2). [c.300] Таблицы не имеют потенциальные ключей (первичный ключ, уникальное ограничение или уникальный индекс), гарантирующих уникальность строки. Это может привести к неправильному выполнению запросов. Каждая таблица должна иметь либо первичный ключ, либо уникальный индекс, либо уникальное ограничение. Если потенциального ключа нет, СУБД не в состоянии проверить в момент вставки записи, б .ша ли внесена такая же строка с теми же значениями колонок ранее. [c.301] Если таблица не используется для специальных целей, например для тестирования или временного хранения отчетов, для нее должен быть создан первичный ключ. [c.301] Таблицы, не имеющие кластеризованных индексов. Кластеризованные индексы существенно повышают производительность при выборке данных. Во многих случаях целесообразно создавать первичные ключи и уникальные индексы как кластеризованные. Однако нужно помнить, что при интенсивной вставке данных наличие кластеризованного индекса может привести к падению производительности. [c.301] Первичный ключ, имеющий колонку типа действительного числа. [c.301] Обычно колонки такого типа не применяются в составе первичного ключа, за исключением специальных случаев, например приложений, работающих с графикой. [c.301] Ненужные ограничения HE K. Ограничения HE K считаются ненужными, если они либо проверяют только одно условие в логическом или либо проверяют внешний ключ в дочерней таблице вместо того, чтобы проверять первичный ключ в родительской. [c.301] Рассмотрим пример проверки только одного условия в логическом или . [c.301] Если во всех строках таблицы колонка Статус принимает только одно значение - РАЗРЕШИТЬ, то либо такая колонка не нужна и ее следует удалить вместе с ограничением HE K, либо в действительности колонка Статус может принимать и другие значения и ограничение HE K нужно переопределить. [c.301] Вернуться к основной статье