Теория и практика построения баз данных (1088289), страница 92
Текст из файла (страница 92)
Сделайте необходимые изменения, сохраните их и выйдите из редактора. 501. Р103 поместит исправленные операторы в буфер. Чтобы запустить их, введите косую черту, Если вы хотите, чтобы ваши операторы автоматически запускались по прочтении файла, поместите за последним оператором символ косой черты.
Когда вы введете команду 51агТ иня файла, содержащиеся в файле операторы будут выполнены автоматически. Увидеть структуру таблицы можно с помощью команды ОЕ5СР1РТ1ОЙ или ОЕ5С. Введите команду ОЕ5С СО5ТОМЕР, и 5ЯЕ Р!пз отобразит структуру таблицы С05ТОМЕР. Ваши таблицы должны выглядеть так, как показано на рис. 12.7. Обратите внимание, что стандартный тип данных Зс2ь уагсЬаг изменен на нагсЬаг2: Огас!е предпочитает такое имя. Кроме того, суррогатные ключи, которым был присвоен стандартный тип сп1, поменяли свой тип на поглЬег!38) — число длиной 38 байт.
Список некоторых наиболее часто используемых типов данных Огас1е приведен в табл. 12.1. Рис. 12.7. Использование команды ОЕЗСй!ВЕ (ОЕЗС) В1 ОВ СНАЯ(п) ВАТЕ !ЙТ ЙЦМВЕЯ(п,п) ЧАЯСНАЙ(п) или ЧАЯСНАЯ2(п) Большой двоичный объект. Может быть длиной до 4 Гбайт Текстовое поле фиксированной длины л.
Максимум 2000 симеолое Поле длиной 7 байт, содержащее дату и время Целое число длиной 38 знаков Число длиной и с П знаками после запятой Текстовое поле переменной длины до и симеолое. Максимальное значение л = 4000 Создание базы данных Огас)е 433 МАТ1ОМАОТУ Ант(втпо МАМЕ врвп~вп из Епд)вп иа 08 М(го Рппдв Рсв1ВГ ввп Чгопмп тсьву АЙЕ РНОМЕ МР сизтомеЙ10 мАме Овчв вгп)1Ь 1002 Т)йвпу Тцп1ЮМ 1000 эвйгвУ ивлев 206 555-4434 360 555-1040 206 555-1234 ОРОР ТАВСЕ МУТАВСЕ; РРРР 5ЕОРЕИСЕ Му5есиепсе; 5СагС АС!пз: АСТЕР ТАВСЕ МУТАВСЕ РРРР СОСРМИ МУСо)ивп: Создание связей 432 Глава 12. Работа с базами данных а Огас(е суррогатных ключей, некоторые значения в ней будут пропущены. Вторая, более серьезная проблема заключается в том, что в схеме нет ничего, что запрещало бы выполнить вставку без использования последовательности.
Так, Огас!е примет без возражений оператор 1И5ЕРТ 1ИТР С05ТОМЕР (СиэСавег10. Иаае. Агеа Собе. Рьспе ИивЬег) ЧАСРЕ5 (350. 'Магу Ропез', '350', '555-1234'): Возможно, что выполнение этого оператора приведет к поянлению одинаковых значений сурогатного ключа. В этом случае Огас1е не позволит выполнить вставку, посколыгу атрибут Сиасогпег10 определен как первичный ключ. Но даже если и так, все равно может возникнуть потребность в коде, который бы обрабатывал это исключение. Наконец, есть нероятность, что кто-то случайно использует не ту последовательность для вставки н таблицу. Несмотря на нозможность таких проблем, последовательности представляют собой лучший способ работы с суррогатными ключами в Огас!е.
Приведенные ниже последовательности булут использоваться нами в базе данных галереи л(!еуч К!г!Ве. Создайте их с помощью 501. Р)из. СгеаСе 5едиепсе СиаС10 !псгевепС Ьу 1 зтагС и1СЬ 1000: СгеаСе 5едиепсе АгС15110 1псгевепС Ьу 1 5СагС н)СЬ 1; СгеаСе 5едиепсе Рогу!0 !псгеаепС Ьу 1 эСагС и)СЬ 500: СгеаСе 5едиепсе Тгапэ10 !псгеаепС Ьу 1 эСагС и(СЬ 100: Ввод данных Теперь с помощью этих последовательностей мы можем заполнять таблицы дан- ными, В листинге 12.2 показан созданный в Хо(ераг! файл, состоящий из последо- вательности операторов 1И5ЕРТ.
Создайте такой файл в своем текстовом редакто- ре, полгестите в конце символ косой черты и сохраните файл под именем АС1па.ад!. Введите и операторы, содержащиеся в АС!пв будут ныполнены. Ваши данные должны выглядеть так, как показано на рис. 12.8. Листинг 12.2. Вставка данных н таблицы АЙТ)ЗТ и СЦВТОМЕЙ 1И5ЕРТ 1ИТО АРТ15Т (АГС15С!0, йаве, йаС1опа!1Су) Ча)иеэ (АГС13С10.йехСЧа), 'ТоЬеу'. '05'): 1И5ЕРТ 1йТО АРТ!5Т (АГС15С10. Раве. ИаС1опа)1Су) Ча)иеэ (АгС16С10.йекСЧа), 'М)го'. '5рап)эь'); !И5ЕРТ !ИТО АРТ15Т (АгС15С10, Иаве, ИаС1опа)1Су) Ча)иез (АгС16С 10.йекСЧа1, 'Рг(пдэ', '05'): 1И5ЕРТ !ИТО АРТ!5Т (АгС15110.
Раве, ИаС)опа)1СУ) Ча)иеэ (АгС15С10.йехСЧа), 'РоэСег', 'Епд))зп'): 1ИВЕРТ !йтО АРт15Т (АГС15С10. Раве, йаСлопа) 1Су) Ча)иеэ (АГС15С10.йекСЧа1, 'нап Чгопу1п', '05'); !И5ЕРТ 1ИТО СР5ТОМЕР (СиэСовег!0. Иаае. Агеа Собе. Рпопе ИиаЬег) Ча!иеп (Сиэс!0 йекСЧа), 'Реуугеу,Залез'. '206'. '555- 1234'): !И5ЕРТ 1ИТО СР5ТОМЕР (СиэСовег!0, йаве, Агеа Собе.
Рьспе йивЬег) Ча)иез (СиэС!О.йехСЧа). 'Рач!б 5пп'СП', '206', '555-4434'); 1И5ЕРТ 1йТО С05ТОМЕР (СипСовег!0, Раве, Агеа Сабе, Рьопе йивЬег) Ча!иеэ (СиэС!0 йехСЧа). 'Т1 11апу Тн)11дЬС', '360', '555- 1040'); 8ОС> 8ЕСЕСТ Анвап, йвтв, йв()опв)йу РЙОЫ АЙТ)8Т; 8ОС> 8ЕСЕСТ Сив1оглвг)О, Мэров, Агав Соав, Рпопв йигпавг РЙОМ СР8ТОМЕЙ; Рис. 12.8. Таблицы АЙТ18Т и СРЕТОМЕЙ после вставки Операторы ОВОР и А!.ТЕЙ С помощью оператора ОРОР можно удалять различные структуры из базы дан- ных.
Например, операторы удалят из базы данных таблицу МЧТАВСЕ и последовательность Му5едиепсе, соответственно. Все данные нз таблицы МУТАВСЕ будут потеряны. С помощью оператора РРРР можно также удалить столбец из таблицы, как показано ниже: Другие примеры использования операторов ОРОР и АЕТЕР вы увидите в ходе дальнейшего обсуждения. В Огас1е связи создаются путем введения ограничений целостности по внешнему ключу.
Например, следующие 50).-операторы определяют связь между 434 Глава 12. Работа с базами данных в Огас)е Создание базы данных Огас~е 436 таблицами С05ТОМЕР и С05ТОМЕК АКП5Т 1МТ и между таблицами АРТ15Т и С05ТОМЕР АКТ15Т 1МТ: АЕТЕР ТАВЕЕ С05ТОНЕР АРТ!5Т !МТ АОО СОМ5ТйА1МТ Аг11зс!пчГК ГОЙЕ!6М КЕУ(Агч1зч10) РЕГЕЙЕМСЕ5 АЙТ!5Т ОМ ОЕЕЕТЕ СА5САОЕ; АЕТЕР ТАВЕЕ С05ТОНЕР АРТ15Т !МТ АОО СОМ5ТРА!МТ Созсовег1птГК ГОЙЕ!6М КЕУ(Сизсовег10) РЕГЕРЕМСЕ5 С05ТОМЕЙ ОМ ОСЕЕТЕ СА5САОЕ; АЕТЕР ТАВЕЕ ИОРК АОО СОМ5ТРА1МТ Аг()з(ГК ГОРЕ16М КЕУ (Аг11зс10) РЕГЕРЕМСЕ5 АРТ15Т; ТРАМ5АСТ10М ( 1пт РЙ1НАЙУ КЕУ.
пасе МОТ МОИ., пивЬег(7.2) МОСЕ, Сасе МОСЕ, пивЬег(7.2) МОСЕ, 1пС Мни.. Упт МОТ МОСЕ); СРЕАТЕ ТАВЕЕ Тгапзаст1оп10 ОаУеАссо1гез Асса(з111опРг1се РогсЬазеОаУе 5а)езРг1се СизЬовег10 ИогХ10 АЕТЕР ТАВЕЕ ТРАМ5АСТ!ОМ АОО СОМ5ТЙА!МТ ИогКГК ГОЙЕ16М КЕУ (Иогй10) РЕГЕЙЕМСЕ5 ИОРК; Ограничениям даны имена Аг!111!о(ГК и Сиз(ошег1пУГК, Эти имена не играют особой роли для Огас)е и могут выбираться разработчиком. Обратите внимание. что для родительской таблицы указан только столбец, являющийся внешним ключом. Огас1е предполагает, что внешний ключ будет связан с первичным клю- чом родительской таблицы, поэтому указывать столбец первичного ключа нет необходимости.
Фраза ОМ ОЕЕЕТЕ СА5САОЕ указывает на то, что при удалении строк из родительской таблицы соответствующие строки дочерних таблиц долж- ны быть также удалены. Слово сазсаг(е (каскзд) используется здесь потому, что удаление идет каскадом от родительской таблицы к дочерней. Введите эти операторы в редактор 5О!. Р!цз н заполните несколько строк таб- лицы пересечения. Теперь, если вы удалите данные о покупателе или художни- ке, соответствующие строки в таблице пересечения будут также удалены. В листинге 12,3 показаны операторы, создающие таблицы Ч(ОРК и ТРАМ5АСТ1ОМ. Обратите внимание, что в определениях ограничений по внешнему ключу отсут- ствует фраза ОМ ОЕЕЕТЕ СА5САОЕ.
Так, ограничение Аг(111ГК сделает невозможным удаление тех строк в таблице АРТ15Т, которые имеют дочерние строки в таблице УУОРК. Ограничения УУогйГК и Снз(отегГК фуггкционируют сходным образом. Листинг 12.3. Создание таблиц УУОГ(К и ТЯАЫВАСТ)ОЫ СРЕАТЕ ТАВЕЕ ИОРК ( Иогк!О 1пТ Рй1НАЙУ КЕУ, Оезсг)р11оп чагсьаг( 1000) МОСЕ, Т1()е чзгслаг(25) МОТ МОЕ . Сору чагсваг(8) МОТ МОЫ., АГЬ15т!0 1пт Мот МОСЕ): АЕТЕР ТАВЕЕ ТЙАМ5АСТ!ОМ АОО СОМ5ТРА1МТ СпзтовегГК ГОЙЕ!6М КЕУ (Созтовег!О) РЕГЕРЕМСЕ5 СО5ТОНЕР; Оператор А!ТЕК можно также использовать для удаления ограничения.
Оператор АЕТЕЙ ТАВЕЕ Г(УТАВЕЕ ОРОР СОМ5ТРА1МТ Г)УСопз1га)пч улалит ограничение МуСопз(гэ(п! из таблицы МУТаЬ!е. Запись пвп)Ьег(7,2) в листинге 12.3 обозначает число с семью цифрами, две из которых находятся справа от десятичной точки. Запись поп)Ьег(7) означает целое число из семи цифр. Создание индексов Индексы создаются для обеспечения уникальности столбцов, упрощения сортировки и реализации быстрого получения данных по значениям столбцов.
Столбцы, которые часто фигурируют в условиях равенства в предложениях УУ НЕ РЕ, являются хорошими кандидатами на создание индекса. Условия равенства могут относиться к одной таблице или же к соединению. Эти два случая представлены в следующих примерах: 5ЕЕЕСТ * ГРОМ НУТАВЕЕ ИНЕЙЕ Со)овп1 = 100; 5ЕЕЕСТ * ГРОМ НУТАВЕЕ1. НУТАВЕЕ2 ИНЕЙЕ МУТАВЕЕ!.Со)ивп! = НУТАВЕЕ2.Со)ивп2; Если подобные операторы выполняются часто, то столбцы Со(напт и Со!цпуп2 являются хорошими кандидатами на создание индексов. Следующий оператор создает индекс по столбцу Мап)е таблицы С05ТОМЕР: СРЕАТЕ !МОЕХ Сиз(Мазе!сх ОМ С05ТОНЕР(Маке); Индексу дано имя СизУМате1ох.
И здесь имя не играет особой роли для Огас!е. Чтобы создать уникальный индекс, перед ключевым словом 1МОЕХ вставьте ключевое слово 0М100Е. Например, чтобы гарантировать, что нн одно произведение не будет записано дважды в таблицу УУОРК, мы можем создать уникальный индекс по столбцам (Т(1(е, Сору, Агйз(10), как показано ниже: СРЕАТЕ ОМ!ООЕ 1МОЕХ ИогКОп)све1пзех ОМ ИОРК(Т1т)е.
Сору. Аг((зт!О); Изменение структуры таблицы После создания таблицы ее структуру можно изменять с помощью оператора АЕТЕР ТА В ЕЕ. Будьте, однако, осторожны с этим оператором, поскольку при его использовании возможна потеря данных. Создание базы данных Огас)е 46т АЕТЕЙ ТАВЕЕ Т1 М001ГУ С1 ИОТ ИОН.; СРЕАТЕ ТЯВСЕ МУТЯВСЕ( Иаве УАРСМАЙ(50) 51аге СНАЙ!2) ИОТ МОСЕ, И011 СНЕСК!51аге !И !'СЯ', 'СО'. 'ИУ'))): 436 Глава )2. Работа с базами данных а Огас)е Добавление или удаление столбца осуществляется элементарно: АЕТЕР ТЯВЕЕ МУТАВЕЕ АОО С! ИСМ)ВЕЙ(4).