Главная » Просмотр файлов » Мартин Грубер - Понимание SQL

Мартин Грубер - Понимание SQL (991940), страница 33

Файл №991940 Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL) 33 страницаМартин Грубер - Понимание SQL (991940) страница 332015-08-23СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

INSERT, конечно, к делу не относится. Он помещает новые значения родительского ключа в таблицу, так что ни одно из этих значений не может быть вызвано в данный момент. Однако, вы можете захотетьпозволить модификациям быть каскадными, но без удалений, и наоборот. Лучшейможет быть ситуация, которая позволит вам определять любую из трех категорий, независимо от команд UPDATE и DELETE. Мы будем следовательно ссылаться на эффект модификации (update effects) и эффект удаления (delete effects), которыеопределяют, что случится, если вы выполните команды UPDATE или DELETE в родительском ключе. Эти эффекты, о которых мы говорили, называются:Ограниченные (RESTRICTED) изменения,Каскадируемые (CASCADES) изменения, иПустые (NULL) изменения.Фактические возможности вашей системы должны быть в строгом стандартеANSI — это эффекты модификации и удаления, оба, автоматически ограниченнные —для более идеальной ситуации описаной выше. В качестве иллюстрации, мы покажемнесколько примеров того, что вы можете делать с полным набором эффектов модификации и удаления.

Конечно, эффекты модификации и удаления, являющиеся нестандартными средствами, испытывают недостаток в стандартном госинтаксисе.Синтаксис который мы используем здесь, прост в написании и будет служить в дальнейшем для иллюстрации функций этих эффектов.Для полноты эксперимента, позволим себе предположить что вы имеете причину изменить поле snum таблицы Продавцов в случае, когда наша таблица Продавцовизменяет разделы. (Обычно изменение первичных ключей это не то что мы рекомендуем делать практически.

Просто это еще один из доводов для имеющихся первичныхключей которые не умеют делать ничего другого кроме как, действовать как первичные ключи: они не должны изменяться.) Когда вы изменяете номер продавца, вы хотите чтобы были сохранены все его заказчики. Онако, если этот продавец покидаетсвою фирму или компанию, вы можете не захотеть удалить его заказчиков, при удалении его самого из базы данных. Взамен, вы захотите убедиться, что заказчики назначены кому-нибудь еще. Чтобы сделать это вы должны указать UPDATE сКаскадируемым эффектом, и DELETE с Ограниченным эффектом.CREATE TABLE Customers(cnuminteger NOT NULL PRIMARY KEY,cname char(10) NOT NULL,citychar(10),rating integer,snuminteger REFERENCES Salespeople,UPDATE OF Salespeople CASCADES,DELETE OF Salespeople RESTRICTED);Если вы теперь попробуете удалить Peel из таблицы Продавцов, команда будетне допустима, пока вы не измените значение поля snum заказчиков Hoffman иClemens для другого назначенного продавца.

С другой стороны, вы можете изменитьзначение поля snum для Peel на 1009, и Hoffman и Clemens будут также автоматически изменены.Третий эффект — Пустые (NULL) изменения. Бывает, что когда продавцы оставляют компанию, их текущие порядки не передаются другому продавцу. С другойстороны, вы хотите отменить все порядки автоматически для заказчиков, чьи счета выудалите. Изменив номера продавца или заказчика, можно просто передать их ему.Пример ниже показывает, как вы можете создать таблицу Порядков с использованиемэтих эффектов.CREATE TABLE Orders(onum integer NOT NULL PRIMARY KEY,amtdecimal,odate date NOT NULLcnum integer NOT NULL REFERENCES Customerssnum integer REFERENCES Salespeople,UPDATE OF Customers CASCADES,DELETE OF Customers CASCADES,UPDATE OF Salespeople CASCADES,DELETE OF Salespeople NULLS);Конечно, в команде DELETE с эффектом Пустого изменения в таблице Продавцов, ограничение NOT NULL должно быть удалено из поля snum.ВНЕШНИЕ КЛЮЧИ, КОТОРЫЕ ССЫЛАЮТСЯ ОБРАТНО КИХ ПОДЧИНЕНЫМ ТАБЛИЦАМКак было упомянуто ранее, ограничение FOREIGN KEY может представить имяэтой частной таблице, как таблицы родительского ключа.

Далеко не будучи простой,эта особенность может пригодиться. Предположим, что мы имеем таблицу Employeesс полем manager (администратор). Это поле содержит номера каждого из служащих,некоторые из которых являются еще и администраторами.Но так как каждый администратор — в то же время остается служащим, то онестественно будут также представлен в этой таблице.

Давайте создадим таблицу, гденомер служащего (столбец с именем empno), объявляется как первичный ключ, а администратор, как внешний ключ, будет ссылаться на нее:CREATE TABLE Employees(empnointeger NOT NULL PRIMARY KEY,namechar(10) NOT NULL UNIOUE,manager integer REFERENCES Employees);(Так как внешний ключ это ссылаемый первичный ключ таблицы, список столбцов может быть исключен.) Имеется содержание этой таблицы:EMPNO1003200716882002NAMETerrenceAtaliMcKennaCollierMANAGER2007NULL10032007Как вы можете видеть, каждый из них (но не Atali), ссылается на другого служащего в таблице как на своего администратора. Atali, имеющий наивысший номер втаблице, должен иметь значение установленное в NULL.

Это дает другой принципсправочной целостности. Внешний ключ, который ссылается обратно к частной таблице, должен позволять значения = NULL. Если это не так, как бы вы могли вставитьпервую строку ?Даже если эта первая строка ссылается к себе самой, значение родительскогоключа должно уже быть установлено, когда вводится значение внешнего ключа.

Этотпринцип будет верен, даже если внешний ключ ссылается обратно к частной таблицене напрямую, а с помощью ссылки к другой таблице, которая затем ссылается обратно к таблице внешнего ключа. Например, предположим, что наша таблица Продавцовимеет дополнительное поле, которое ссылается на таблицу Заказчиков, так, что каждая таблица ссылается на другую, как показано в следующем операторе CREATETABLE:CREATE(snumsnamecitycommcnumTABLE Salespeopleinteger NOT NULL PRIMARY KEY,char(10) NOT NULL,char(10),declmal,integer REFERENCES Customers);CREATE TABLE Customers(cnuminteger NOT NULL PRIMARY KEY,cname char(10) NOT NULL,citychar(10),rating integer,snuminteger REFERENCES Salespeople);Это называется — перекрестной ссылкой.SQL поддерживает это теоретически, но практически это может составить проблему.

Любая таблица из этих двух, созданная первой является ссылочной таблицейкоторая еще не существует для другой. В интересах обеспечения перекрестной ссылки, SQL фактически позволяет это, но никакая таблица не будет пригодна для использования, пока они обе находятся в процессе создания. С другой стороны, если эти дветаблицы создаются различными пользователями, проблема становится еще болеетрудной. Перекрестная ссылка может стать полезным инструментом, но она не безнеоднозначности и опасностей.

Предшествующий пример, например, не совсем пригоден для использования: потому что он ограничивает продавца одиночным заказчиком, и кроме того совсем необязательно использовать перекресную ссылку, чтобыдостичь этого. Мы рекомендуем чтобы вы были осторожны в его использовании ианализировали, как ваши программы управляют эффектами модификации и удаления, а также процессами привилегий и диалоговой обработки запросов перед тем, каквы создаете перекресную систему справочной целостности.

(Привилегии и диалоговая обработка запросов будут обсуждаться, соответственно, в Главах 22 и 23.)РЕЗЮМЕТеперь вы имеете достаточно хороше управление справочной целостностью.Основная идея в том, что все значения внешнего ключа ссылаются к указанной строкеродительского ключа. Это означает, что каждое значение внешнего ключа должнобыть представлено один раз, и только один раз, в родительском ключе. Всякий раз,когда значение помещается во внешний ключ, родительский ключ проверяется, чтобыудостовериться, что его значение представлено; иначе, команда будет отклонена. Родительский ключ должен иметь Первичный Ключ (PRIMARY KEY) или Уникальное(UNIQUE) ограничение, гарантирующее, что значение не будет представлено болеечем один раз. Попытка изменить значение родительского ключа, которое в настоящеевремя представлено во внешнем ключе, будет вообще отклонена.

Ваша система может, однако, предложить вам выбор, чтобы получить значение внешнего ключа установленого в NULL или для получения нового значения родителького ключа, и указаниякакой из них может быть получен независимо для команд UPDATE и DELETE.Этим завершается наше обсуждение команды CREATE TABLE. Далее мы представим вас другому типу команды — CREATE. В Главе 20 вы обучитесь представлению объектов данных, которые выглядят и действуют подобно таблице, но вдействительности являются результатами запросов. Некоторые функции ограничениймогут также выполняться представлениями, так что вы сможете лучше оценить вашупотребность к ограничениям, после того, как вы прочитаете следующие три главы.РАБОТА С SQL1.

Характеристики

Тип файла
PDF-файл
Размер
1,41 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее