Теория и практика построения баз данных (1088289), страница 103
Текст из файла (страница 103)
Контрольные ограничения являются частью А)к151-стандарта 5О1. 1992 г., и поэтому некоторые организации предпочитают использовать именно их. Преимушество же правил в том, что их можно определить в графическом режиме. Создание базы данных ВОЬ Яегчег 477 Изменение структуры таблицы Менять структуру таблицы можно также несколькими способами. Во-первых, это можно сделать с помошью 5ЯТ.-оператора АСТЕР, как в предыдущей главе. Во-вто- рых, можно использовать ту же форму, что и при создании таблиц (см. рис. 13.6 и 13.7), На рис. 13.10 показано несколько операторов АСТЕР, меняющих структуру таблицы С05Т. Первый из них увеличивает длину столбца Нагое до 100 символов.
т т фф;":; ' гча й$".;:,9ч уг:ЬМ":".Одмьу.:-''ФР ~!и"'~:Я'ВсьяАКЛГЮ,-Ю1Ь1!Ю - »' ~",', ° !~~07 ь ' 11 АЬТЕЛ ТАВЬЕ СПЕТ АЬтвв СОЬВВН на~а оаак;ЬООг КОТ ВЬЬ АЬТЕЙ ТАВЬЕ С0ЗТ Аэв сиаооыакз1пое чаек НШ 1. ':,:Аьтев тхвье совт РНОГ СОЬозя Ьооагкш.вак '"* АЬТЕВ ТАВЬЕ СПЗТ Арр Ьоаа1иолйак овак1251 И1~;.1. ю~,~ аг ...„... 1 ягт.)ззвач101(0.01 1сеяач101утоп~пагга\от(вз) М1милюоо1 10:ОО;00 Мгоит,опз, со~за Рис. 1 3. 1О. Изменение структуры таблицы с помощью операторов АЬТЕН Второй оператор АСТЕР создает новый столбец, Созгоглег51псе, и присваивает ему тип данных Уеаг.
Следующие два оператора демонстрируют альтернативный способ увеличения длины столбца. Один оператор удаляет столбец, а второй вновь создает его, но уже с другой длиной. В отличие от первого случая, однако, данные будут потеряны, поскольку столбец физически удаляется, прежде чем будет воссоздан. Такие изменения можно произвести и в окне проектирования таблиц, как показано на рис. 13,11. Надо просто открыть это окно и изменить необходимым образом столбцы, типы данных и длины. 5О1.
5егчег предупредит вас, если вы попытаетесь сделать недопустимые изменения, Я21. Вегчег позволяет уменьшать длину типов сйаг, чагсйаг и им подобных, даже если данные таких типов содержатся в каких-нибудь столбцах. При этом, однако, данные усекаются. В результате могут появиться одинаковые значения, нарушаюшие ограничения уникальности, вследствие чего изменения будут отклонены, что может привести к неразберихе, Таким образом, подобное укорочение следует выполнять с осторожностью.
478 Глава 13. Работа о базами данных в ВОС Вегуег 2000 Рис. 13.11. Результат выполнения операторов ЯГТЕ~ не рис. 13.10 То же самое относится к возможности изменить тип данных столбца: вы можете это сделать, даже если в столбце имеются данные, но будьте осторожны, так как данные могут быть потеряны. Если текстовое поле АгеэСоде, содержащее только числовые ланные, превратить в целое число, зто не привелет ни к каким проблемам.
Но если проделать ту же операцию с текстовым полем Маше, потеря данных неизбежна. Создание таблиц для примеров Если вы повторяете действия, описываемые в этой главе, со своей копией ЗЯБ Зегуег, то сейчас вам следует создать пять таблиц, показанных на рис. 10.3, г. Можете удалить таблицу С05Т вЂ” она не понадобится нам в дальнейшем. Для этого щелкните правой кнопкой мыши на имени таблицы в списке таблиц и выберите команду Ое(ете (Удалить). Таблице ТРАМ5АСТ10М дайте имя ТРАМ5. Слово ТРАМ5АСТ10М имеет настолько особенный смысл для 5ЯЕ Зегуег, что ни одна хранимая процедура не будет работать с таблицей, названной таким именем, даже если вы заключите его в скобки.
Так что жизнь будет проще, если вы назовете таблицу ТРАМ5. Определите для всех таблиц суррогатные ключи. Как и в предыдущей главе, для каждого идентификатора задайте свое начальное значение. Для таблицы Создание базы данных 8(гС Вептег 479 АРТ15Т задайте начальное значение 1, для С05ТОМЕР— 1000, для УтОЙК вЂ” 500, а для ТРАМ5 — 100. Приращение во всех случаях оставьте равным 1. Обозначьте ключ каждой из таблиц, выделив соответствующий столбец или столбцы и щелкнув па символе ключа. Как и в Огас!е, если вы создаете таблицы с помощью 3О).-операторов, то при создании таблицы С05ТОМЕР АРТ15Т 1МТ не присваивайте ни одному ее столбцу свойство РР1МАРУ КЕУ. Вместо этого после выполнения оператора СРЕАТЕ ТАВСЕ создайте ограничение первичного ключа: СОМ5ТЙЯ1МТ рК сопзтга1пт РЙ!МАЙТ КЕУ (Соз1опег!0, Яг11з110) Этот оператор установит композитный ключ (Сцновег10, Аг1вт10) с именем рй сопига)пб Разумеется, имя для ограничения вы можете выбрать на свое усмотрение.
Определение связей Связи, как и лругие структуры, можно создавать двумя способами: либо определяя внешние ключи в операторах АСТЕР ТАВСЕ, либо рисуя связи на диаграмме базы данных. С первым способом мы познакомились в предыдущей главе, поэтому сейчас булем работать с диаграммой базы данных. Щелкните правой клавишей мыши на значке 01адгаюз (Диаграммы) и выберите команду Мету ОаТаЬазе О!адгэю (Новая диаграмма базы данных). Запустится мастер, который проведет вас через процесс добавления таблиц в диаграмму.
Поместите на диаграмму все пять таблиц с рис. 10.3, г. Для создания связи перетащите первичный ключ из одной таблицы во внешний ключ другой таблицы, с которой вы хотите установить связь. Например, чтобы связать таблицы АЙТ15Т и С05ТОМЕЙ АЙТ15Т 1МТ, нажмите левую кнопку мыши, когда курсор будет находиться на столбце АгВИ10 в таблице АРТ15Т и, удерживая кнопку нажатой, переместите курсор мыши на столбец АгВП10 таблицы С05ТОМЕР АЙТ15Т 1МТ, после чего отпустите кнопку.
Тем самым будет создана связь, и на экране появится диалоговое окно, изображенное на рис. 13.12. Обратите внимание, что Вишь Зегуег предлагает для связи имя по умолчанию и показывает столбцы, служащие первичным и внешним ключом, Все это вы можете принять как есть, а вот расположенные ниже флажки, устанавливающие режим обеспечения ссылочной целостности, заслуживают более внимательного отношения к себе. Обеспечение ссылочной целостности Вспомните, что ограничения ссылочной целостности касаются присутствия ключевых значений в родительской и дочерних таблицах.
В частности, такие ограничения гарантируют, что ключевое значение дочерней таблицы присутствует в связанной с ней ролительской таблице. Примером может служить слелующее ограничение: всякое значение Агт)и10 в таблице С05ТОМЕР АРТ15Т 1МТ должно существовать среди значений Агг11110 в таблице АРт15т. 480 Глава 13.
Работа с базами данных в 8С!С Яепгет 2000 Создание базы данных 80С 8епгет 481 гаьь!бг'АйЫ .йяа; М.~~~; 'кйв1Ть~жа~м мЕ! тгьэгйягие ! отзто«ввчгттт!зтчвТ. "':".:.:,!! ' ваьгдггтн!гоа амж г«ссетомсв-автпт-вп нгтги ,.::...~' М' ~. г'::гжага вависяттр вал," = соттоаев-авттвт-твт хвтпт! гг гву!згт тавь Лггаггеьг«ау ВГЬВ ЩТШ'„- отзуоийияптт;вт мьито агьггтс г Г.!Зигхааььтсгцта алсаавав .. г влтсгз татаа::еа гр тат йатгиав Р сл1зигайаоьвотеэбветаагГЭовсвттг т сигма евьа)у',камаз та«Ф'- Га саггааараыавватаввеьйь ' '! сгиа 1 нс~~ Рис. 13.12. Определение свойств связи Первый флажок на рис. 13.12 включает проверку ссылочной целостности сушествующих данных.
Поскольку мы создаем новую базу данных, для нас он не играет роли. Но если бы мы создавалн связь с уже существующими данными и хотели бы с помощью 5ЯЕ 5егуег провести в них поиск нарушений ссылочной целостности, мы бы установили этот флажок. При сброшенном флажке 5(21. 5егуег применяет ограничения только к новым и модифицируемым данным. Если база данных имеет большие размеры, то вам, скорее всего, не захочется проверять с помошью 5г,2ь 5егуег ссылочную целостность существующих данных, так как этот процесс может оказаться весьма длительным. Кроме того, не слелует устанавливать этот флажок, если вы не знаете, как устранять те нарушения, которые могут обнаружиться. Вы можете и не знать, как исправить связь в существующих данных. следующий флажок, ел!отсе те!а!торэ!ттр тот герйсабоп (поддерживать связь прн реплнкации), относится к распределенной обработке, и пока что мы не будем его обсуждать.
Третий флажок, ЕпТотсе те!а!топь!11р Ест 1М5ЕЙТв апс! 0РОАТЕв (Поддерживать связь при вставках и обновлениях), имеет существенное значение для наших текущих целей. Когда этот флажок сброшен, 5ЯЕ 5егуег игнорирует связи при обновлениях и удалениях. Так, если мы сбросим этот флажок, то после удаления строки из таблицы АРТ15Т в таблице С05ТОМЕР АРТ15Т 1МТ могут остаться строки с несу- Таблица 13.2. Реализация ограничений соыпочной целостности е базе данных Удеу«!Й!с!Ое Связь Поддвржвние Каскадное связи при встввквх удаление и обновлениях связанных звписей Нет Дв Нет Между Стт8ТОМЕП и Тддйэ Между С08ТОМЕП и С08ТОМРд АНТ)8Т !НТ Между АПТ!8Т и УУОНК Между ууОПК и ТПАН8 Между Апт~эт и С08ТОМЕП Аптгбт !НТ Дв Дв Дв Дв Дв Нет Когда связи настроены таким образом, то, например, единственный способ удалить из таблицы АРТ15Т зались о каком-нибудь художнике — это сначала удалить из таблицы ТРАМ5 записи обо всех транзакциях с работами данного художника, затем удалить из таблицы «УОЙК записи обо всех работах данного художника и лишь после этого удалить соответствующую строку из таблицы АРП5Т.