ГЛАВА 1 ОСНОВНЫЕ СВОЙСТВА ERwin
Глава 15 Индексирование Таблиц Базы Данных Содержание главы Когда Вы производите обратное проектирование базы данных, ER win импортирует информацию об индексах, так что Вы можете просматривать и изменять ее, как часть Вашей ммодели данных. Когда Вы производите прямое проектирование базы данных, ERwin автоматически создает индексы для каждой сущности на основе первичного ключа, альтернативных ключей и Inversion Entry. ERwin располагает мощным редактором Index, который позволяет Вам изменять индекс, с тем чтобы улучшить работу системы по поиску данных и использовать те из специальных возможностей индексов, таких как кластеризация, которые доступны в Вашей СУБД. Когда Вы готовы к генерации физической схемы базы данных, Вы можете задать режимы, указывающие ER win, какую информацию об индексах включить в схему. Впоследствии, если Вы модифицируете индексную информацию в ERwin, Вы можете использовать возможности ERwin DB Sync и Schema Generation для обновления информации, хранящейся на сервере. В этой главе Вы узнаете, как: · Создать индекс и выбрать колонки, которые он будет использовать. · Изменить имя и (или) колонки, входящие в конкретный индекс. · Изменить такие характеристики индекса, как порядок сортировки, кластеризация, отношение к неуникальным значениям. · Удалить индекс. · Произвести обратное проектирование индекса из имеющейся базы данных. · Сгенерировать индексную информацию, как часть физической схемы базы данных. В этой главе описывается, как ER win поддерживает индексы для баз данных SQL. О поддержке индексов для баз данных, ориентированных на РС, см. Руководство по ERwin для баз данных, ориентированных на РС (ERwin Desktop Database Guide). Что такое индекс? В таблице реляционной базы данных данные обычно хранятся в том же порядке, в котором их ввели в таблицу. Хотя такой способ хранения и позволяет Вам быстро вводить новые данные, но поиск нужной строки в таблице представляется трудным. Например, в таблице MOVIE могут храниться тысячи названий фильмов в том порядкке, в котором эти фильмы закупались фирмой проката видеопродукции. Если Вам нужно найти какой-то определенный фильм, например “Танцы с волками”, он может храниться в любом месте таблицы MOVIE в зависимости от того, когда его приобрели и ввели в базу данных. Представьте себе, сколько времени может занять поиск “Танцев с волками”, если просматривать по порядку все строки в таблице. Чтобы решить эту проблему поиска данных, СУБД использует особый тип файла, называемый индексом. Точно так же, как содержание (Index) книги помогает Вам быстро найти информацию, поскольку содержит все номера страниц книги, посвященных конкретной теме, так и в базе данных, если информация, хранящаяся в колонке, индексирована, то индекс указывает на все строки, в которых хранится конкретное значение колонки. Например, если фирма проката видеопродукции нуждается в быстром поиске фильмов по их названию, то Вы можете создать индекс по колонке movie_name таблицы MOVIE. В индексе movie-name названия фильмов отсортированы в алфавитном порядке. Для каждого названия фильма индекс ссодержит ссылку, указывающую, в каком месте таблицы хранится этот фильм. Когда Вам нужно найти какой-то фильм, Вы вводите соответствующий критерий поиска ( movie-name=“Танцы с волками”), как выражение в запросе. При выполнении запроса СУБД просматривает индекс, чтобы найти, где хранится нужный фильм, вместо того чтобы просматривать по порядку все строки таблицы MOVIE. Поскольку значения в индесе хранятся в определенном порядке и нужно просматривать значительно меньший объем данных, использование индекса для поиска нужной информации гораздо быстрее, чем просмотр требуемых таблиц базы данных. Вы можете создать свой индекс для каждой колонки в таблице, если Вам часто бывает нужно найти какие-то значения, хранящиеся в этой колонке. Например, Вы можете захотеть искать фильмы по признаку movie-rating (например, “PG”) или по размеру арендной платы (например, менее $3.50 в день). Вы также можете создать единый индекс на основе нескольких колонок для поиска определенного набора значений. Например, если Вы создадите единый индекс по всем колонкам первичного ключа таблицы MOVIE-RENTAL-RECORD (renting-customer, master-number, movie-copy-number, rental-record-date), и отсортируете этот индекс по убыванию по rental-record-date, то сможете быстро найти, кто последним брал какую-то определеннуую копию “Крестного отца”. Когда Вы генерируете схему физической базы данных, ER win автоматически создает отдельный индекс на основе первичного ключа каждой таблицы, а также на основе всех альтернативных ключей, внешних ключей и Inversion Entry, поскольку эти колонки наиболее часто используются для поиска данных. Используя любой из автоматически сгенерированных индексов в качестве точки отсчета, ERwin позволяет Вам легко создавать новые индексы по мере того, как изменяются Ваши потребности. Когда Вы создаете новый индекс, Вы можете присвоить ему разные колонки и изменить порядок, в котором отсортированы значения в индексе, так чтобы были удовлетворены требования поиска Ваших конкретных приложений, работающих с базами данных. Создание и модифицирование индексов в ERwin Когда Вы генерируете схему на основе модели данных, ER win автоматически создает индекс для первичного ключа (РК) и отдельный индекс для каждого альтернативного ключа (АК), внешнего ключа (FK), Inversion Entry (IE). Если у сущности не было назначено альтернативных ключей и Inversion Entry, то ERwin создает индексы только для первичного ключа и внешних ключей. Когда ER win создает индекс, он автоматически присваивает все атрибуты одного и того же ключа индексу. Например, если в сущности CUSTOMER два атрибута назначены как АК1, ERwin автоматически создает индекс АК1 и выбирает в качестве колонок для нового индекса оба атрибута, составляющие ключ АК1. ERwin позволяет Вам также создавать новый индекс на основе альтернативного ключа или Inversion Entry, используя в качестве источника существующий индекс. Вы можете также неявным образом создать новый индекс в редакторе Entity-Attribute, добавив к атрибуту новый значок ключа, например АК1 или IE1. После того как индекс создан, Вы можете изменить его характеристики в редакторе Index, например изменить его имя, изменить его определение так, чтобы он принимал униальные или дублирующиеся значения, или изменить порядок сортировки данных. ERwin позволяет Вам создать новые индексы на основе альтернативных ключей (АК) и Inversion Entry (IE), но Вы не можете создать новый индекс на основе первичного ключа (РК) или внешнего ключа (FK). Индексы РК и FK может создать только ERwin. Имена индексов Большинство организаций используют специальные соглашения при присвоении имен объектам модели данных. Вы можете переименовать индекс, созданный ER win, так чтобы его имя соответствовало соглашениям, в редакторе Index. ERwin формирует имя индекса следующим образом: “Х”+”РК” (или “АК”, “IF”, “IE” + “n”) + Имя таблицы сущности, где n - целое число >=1, используемое для различения нескольких индексов одного типа, обычно внутри одной таблицы. ERwin последовательно присваивает номера индексам IF, исходя из порядка, в котором создаются внешние ключи в диаграмме. Например, в диаграмме MOVIES ERwin присваивает имя IF1 первому внешнему ключу, созданному в сущности MOVIE-COPY, а имя IF7 - последнему внешнему ключу, созданному в сущности OVERDUE-NOTICE. Ниже приводится таблица, иллюстрирующая то, как ER win присваивает имена индексам по умолчанию, которые он создает для сущностей CUSTOMER и MOVIE в диаграмме MOVIES. Сущность | Знак атрибута/ключа | Имя индекса ER win | CUSTOMER | customer-number (PK) customer-name (AK1) (IE1) customer-address (AK2) customer-status-code (AK1) | XPKCUSTOMER XAK1CUSTOMER XAK2CUSTOMER XIE1CUSTOMER | MOVIE | movie-number (PK) movie-name (AK1) movie-rating (AK2) movie-rental-rate | XPKMOVIEX AK1MOVIE AK2MOVIE | Имя индекса связывается с именем физической таблицы, когда Вы впервые входите в редактор Index после создания индекса. Например, если Вы выбрали сущность MOVIE и вошли в редактор Index, ER win присвоит MOVIE таблице сущности в качестве физического имени. Если впоследствии логическое имя сущности изменяется на FILM, то физическое имя таблицы, на основе которого создаются имена индексов, то есть MOVIE, не изменяется на FILM. Чтобы изменить имена таблиц в физической модели в соответствии с именами сущностей в логической модели, пользуйтесь командой “Reset Physical Names...” в редакторе <DB> Target Server. См. Гл. 13, Задание информации, ориентированной на СУБД. Если имя сущности было изменено в редакторах Entity-Attribute или Entity Browser или если табличное имя сущности было изменено в редакторе Database Schema, то редактор Index будет отражать то табличное имя сущности, которое у нее было в момент связывания, а не новое логическое имя. Имя индекса связывается с именем таблицы при нажатии кнопок “Preview...”, “Report...” и “Print...” в редакторе Database Schema Report. Колонки индекса ERwin автоматически выбирает атрибут в качестве индексной колонки, если знак ключа (то есть РК, АК, IF или IE) совпадает с типом ключа для индекса. То есть, когда ER win создает индекс по первичному ключу, то все атрибуты со знаком РК выбираются в качестве индексных колонок. Ниже приводится пример автоматического создания индексов в ER win для сущности CUSTOMER и колонки, выбранные для индекса по первому альтернативному ключу (АК1). По умолчанию колонки индекса по внешнему ключу включают в себя все атрибуты, мигрировавшие из одной и той же сущности. Например, в таблице OVER_DUE_NOTICE ER win создает два индекса по внешним ключам, по одному для каждой родительской сущности - EMPLOYEE и MOVIE_RENTAL_RECORD (см. таблицу). Индекс | Колонки индекса | Родительская сущность | IF6 | employee_number | EMPLOYEE | IF7 | movie_copy_number master_number rental_record_date renting_customer | MOVIE_RENTAL_RECORD | Когда ER win создает индекс, он автоматически располагает колонки в индексе в порядке, противоположном тому, в котором расположены атрибуты соответствующей сущности. Если Вы присвоите индексу разные колонки, то порядок, в котором будут расположены олонки в релакторе Index, непредсказуем. Вы можете увеличить скорость выполнения многих запросов, изменив порядок расположения колонок. Вы можете использовать технику drag&drop для изменения порядка расположения колонок в редакторе Index. Например, если Вы перенесете колонку customer_name так, что она окажется впереди customer_address, то это существенно ускорит выполнение запроса по customer_name. Вы не можете изменить порядок расположения колонок в индексе по первичному ключу или по внешним ключам в редакторе Index. Чтобы изменить порядок расположения колонок в этих индексах, пользуйтесь инструментом управления атрибутами (Attribute Manipulation Tool) на диаграмме или стандартными средствами редактирования в редакторе Entity-Attribute. Работа в редакторе Index Редактор Index выводит на экран информацию об индексах каждой сущности в модели данных. ER win вставляет имя выбранной СУБД в качестве префикса перед заголовком редактора и настраивает режимы редактора в соответствии с СУБД. Хотя режимы редактора Index адаптируются для каждой конкретной СУБД, Вы используете один и тот же основной метод для создания и изменения информации об индексах, независимо от того, какая СУБД выбрана. Чтобы создать новый индекс по альтернативному ключу или Inversion Entry, выберите имеющийся индекс, который послужит источником, и нажмите кнопку “New”. Если в окне “Unique” для исходного индекса стоит метка, то ER win создает индекс по альтернативому ключу. Если окно “Unique” пустое, то ERwin создает индекс по Inversion Entry. Когда ER win создает индекс, он присваивает очередной порядковый номер имени индекса, а также присваивает значения по умолчанию всем характеристикам нового индекса, таким как порядок сортировки, кластеризация и т.д. ERwin не связывает колонки с новым индексом. Это делаете Вы, выбирая атрибуты из вложенной диаграммы. Чтобы изменить какие-то характеристики индекса, выберите индекс из списка наверху редактора и введите новые значения, вводя информацию, либо ставя метки в окнах check box, либо нажимая на кнопки выбора режима (option button). Редактор Index для SYBASE располагает большим числом режимов индексирования, которые Вы можете задать из Erwin. Во вложенной диаграмме Вы можете выбрать один или несколько атрибутов (с помощью методов SHIFT-Click и СTRL-Click) в качестве колонок для индекса. С помощью окна вложенной диаграммы вы можете также назначить альтернативные ключи и Inversion Entry или изменить существующие назначения. ERwin автоматически создает индекс по внешнему ключу, когда внешний ключ создается путем миграции. По умолчанию индексы по внешним ключам не видны в редакторе Index. Чтобы они были видны, поставьте метку в окне FK, которое находится в верхней части редактора. Будьте внимательны при работе с окном вложенной диаграммы в редакторе Index. Если Вы нечаянно щелкнете по атрибуту во вложенном окне, ERwin будет считать, что Вы хотите добавить атрибут к тому индексу, который в данный момент выделен. Если Вы нечаянно изменили индекс, нажмите кнопку “Cancel” для отмены изменений. Нажмите ее сразу же, ДО ТОГО, как Вы щелкнете по другой сущности. Редактор Index для NetWare SQL (только этот редактор) позволяет Вам присваивать индексной колонке характеристики CASE, DESC, MOD, NULL и UNIQUE. Чтобы присвоить характеристику, выберите режим из списка “DBMS Property” и нажмите кнопку “Add”. Чтобы удалить ранее присвоенную характеристику, выберите режим из списка “Column Property” и нажмите кнопку “Remove”. См. также документацию по NetWare SQL. Создание индексов по альтернативным ключам и Inversion Entry Вы можете с помощью редактора Index создать новый альтернативный ключ или Inversion Entry, используя в качестве источника ранее созданный индекс. Если Вы поставите метку Х в окно check box “Unique” для индекса-источника, то ER win создаст индекс по альтернативному ключу. Если окно “Unique” для индекса-источника останется пустым, то ERwin создаст Inversion Entry. В обоих случаях ERwin cоздает новый индекс и увеличивает префикс индекса так, что он становится равен очередному доступному порядковому номеру. Чтобы создать индекс по Inversion Entry, Вы можете выбрать любой из имеющихся индексов и убрать метку из окна “Unique”. Если Вы выберете индекс по другой Inversion Entry, то ER win cоздаст индекс и увеличит префикс так, что он стаанет равен очередному доступному порядковому номеру. См. далее в этой главе разд. “Разрешение дублирования значений в индексе”. Как создать индекс по альтернативному ключу 1. Дайте команду “<DB> Index...” в меню Editor, чтобы выбрать этот редактор в качестве текущего. 2. Дважды щелкните по сущности для входа в редактор Index. 3. Из списка “Index Name” выберите индекс по альтернативному ключу. Если нет индексов по альтернативному ключу, Вы можете выбрать индекс по первичному ключу или по Inversion Entry. 4. Нажмите кнопку “New”. ER win создает новый индекс и присваивает очередной доступный порядковый номер признаку индекса. Если Вы выбрали индекс по первичному ключу, ERwin автоматически создаст индекс по альтернативному ключу. 5. Если Вы выбрали Inversion Entry в качестве индекса-источника, уберите метку из окна “Unique”, щелкнув по нему. ER win изменит индекс по Inversion Entry на индеккс по альтернативному ключу. 6. В окне вложенной диаграммы выберите атрибуты, которые Вы хотите связать с новым индексом. Для выбора нескольких атрибутов пользуйтесь методами SHIFT-Click или CTRL-Click. 7. При необходимости измените значения характеристик индекса. · Чтобы изменить имя индекса, отредактируйте имя в текстовом окне “Index Name”. · Чтобы изменить режим уникальности или кластеризации, щелкните по окнам “Unique” и “Clustered” соответственно. · Чтобы изменить порядок расположения колонок в индексе, пользуйтесь методом drag&drop для перемещения колонок с места на место в списке “Index Column”. 8. Закончив выбор атрибутов и изменение характеристик индекса, нажмите кнопку “Update” для сохранения колонок и характеристик нового индекса. 9. Если Вы закончили работу в редакторе, нажмите кнопку “ОК” для сохранения информации и выхода из редактора в диаграмму. Вы также можете нажать “Cancel” для выхода из редактора без сохранения Вашей работы. Как создать индекс по Inversion Entry 1. Дайте команду “<DB> Index...” в меню Editor, чтобы выбрать этот редактор в качестве текущего. 2. Дважды щелкните по сущности для входа в редактор Index. 3. Из списка “Index Name” выберите индекс по Inversion Entry. Если нет индексов по Inversion Entry, Вы можете выбрать индекс по первичному ключу или по альтернативному ключу. 4. Нажмите кнопку “New”. ER win создает новый индекс по альтернативному ключу для выбранного типа ключа и присваивает очередной доступный порядковый номер признаку индекса. 5. Если Вы выбрали первичный или альтернативный ключ в качестве индекса-источника, уберите метку из окна “Unique”, щелкнув по нему. ER win изменит новый индекс на индекс по Inversion Entry. 6. В окне вложенной диаграммы выберите атрибуты, которые Вы хотите связать с новым индексом. Для выбора нескольких атрибутов пользуйтесь методами SHIFT-Click или CTRL-Click. 7. При необходимости измените значения характеристик индекса. · Чтобы изменить имя индекса, отредактируйте имя в текстовом окне “Index Name”. · Чтобы изменить режим кластеризации, щелкните по окну “Clustered”. · Чтобы изменить порядок расположения колонок в индексе, пользуйтесь методом drag&drop для перемещения колонок с места на место в списке “Index Column”. 8. Закончив выбор атрибутов и изменение характеристик индекса, нажмите кнопку “Update” для сохранения колонок и характеристик нового индекса. 9. Если Вы закончили работу в редакторе, нажмите кнопку “ОК” для сохранения информации и выхода из редактора в диаграмму. Вы также можете нажать “Cancel” для выхода из редактора без сохранения Вашей работы. Изменение характеристик индекса Когда ER win создает индекс, он автоматически присваивает ему имя и значения по умолчанию для режимов, которые определяют, будет ли индекс: · содержать повторяющиеся значения. · отсортирован по возрастанию или по убыванию. · кластеризованным или некластеризованным. Редактор Index позволяет Вам изменять имя индекса, а также значения характеристик по умолчанию, как описано ниже. Изменение имени индекса Вы можете переименовать индекс в соответствии с соглашениями, принятыми в Вашей организации. Выберите индекс, который Вы хотите изменить, и отредактируйте его имя в текстовом окне “Index Name”, которое находится под списком. Будет ли индекс содержать повторяющиеся значения Когда ER win создает индекс, он автоматически по умолчанию запрещает повторяющиеся значения в индексах по первичным и альтернативным ключам и разрешает повторяющиеся значения в индексах по Inversion Entry. Если Вы устанавливаете режим Unique/Duplicate Index так, что разрешены только уникальные значения (Unique), это предохраняет Вас от хранения ненужных данных, которые могут стать источником путаницы, например от сохранения в таблице CUSTOMER двух строк с информацией об одном и том же клиенте. Бывает, наоборот, необходимо разрешить повторяющиеся значения, если ожидается, что индексированная колонка будет с большой вероятностью содержать повторяющуюся информацию. Например, для колонки movie_name можно разрешить хранение повторяющихся значений, поскольку во многих случаях римейк фильма выходит под тем же названием (например “Дракула”). Если Вы хотите изменить режим уникальных значений индекса, щелкните по check box “Unique”, чтобы разрешить или запретить хранение повторяющихся значений в индексированных колонках. Когда в окне “Unique” стоит “Х”, то в индексированной колонке (колонках) разрешается хранить только уникальные значения. Когда окно “Unique” пусто, разрешаются неуникальные (повторяющиеся) значения. Сортировка значений в индексе По умолчанию ER win автоматически сохраняет значения в индексе в порядке возрастания (значения сортируются по алфавиту от A до Z, а числа от 0 до 9). Если Вы хотите изменить порядок сортировки для колонки и Ваша СУБД поддерживает режим сортировки по убыванию (Z-A, 9-0), выберите колонку и затем поставьте метку в окно check box “Descending”. Использование кластеризованного индекса Кластеризованный индекс - это специальная техника индексирования, при которой данные в таблице физически располагаются в индексированном порядке. Использование кластеризованного индекса значительно ускоряет выполнение запросов, которые производят выборку строк с одинаковыми значениями в индексированной кколонке (колонках). Например, фирма проката видеопродукции может создать кластеризованный индекс по колонке movie-rating. Сохраняя рядом на диске все фильмы с одним и тем же значением movie-rating, Вы повышаете скорость выполнения запроса, который делает выборкку всех фильмов с каким-то определенным значением этой величины, например “PG”. Поскольку данные физически расположены в индексированном порядке, для каждой таблицы может существовать только один кластеризованный индекс. Если Ваша СУБД поддерживает использование кластеризованного индекса, то ERwin автоматически создает индекс первичного ключа кластеризованным. Если Вы хотите произвести кластеризацию индекса не по первичному ключу, а каким-то другим способом, то ERwin автоматически снимает кластеризацию с индекса по первичному ключу. В некоторых СУБД редактор ERwin Index позволяет присвоить сущности кластеризованный хешированный индекс (clustered hashed index). Хеширование - альтернативный способ хранения данных в заранее заданном порядке с целью ускорения поиска, но физически это более сложно, чем простое сохранение срок в алфавитном порядке или в соответствии с числовыми значениями. См. документацию по Вашей СУБД об индексах clustered hashed index. Поскольку данные хранятся в таком порядке, как в индексе, только один индекс может быть кластеризован или хеширован для каждой таблицы, и Вы не можете задать для одной таблицы и кластеризованный, и хешированный индекс одновременно. Обратите внимание, что если Вы задаете для таблицы кластеризованный или хешированный индекс, то добавление и удаление строк для этой таблицы замедляются, поскольку для соответствия индексу необходимо реорганизовать данные. Как изменить имя индекса 1. Щелкните по индексу, который Вы хотите переименовать, в списке “Index Name” в верхней части редактора. 2. Отредактируйте имя индекса в текстовом окне “Index Name”, которое расположено под списком. 3. Нажмите кнопку “Update” для сохранения нового имени. 4. Закончив работу в редакторе, нажмите кнопку “ОК” для сохранения изменений и выхода из редактора в диаграмму. Вы можете также нажать “Cancel” для выхода из редактора без сохранения изменений. Как изменить порядок расположения колонок в индексе 1 . В списке “Index Column” щелкните по атрибуту, расположение которого Вы хотите изменить. Не отпуская кнопку мыши, передвиньте атрибут на то место, над которым Вы хотите его вставить. 2. Отпустите кнопку мыши. ER win вставит перемещенный атрибут непосредственно над местом, где стоял указатель мыши. Пусть, например, список “Index Column” содержит следующие колонки: сustomer_name, customer_address, customer_status_co. Чтобы изменить порядок расположения колонок так, что customer_status_co окажется в первой строчке, а после нее - customer_name и customer_address, выберите customer_status_co и передвигайте его, пока он не окажется поверх customer_name. Когда Вы отпустите кнопку мыши, ERwin вставит customer_status_co над customer_name. Как перенести колонку в конец списка Index Column 1. Щелкните по второму с конца атрибуту в списке “Index Column”. 2. Не отпуская кнопку мыши, передвигайте выбранный атрибут, пока он не окажется поверх второго с конца атрибута. 3. Отпустите кнопку мыши. ER win поместит атрибут в конец. Пусть, например, список “Index Column” содержит следующие колонки: customer_status_co, сustomer_name, customer_address. Чтобы поставить customer_status_co в конец, выберите customer_status_co и двигайте его до тех пор, пока он не окажется поверх customer_address. Когда Вы отпустите кнопку мыши, ERwin вставит customer_status_co перед customer_address. Чтобы поменять местами последние два атрибута, передвиньте customer_status_co поверх customer_address. ERwin поместит имя клиента в первую строку списка. Колонки индекса по первичному ключу или внешнему ключу нельзя поменять местами в редакторе Index. Вы можете войти в редактор Entity-Attribute и изменить порядок расположения атрибутов первичного ключа в этом редакторе. Вы можете также использовать инструмент Attribute Manipulation Tool, чтобы переставить местами атрибуты первичного и внешнего ключа в окне диаграммы. Как изменить режим уникальных/неуникальных значений для индекса 1. Выберите тот индекс, для которого Вы хотите изменить режим, разрешив (запретив) повторяющиеся значения. Текущий режим см. в списке “Index Name” под заголовком Unique. 2. Для того чтобы разрешить использование в индексе только уникальных значений, поставьте метку Х в окно check box “Unique”, которое находится рядом с текстовым окном “Index Name”. Для того чтобы разрешить использование неуникальных значений в индексе, щелкните по окну “Unique”, чтобы убрать метку. Для индекса по первичному ключу требуются уникальные значения. Изменить это нельзя. Для индекса по альтернативному ключу по умолчанию задается режим Unique, но его можно изменить. Для индекса по Inversion Entry должны быть разрешены неуникальные значения. Если Вы изменяете режим на Unique, то ERwin изменяет индекс на индекс по альтернативному ключу. Как изменить режим кластеризации индекса 1. Выберите тот индекс, для которого Вы хотите изменить режим кластеризации. Текущий режим см. в списке “Index Name” под заголовком Clustered. 2. Для того чтобы cоздать кластеризованный индекс, поставьте метку Х в окно check box “Clustered”, которое находится рядом с текстовым окном “Index Name”. Для того чтобы убрать кластеризацию индекса, щелкните по окну “Clusterd”, чтобы убрать метку. Если Вы щелкнете по окну “Clustered” более чем для одного индекса одной и той же таблицы, то тот кластеризованный индекс, который Вы задали раньше, автоматически изменится на некластеризованный, поскольку должно выполняться правило: только один индекс в таблице может быть кластеризованным. Как изменить порядок сортировки с возрастающего на убывающий и наоборот 1. Выберите нужную Вам колонку в списке “Index Column”. 2. Чтобы задать порядок сортировки по убыванию, щелкните по окну “Descending”, которое расположено над списком “Index Column”, и поставьте в него метку Х. Чтобы сохранить порядок сортировки по возрастанию, который ER win задает по умолчанию, щелкните по окну “Descending”, чтобы убрать Х. Если колонка является частью более чем одного индекса, изменение порядка сортировки в одном индексе не отразится на этой колонке ни в одном другом индексе. См. далее в этой главе “Режимы индексирования для различных СУБД”. Изменение физических характеристик индекса Когда Вы производите обратное проектирование базы данных, ER win импортирует информацию относительно физической памяти для таблиц и индексов, которая определяет, в каком месте эти объекты физически хранятся на сервере. Если у Вас установлена СУБД ORACLE, SYBASE или Microsoft SQL Server, то редактор Index выводит на экран информацию относительно физической памяти для каждого индекса. Аналогично, если Вы создаете индекс и у Вас установлена СУБД ORACLE, SYBASE или SQL Server, то Вы можете выбирать, где будет храниться индекс, и (или) изменять параметры хранения в редакторе ER win Index таким же образом, как Вы задаете параметры хранения для таблиц, генерируемых ERwin в редакторе Table Property. ERwin позволяет Вам изменять любые физические параметры, выводимые на экран в редакторе Index. В дальнейшем Вы можете экспортировать значения параметров физической памяти в базу данных в процессе генерации схемы. Если у Вас установлена база данных ORACLE, SYBASE или SQL Server, Вы можете также создать новый объект физической памяти, открывая редактор <DB> Physical Object из редактора Index. В редакторе Index для ORACLE нажмите кнопку “Physical Object...”. В редакторах Index для SYBASE и SQL Server нажмите на кнопку “Segment...” для входа в редактор Physical Object для Вашей СУБД. Данная таблица кратко описывает режимы физических параметров, доступные в редакторах Index для СУБД ORACLE, SYBASE и SQL. Режим физического хранения | Для чего используется режим | ORACLE | PCTFREE | Задает размер пространства, которое нужно оставить свободным для обновлений и вставок в каждом блоке данных. | NO SORT | Ускоряет создание индекса, если данные расположены физически по порядку. Если в окне стоит Х, то значения индекса не сортируются. Если окно пустое, то значения индекса сортируются. | INITTRANS | Задает параметры для команды СУБД CREATE TABLE. | MAXTRANS | Задает параметры для команды СУБД CREATE TABLE. | SQL И SYBASE | IGNORE _DUP_KEY | Разрешает или запрещает использование повторяющихся значений ключа в таблице с уникальным индексом (кластеризованным или некластеризованным). Если в окне стоит Х, то повторяющиеся значения не допускаются. Если окно пустое, то повторяющиеся значения разрешаются. | SORTED DATA | Ускоряет создание индекса, если данные расположены физически по порядку. Если в окне стоит Х, то значения индекса не сортируются. Если окно пустое, то значения индекса сортируются. | DUP ROW | Разрешает или запрещает использование повторяющихся значений ключа в таблице с кластеризованным индексом. Если в окне стоит Х, то повторяющиеся значения не допускаются. Если окно пустое, то повторяющиеся значения разрешаются. | FILL_FACTOR | Задает, сколько данных можно добавить к странице данных при создании индекса. | См. также Гл.14, Объекты физической памяти, разд. “Создание и изменение объектов физической памяти в ER win”, а также документацию по Вашей СУБД. Как связать индекс с объектом физической памяти 1. Щелкните по сущности правой кнопкой мыши, дайте команду сокращенного pop-up меню “<DB> Index”. ER win откроет редактор Index для выбранной сущности. 2. Щелкните по стрелке “вниз” рядом со списком “TABLESPACE” (для ORACLE) или “SEGMENT” (для SQL Server) в групповом окне “Index Physical Property”. 3. Щелкните по имени объекта физической памяти, который Вы хотите связать с индексом ER win. ERwin покажет текущие значения параметров для выбранного объекта памяти. 4. Нажмите кнопку “ОК” для выхода из редактора и сохранения связанных с ним физического объекта и параметров хранения. Если Вы передумали, нажмите “Cancel” для отмены всех изменений, сделанных в редакторе Index. Как изменить параметры физического хранения в редакторе Index для ORACLE 1. Щелкните по сущности правой кнопкой мыши, дайте команду сокращенного pop-up меню “ORACLE Index”. ER win откроет редактор ORACLE Index для выбранной сущности и покажет текущие значения параметров для объекта памяти. 2. Чтобы изменить какие-либо из параметров физической памяти, щелкните по соответствующей кнопке или окну и выделите текущее значение. Удалите старое значение с помощью клавиш BACKSPACE или DELETE, а затем введите новое значение. 3. Нажмите кнопку “ОК” для выхода из редактора и сохранения связанных с ним физического объекта и параметров хранения. Если Вы передумали, нажмите “Cancel” для отмены всех изменений, сделанных в редакторе <DB> Physical Object. См. в документации по Вашей СУБД конкретную информацию о параметрах физического хранения, которые в ней поддерживаются и о значениях, которые могут быть присвоены каждому параметру. Режимы индексирования для разных СУБД ERwin позволяет Вам изменять имя индекса, но при этом длина имени ограничивается Вашей СУБД. Вы можете также изменить порядок сортировки по умолчанию с возрастающего на убывающий, если Ваша СУБД поддерживает такой порядок. Аналогично, Вы можете задать кластеризованный индекс, если эта возможность поддерживается Вашей СУБД. Данная таблица содержит список возможностей и режимов, которые поддерживаются ER win для каждой CУБД. СУБД | Максимальная длина имени индекса | Поддерживается ли сортировка по убыванию | Поддерживаются ли кластеризованные индексы | Поддерживаются ли характеристики физического хранения | DB2 | 18 | ДА | ДА | НЕТ | SQL Server | 30 | НЕТ | ДА | ДА | Rdb | 30 | ДА | ДА | НЕТ | ORACLE | 30 | ДА | НЕТ | ДА | SQL Base | 18 | ДА | ДА (хешированные) | НЕТ | WATCOM | 128 | ДА | ДА | НЕТ | Ingres | 24 | ДА | ДА | НЕТ | SYBASE | 30 | НЕТ | НЕТ | ДА | AS/400 | 30 | ДА | ДА | НЕТ | NetWare SQL | 20 | НЕТ | НЕТ | НЕТ | INFORMIX | 18 | ДА | ДА | НЕТ | Progress | 30 | ДА | ДА | НЕТ | РИС. 15.10 См. также руководство по версиям ER win для РС-ориентированных СУБД ERwin Desktop Database Guide о поддержке ERwin индексов для РС-ориентированных СУБД. См. документацию по Вашей СУБД о поддерживаемых в ней режимах индексирования. Удаление индекса Редактор Index позволяет Вам также удалять индекс, если он уже не нужен, хотя индекс по первичному ключу Вы не можете удалить. Если Вы удаляете индекс по альтернативному ключу или по Inversion Entry, то атрибуты, составляющие ключ, не удаляются. Убирается только знак альтернативного ключа или Inversion Entry. Как удалить индекс 1. Выберите индекс, который Вы хотите удалить, из списка “Index Name”. 2. Нажмите кнопку “Delete”. ER win удаляет индекс из списка. 3. Нажмите “ОК”, чтобы зафиксировать удаление и выйти из редактора в диаграмму. Вы также можете нажать “Cancel” для выхода из редактора без удаления индекса. Обратное проектирование индексов Когда Вы производите обратное проектирование базы данных, ER win может импортировать имя, определение и параметры каждого индекса, определенного в базе данных. Когда Вы импортируете информацию по индексам из базы данных, ER win сохраняет информацию о месте хранения каждого индекса, так что впоследствии Вы можете заново создать базу данных, используя то же самое распределение памяти, если Вы этого захотите. Вам не нужно вручную заново распределять память под каждую таблицу. После того как Вы импортируете индексы в ER win, Вы можете просмотреть или изменить характеристики, определения индекса и его связи с таблицами в редакторе Index. В ORACLE, SYBASE и SQL Server Вы можете связать индекс с объектом физической памяти в редакторе Index. В ORACLE Вы можете также изменить параметры хранения в редакторе Index. См. ранее в этой главе разд. “Изменение физических характеристик индекса”. Как произвести обратное проектирование индексов 1. Дайте команду “New” в меню File для создания новой пустой диаграммы ERwin. Она будет использована для просмотра модели данных, созданной в процессе обратного проектирования. 2. Дайте команду “Target Server...” в меню Server и выберите СУБД, которая содержит таблицы базы данных и индексы, для которых Вы хотите выполнить обратное проектирование. 3. Дайте командй “DB Sync Option...” в меню Server. Используйте окна check box, чтобы указать, какие типы физических объектов базы данных Вы хотите импортировать в ERwin. Чтобы импортировать информацию о физической памяти в ERwin, убедитесь, что в окне “Detect New DB Tables”, которое находится в групповом окне “DB Sync Options”, стоит метка. 4. Нажмите на кнопку “DB Sync...” для входа в диалог DB Sync, в котором Вы задаете, какие именно объекты нужно импортировать в ER win. ERwin выводит на экран сообщение о том, что он производит поиск заданных таблиц на сервере, а через несколько секунд выводит на экран список объектов, которые Вы задали в качестве кандидатов на обратное проектирование. Список содержится в окне “Unsynched DB Object” с правой стороны диалога. 5. Щелкните по конкретной таблице или используйте методы SHIFT-Click, CTRL-Click или “Click and Drag”, чтобы выделить все таблицы, которые Вы хотите импортировать в ER win. После того как все нужные таблицы выбраны, нажмите кнопку “Import”. ERwin выводит на экран список выбранных таблиц в центре окна-диалога и указывает направление “Rev Eng” (то есть Reverse Engineering - обратное проектирование) в качестве предполагаемого действия по синхронизации. 6. Нажмите на кнопку “RE Option...” для входа в диалог <DB> Reverse Engineering. Чтобы произвести обратное проектирование информации об индексах, поставьте метку в окне “Indexes”, которое находится в групповом окне “Reverse Engineering”. Если Вы хотите одновременно произвести обратное проектирование информации по внешним ключам, поставьте метку и в этом окне тоже. Нажмите кнопку “Close” для сохранения заданных Вами режимов и возвращения в диалог DB Synс. 7. Нажмите кнопку “Execute”, чтобы импортировать таблицы, индексы и информацию о параметрах индексов для каждой из выбранных таблиц в ER win. Когда ERwin снова откроет диалог DB Sync, нажмите кнопку “Execute” еще раз, чтобы завершить процесс обратного проектирования. После того как E Rwin завершит обратное проектирование определений таблиц, он выводит на экран сообщение, содержащее число таблиц, импортированных им из базы данных. Нажмите “ОК”, чтобы убрать сообщение и вернуться в окно диаграммы. Если в процессе обратного проектирования Вы выбрали одну или более таблиц, чтобы импортировать их, ER win создает новую диаграмму модели данных. См. Гл.18, Прямое и обратное проектирование, разд. “Генерация схемы базы данных”. Прямое проектирование индексов Если Вы генерируете физическую схему, Вы можете включить как часть схемы любые индексы, определенные Вами в ER win. ERwin автоматически преобразует определения индексов в выражения схемы и вставляет информацию о заданных параметрах с соблюдением синтаксиса. Групповое окно “Index Option” в редакторе Schema Generation Report позволяет Вам выбирать индексы, которые ER win будет включать в схему при генерации. Редактор Schema Generation Report содержит все режимы индексирования, поддерживаемые производителем СУБД. Для того чтобы включить индекс в схему, поставьте метку Х в окно check box рядом с каждым режимом индексирования Index Option. Чтобы исключить индекс из схемы, щелкните по окну и уберите метку. ERwin генерирует выражения физической схемы для индексов Primary Key, Alternate key, Foreign Key, Inversion Entry Key и Clustered. ERwin также генерирует выражения физической схемы для объектов физической памяти, если эта возможность поддерживается Вашей СУБД и если она была Вами задана в редакторе Schema Generation Report. Выбрав все режимы индексирования, которые вы хотите включить в Вашу схему, Вы можете затем просмотреть выражения физической схемы, нажав для этого кнопку “Preview” в редакторе Schema Generation Report. Более подробно о возможностях, доступных при индексировании, см. документацию по Вашей СУБД. Если у Вас установлена СУБД ORACLE или SYBASE и если при этом задан любой из режимов Physical Storage, то параметры физического хранения индексов будут включены в физическую схему, в выражения схемы. Если у Вас установлена СУБД NetWare, то для включения выражений для первичного ключа в схему используется режим “WITH INDEX”. Как генерировать индексы в схеме 1. Откройте ту диаграмму ER win, из которой Вы хотите генерировать физическую схему. 2. Дайте команду меню Server “Target Server...” и выберите СУБД, которой Вы пользуетесь. отвечайте “Yes”, когда ERwin спросит Вас, хотите ли Вы преобразовать типы данных в типы данных выбранной СУБД. 3. Дайте команду меню Server “<DB> Schema Generation...”, чтобы войти в редактор Schema Generation Report Options. 4. Поставьте метки в окнах check box в групповом окне “Index Options” в редакторе Schema Generation Report, чтобы указать, какие типы индексов ER win Вы хотите включить в схему. 5. Задав все нужные Вам режимы индексирования схемы, нажмите кнопку “Preview...”, если Вы хотите просмотреть выражения языка определения данных на экране прежде, чем будете создавать физическую схему. Вернувшись в редактор Schema Generation Report, Вы можете, если это необходимо, изменить режимы генерации отчетов. 6. Задав абсолютно все нужные Вам режимы, нажмите кнопку “Generate...” для запуска процесса генерации схемы. Введите имя пользователя, пароль и другую информацию, необходимую для подсоединения к серверу базы данных, а затем нажмите кнопку “Connect”. ERwin начинает генерацию схемы немедленно после того, как Вы подсоединились к серверу базы данных. В процессе генерации схемы ER win выводит на экран сообщение о состоянии процесса для каждой таблицы, которую он пытается создать. После того как ERwin закончил генерацию схемы, он выводит на экран сообщение, в котором содержится число успешно созданных таблиц, а также число неудачно завершившихся попыток создания таблицы. См. Гл.18, Прямое и обратное проектирование, разд. “Генерация схемы базы данных”. Вы можете сохранить сгенерированную схему в виде файла отчета, нажав для этого кнопку “Report” в редакторе Schema Generation Report. См. Гл.17, Отчеты в ERwin, разд. “Сохранение файла отчета”. Изменение определений индекса Если после того, как Вы закончите обратное проектирование базы данных, Вы измените колонки, порядок сортировки или какие-либо другие характеристики индекса в ER win, возникнут %противоречия между индексной информацией, хранящейся в модели ERwin, и определениями, хранящимися на сервере. Когда это происходит, Вы можете изменить определения индексов в схеме, удаляя старые таблицы и генерируя новые, используя для этого возможности, предоставляемые редактором <DB> Schema Generation Report. Для того чтобы изменить определения индексов в схеме, войдите в редактор <DB> Schema Generation Report и щелкните по окнам check box DROP TABLE и CREATE TABLE, которые находятся в групповом окне “Table Option”, чтобы указать, что Вы хотите удалить информацию, содержащуюся в выбранных Вами таблицах, и заменить ее новой информацией, которую генерирует ER win. Когда Вы повторно создаете таблицу (таблицы), убедитесь, что Вы выбрали режимы индексирования, которые Вы хотите включить в схему, такие, как Primary Key, Alternate Key, Clustered и другие режимы, поддерживаемые Вашей СУБД. Когда Вы используете редактор Schema Generation Report для изменения информации в базе данных, ER win позволяет Вам выбирать конкретные таблицы, которые Вы хотите создать заново, так чтобы это не отражалось на тех таблицах, которые не изменяются. Нажмите кнопку “Filter...”, которая находится внизу редактора, и войдите в редактор Report Filter, который содержит список всех сущностей (логических имен) в текущей области. Список находится в окне “Report Filter”. Пользуясь кнопками “Remove” и “Remove All”, исключите из списка сущности, которые Вы не хотите создавать заново. Если Вы передумали, то включите в список таблицы, которые Вы до этого удалили, пользуясь кнопками “Add” и “Add All”. Когда Вы нажимаете кнопку “Preview...” в редакторе <DB> Schema Generation Report, Вы можете просмотреть выражения DROP TABLE и SELECT TABLE для выбранной таблицы. Как изменить определения индексов 1. Дайте команду меню Server “<DB> Schema Generation...” для входа в редактор <DB> Schema Generation Report. 2. Щелкните по окнам check box “DROP TABLE” и “CREATE TABLE”, которые находятся в групповом окне “Table Option”, для того чтобы ER win удалил старую таблицу, а затем создал новую в физической схеме. 3. Поставьте метки рядом с режимами индексирования, которые Вы хотиет включить в Вашу схему, в групповом окне “Index Options”. 4. Для того чтобы выбрать конкретные таблицы, которые нужно удалить и создать заново, нажмите кнопку “Filter...” слква внизу в редакторе для входа в редактор Report Filter. Пользуйтесь кнопками “Add” и “Add All” для добавления таблиц из списка “Entity Pool” в список “Report Filter”. Пользуйтесь кнопками “Remove” и “Remove All” для возвращения выбранных таблиц обратно в Entity Pool. Нажмите кнопку “Close” для выхода из редактора и возвращения в редактор <D B> Schema Generation Report. 5. Нажмите кнопку “Preview...” для просмотра выражений DROP TABLE и CREATE TABLE для выбранных Вами таблиц. 6. Нажмите кнопку “Generate...” для генерации схемы с новыми определениями таблиц и индексов. См. Гл.18, Прямое и обратное проектирование, разд. “Генерация схемы базы данных”. Краткое повторение главы 15 Как войти в редактор Index Дайте команду меню Editor “<DB> Index”, чтобы сделать этот редактор активным. После этого дважды щелкните по сущности, чтобы открыть редактор Index для этой сущности. Как создать индекс по альтернативному ключу Установите курсор в список “Index Name” и выберите имеющийся индекс. Если не существует других индексов по альтернативному ключу, выберите индекс по первичному ключу. Нажмите кнопку “New”. E Rwin создает новый индекс и присваивает признаку индекса очередной порядковый номер. Как создать индекс по Inversion Entry Установите курсор в список “Index Name” и выберите имеющийся индекс. Если не существует других индексов по Inversion Entry, выберите индекс по первичному ключу. Нажмите кнопку “New”. ER win создает новый индекс и присваивает признаку индекса очередной порядковый номер. Если это необходимо, щелкните по окну “Unique” и поставьте в нем метку Х, чтобы создать Inversion Entry. Как связать колонки с индексом Выберите атрибуты, которые Вы хотите назначить в качестве колонок нового индекса, во вложенном окне диаграммы. Пользуйтесь методом SHIFT-Click или CTRL-Click для выбора нескольких атрибутов. Выбрав все необходимы колонки таблицы, нажмите кнопку “Update”. Как переименовать индекс Войдите в редактор Index. Щелкните по тому индексу из списка “Index Name”, который Вы хотите изменить, а затем введите новое имя в текстовое окно “Index Name”. Как изменить порядок колонок в индексе, основанном на нескольких колонках Установите курсор на ту колонку в списке “Index Column”, которую Вы хотите перенести на новое место. Нажмите левую кнопку мыши и, не отпуская ее, пеердвигайте выбранную колонку. Когда курсор придет на новое место, отпустите кнопку мыши и колонка встанет на новое место. Колонку индекса можно переносить на другое место только в том случае, если это индекс по альтернативному ключу или по Inversion Entry. Как разрешить или запретить использование повторяющихся значений в индексе Выберите индекс из списка “Index Name”. Чтобы запретить использование повторяющихся значений в индексе, допуская только уникальные значения, поставьте Х в окне “Unique”. Чтобы разрешить использование повторяющихся значений в индексе, уберите Х из окна “Unique”. Как кластеризовать индекс Выберите индекс, который Вы хотите кластеризовать. Чтобы кластеризовать индекс, поставьте Х в окне “Clustered”, которое находится рядом с окном “Index Name”. Чтобы отменить кластеризацию для кластеризованного индекса, уберите Х из окна “ Clustered”. Как изменить порядок сортировки значений в индексе Выберите колонку, для которой Вы хотите изменить порядок сортировки, из списка “Index Column”. Чтобы задать сортировку по убыванию, поставьте метку Х в окно “Descending”, которое находится над списком “Index Column”. Чтобы задать сортировку по возрастанию, уберите Х из окна “Descending”. Как связать индекс с объектом физической памяти Откройте редактор Index для выбранной Вами сущности. Щелкните по списку “TABLESPACE” (для ORACLE) или “SEGMENT” (для SYBASE и SQL Server), который находится в групповом окне “Physical Property”. Щелкните по имени объекта, который Вы хотите связать с индексом ER win. ERwin покажет текущие значения параметров для выбранного объекта памяти. Нажмите кнопку “ОК” для выхода из редактора. Как генерировать индексы в физической схеме Дайте команду меню Server “<DB> Schema Generation...” для входа в редактор Schema Generation Report. Ставьте метки в окнах check box группового окна Index Options, чтобы указать, какие типы индексов Вы хотите включить в схему. Как изменить определения индексов Войдите в редактор <DB> Schema Generation Report. Поставьте метки в окнах CREATE TABLE и DROP TABLE, которые находятся в групповом окне “Table Option”. Задайте режимы индексирования, которые Вы хотите включить при генерации новых таблиц схемы. Нажмите кнопку “Execute...” для удаления старых таблиц и генерации новых таблиц с новыми индексами.
|