Текст книги "SQL – язык реляционных баз данных"
Автор книги: Владимир Кара-Ушанов
Жанр: Базы данных, Компьютеры
сообщить о неприемлемом содержимом
Текущая страница: 1 (всего у книги 8 страниц) [доступный отрывок для чтения: 2 страниц]
В. Ю. Кара-Ушанов
SQL – язык реляционных баз данных
Введение
Как известно, для изучения нового языка требуется значительная затрата сил и времени, поэтому стоит остановиться на причинах, которые могут побудить к изучению языка SQL. SQL (Structured Query Language – язык структурированных запросов) является языком реляционных баз данных, которые уже на протяжении многих лет заслуженно пользуются признанием у разработчиков информационных систем. Сочетание простоты и наглядности основных понятий с их строгим математическим обоснованием обеспечили широкое распространение реляционных баз данных. SQL – это первый и единственный язык работы с базами данных, который получил широкое распространение и поддерживается всеми производителями коммерческих реляционных СУБД.
SQL не является отдельным программным продуктом, подобным офисным приложениям, системам программирования или CASEсистемам, его нельзя приобрести в компьютерном магазине. SQL является важнейшим компонентом методологии и технологии реляционных баз данных, неотъемлемой частью реляционной СУБД. Без SQL немыслимы разработка и эксплуатация реляционных баз данных.
В составе СУБД SQL выполняет множество функций. Его можно использовать в интерактивном режиме по принципу «запрос-ответ». SQL является подъязыком баз данных в обстановке прикладной программы, составленной на языке программирования. SQL – это язык запросов в приложениях многопользовательской клиент-серверной системы. SQL – это язык администрирования баз данных. Любому профессионалу, является ли он квалифицированным пользователем базы данных или прикладным программистом или администратором баз данных, необходимо знать язык SQL. Таким образом, знание языка SQL является обязательным для специалиста в области разработки и сопровождения баз данных.
SQL создавался в середине 1970-х годов сотрудниками фирмы IBM как высокоуровневый декларативный язык, основанный на реляционном исчислении. Предложения SQL описывают данные, которые необходимо получить, а не определяют способ поиска результата. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. Исходная версия языка называлась SEQUEL (Structured English QUEry Language – английский структурированный язык запросов) ясно говорит о намерении его авторов создать язык, близкий к естественному. И это им удалось. Команды SQL выглядят как обычные предложения английского языка, что упрощает их изучение и понимание.
Итак, SQL достаточно легок и понятен для освоения.
SQL является реляционным языком. Его осмысленное изучение предполагает знакомство с реляционной моделью данных. Основные концепции реляционной модели включают определение структуры и типов данных, определение множества операций, допустимых над элементами структуры данных, и определение правил целостности данных, регулирующих допустимые отношения между элементами структуры данных. Вследствие популярности реляционной модели в публикациях, посвященных методологии проектирования баз данных, всегда можно найти подробное описание реляционной модели (например, в [1–5]). SQL всегда был и остается актуальной проблемой методологии проектирования баз данных. На сей счет также имеется множество публикаций, в том числе учебного характера, как в печатных изданиях [6–8], так и в электронных ресурсах [9, 10]. Таким образом, самостоятельное изучение SQL на основе обширного методического обеспечения – вполне реальное дело.
Возникнув как фирменный стандарт, SQL по факту приобрел статус международного языка. Его первая полноценная версия известна как стандарт ANSI SQL-89. Этот стандарт оказался далек от совершенства, имел чрезвычайно общий характер и допускал очень широкое толкование. Опыт использования SQL позволил дополнить первый стандарт новыми возможностями, необходимыми для реализации языка в составе коммерческих СУБД. На этой основе был разработан стандарт ANSI SQL-92, который принято считать истинно реляционным. После его принятия стало возможным говорить про стандартную среду SQL-ориентированной СУБД. В настоящее время этот стандарт поддерживается практически всеми современными реляционными СУБД. Хотя конкретные реализации, диалекты SQL, поддерживая стандарт в главном, отличаются от него, как правило, в сторону расширения. Начинающему пользователю SQL полезно знать возможности стандарта.
Для изучения языка SOL начинающему пользователю предлагается использовать его диалект Access SQL (Microsoft SQL Jet) в интерактивном режиме, свободном от проблем прикладного программирования и знания языков программирования. Выбор Access обусловлен, главным образом, доступностью и распространенностью этого популярного программного продукта.
Реляционная модель данных
Реляционная модель была предложена Э. Ф. Коддом в 1970 году [1] как средство структуризации данных, основанное на строгих математических принципах.
Что такое «модель данных» и в частности «реляционная модель данных»? Прежде чем давать определение понятию модели данных, отметим некоторые коллизии терминологического характера, связанные с термином «модель данных».
Дело в том, что понятие «модель данных» употребляется в двух разных контекстах, отличающихся той ролью, которую играет модель данных в моделировании [11].
Во-первых, модель данных рассматривается как модель предметной области, т. е. результат моделирования. И в ней должны быть учтены статические (структурные) и динамические (поведенческие) аспекты предметной области. При такой трактовке понятия «модель данных» объектом моделирования, строго говоря, являются не данные вообще, а конкретная база данных. В таком контексте правильнее говорить не о модели данных вообще, а о модели базы данных конкретной предметной области.
Во-вторых, модель данных часто рассматривается как совокупность инструментальных средств, с помощью которых происходит определение и разработка модели данных предметной области как результата моделирования. Определение модели данных в таком контексте выглядит так [2]:
модель данных – это совокупность допустимых структур данных и операций над ними, поддерживаемая компьютерной средой (в т. ч. СУБД), для определения логической структуры базы данных и динамического моделирования состояний предметной области.
В определении понятия модели данных используется термин «допустимые». Речь идет о том, что реальный мир и его отображение в компьютерной среде находятся под влиянием некоторых ограничений (ограничений целостности), которые либо присущи природе реальной действительности, либо связаны с отображением модельных представлений в компьютерной среде.
Итак, в определение модели данных [3] в инструментальном смысле входят:
· определение типа структуры данных;
· определение ограничений целостности, определяющих допустимые отношения между элементами структуры данного типа;
· определение множества операций над данными этого типа.
Это определение модели данных в полной мере применимо и к реляционной модели данных. Итак, термин «реляционная модель данных» употребляется как совокупность инструментальных средств.
Структура данных
Любые данные, используемые в моделировании, имеют свои типы данных. Какие типы данных поддерживает реляционная модель?
В первом приближении принято различать типы данных простые и структурированные [4].
Простые, или атомарные, типы данных не обладают внутренней структурой. Данные такого типа называют скалярными. К простым типам данных относятся, например, следующие типы:
· логический;
· строковый;
· численный.
Этот список можно расширить и уточнить, добавляя другие типы:
· целый;
· вещественный;
· дата;
· время;
· денежный;
· перечислимый;
· интервальный и т. д.
Структурированные типы данных предназначены для задания сложных структур данных. Структурированные типы данных конструируются из составляющих элементов, называемых компонентами, которые, в свою очередь, могут обладать структурой. В качестве структурированных типов данных особенно распространены следующие типы данных:
· массивы;
· записи (структуры).
Общим для структурированных типов данных является то, что они имеют внутреннюю структуру. При работе с массивами или записями можно манипулировать массивом или записью как с единым целым (создавать, удалять, копировать целые массивы или записи), так с и их компонентами. Для структурированных типов данных есть специальные функции – конструкторы типов, позволяющие создавать массивы или записи из элементов более простых типов.
Работая же с простыми типами данных, например с числовыми, мы манипулируем ими как неделимыми целыми объектами.
Так вот, реляционная модель требует, чтобы типы используемых данных были простыми. Но что значит «простые»?
Для реляционной модели данных тип используемых данных сам по себе не важен. Требование, чтобы тип данных был простым, нужно понимать так, что в реляционных операциях не должна учитываться внутренняя структура данных [4]. Конечно, должны быть описаны действия, которые можно производить с данными как с единым целым, например данные числового типа можно складывать, для строк возможна операция конкатенации и т. д.
В реляционной модели данных с понятием типа данных тесно связано понятие домена, которое можно считать уточнением типа данных:
домен – это семантическое понятие. Домен можно рассматривать как подмножество значений некоторого типа данных, имеющее определенный смысл.
Домен характеризуется следующими свойствами:
· имеет уникальное имя;
· определен на некотором простом (скалярном) типе данных или на другом домене;
· может иметь некоторое логическое условие, позволяющее описать подмножество данных, допустимых для данного домена;
· может быть задан перечислением множества допустимых элементов данных;
· несет определенную смысловую нагрузку.
Домен и тип данных – это разные понятия. Домен представляет собой подмножество допустимых элементов данных некоторого типа, имеющее семантически значимое имя. Отличие домена от подмножества данных некоторого типа состоит именно в том, что домен отражает семантику, определенную предметной областью. Может быть несколько доменов, совпадающих как подмножества, но несущих различный смысл. Например, на множестве неотрицательных целых чисел могут быть определены домены «табельный номер», «стаж», «отпуск», «возраст», но смысл этих доменов будет различным, и это будут различные домены.
Понятие домена помогает правильно моделировать предметную область, исключая некорректные сравнения семантически разнородных данных. Некорректно, с логической точки зрения, сравнивать значения из различных доменов, даже если они имеют одинаковый тип. В этом проявляется смысловое ограничение доменов.
Единственным средством структуризации данных в реляционной модели является отношение.
Отношение (по-английски relation, отсюда происходит название модели) – это множество со специфическими свойствами.
В теории множеств отношением R называется подмножество декартова произведения множеств Dj:
RНD1ґD2ґјґDn={бd1,d2,ј,dnс|d1ОD1Щd2ОD2ЩјЩdnОDn}
Отношение представляет собой множество n-арных кортежей типа бd,d,ј,dс (n – число множеств-сомножителей D). Кортежи 12nj образуются из элементов множеств Dj по одному из каждого в заданном порядке.
Пример декартова произведения множеств A = {a1, a2} и B = = {b1, b2, b3}:
AґB={бai,bjс|aiОAЩbОBj}=
={бa1,b1с,бa1,b2с,бa1,b3с,бa2,b1с,бa2,b2с,бa2,b3с}
В математике отношение – не более чем абстрактный объект. В моделировании данных отношение наполняется содержательным смыслом и применяется для определения объектов реальной действительности и связей между ними.
В теории данных отношение определено на доменах Dj. Домен представляет собой именованное множество элементов данных скалярного типа.
В моделировании данных домен играет роль области определения атрибутов Aj – спецификаторов свойств моделируемых объектов и связей между ними. Атрибутам как спецификаторам свойств сущностей или связей присваиваются семантически значимые имена, как правило, в форме существительного. Причем на одном домене могут быть определены несколько атрибутов, но любой атрибут может быть определен только на одном домене.
Если отношение моделирует тип объекта или тип связи, то его элементы – кортежи – представляют экземпляры объектов или связей. Наглядным образом отношения является реляционная таблица. Отношение, подобно таблице, содержит заголовок и тело. Заголовок отношения представлен конечным множеством атрибутов. Атрибуты Aj определены на соответствующих доменах Dj и в заголовке представлены своими содержательными именами.
Тело отношения содержит множество кортежей-строк. В каждом i-кортеже для каждого j-атрибута имеется одно единственное значение, принадлежащее j-домену.
Максимальное число строк-кортежей называется кардинальным числом (мощностью) отношения. Число столбцов-атрибутов называется степенью отношения.
Отношение, точнее, переменная-отношение, имеет имя, допустим R. Атрибуты, определенные на доменах, также имеют имена, например A1, A2, … An. Заголовок отношения иначе называется схемой отношения. Схема отношения задается именем отношения и именами атрибутов R(A1, A2, … An). Экземпляр отношения, или значение переменной-отношения, образует тело отношения (реляционную таблицу). Набор взаимосвязанных отношений называется реляционной базой данных. А набор заголовков (схем) отношений входящих в базу данных называется схемой реляционной базы данных.
Манипулируя реляционными таблицами, следует помнить, что таблица и отношение – не синонимы. Отношение – это множество со специфическими свойствами, а таблица – это наглядный образ отношения. Табличное представление реляционной базы данных будет корректно, если иметь в виду правила интерпретации элементов таблицы, задающие соответствие между реляционной и табличной терминологиями (табл. 1).
Таблица 1
Соотношение реляционной и табличной терминологии
Ограничения целостности
Целостность структуры данных является синонимом ее системности. Обеспечение целостности данных гарантирует их системную полноту, адекватность модели данных моделируемой предметной области.
Структура базы данных определяется не только составом образующих ее информационных элементов, но и характером связей между ними. Связи соответствуют зависимостям между компонентами предметной области. Всякие зависимости представляют собой ограничения на возможные отношения элементов системы.
Ограничения целостности представляют собой условия, которые определяют допустимые отношения между элементами структуры данных. Для конкретной модели данных эти условия выполняются или не выполняются. Средством спецификации ограничений целостности является язык математической логики.
Ограничения целостности данных принято классифицировать.
По происхождению ограничения целостности принято различать: · внутренние, обусловленные особенностью типа структуры данных, в частности отношения;
· семантические (явные), обусловленные смыслом, значением взаимосвязанных данных конкретной предметной области.
По способу контроля целостности данных, который осуществляет реляционная система (СУБД) ограничения целостности, принято различать: ·
безотлагательные, проверка которых осуществляется непосредственно в процессе манипулирования данными;
· отложенные, проверка которых совершается по завершении всех манипуляций со связанными таблицами.
Внутренние ограничения целостностиВнутренние ограничения целостности данных реляционной модели обусловлены свойствами отношения по определению как множества:
· у отношения не может быть одинаковых строк-кортежей;
· порядок следования кортежей значения не имеет;
· порядок следования атрибутов значения не имеет;
· все значения атрибутов атомарны (неделимы).
Уникальность строк-кортежей реляционной таблицы является следствием определения множества в математике. Действительно, тело отношения есть множество кортежей и, как всякое множество, не может содержать неразличимые элементы.
Неупорядоченность строк-кортежей также является следствием определения множества в математике. Тело отношения есть множество, а множество не упорядочено. Одно и то же отношение может быть представлено разными таблицами, отличающимися порядком следования строк. Иными словами, таблицы, отличающиеся только порядком следования строк, считаются эквивалентными.
Неупорядоченность атрибутов обусловлена тем обстоятельством, что каждый атрибут имеет уникальное имя в пределах отношения и порядок атрибутов не имеет значения. Одно и то же отношение может быть представлено разными таблицами, в которых столбцы идут в различном порядке. Иными словами, таблицы, отличающиеся только порядком следования столбцов, считаются эквивалентными. Условие атомарности атрибутов следует из определения реляционной модели. Атрибуты могут быть определены на простых типах данных (доменах), для которых в реляционных операциях не должна учитываться внутренняя структура данных.
Итак, из определения внутренних ограничений целостности следует, что две и более таблиц могут считаться эквивалентными при выполнении следующих условий:
· таблицы имеют одинаковое количество столбцов;
· таблицы содержат столбцы с одинаковыми наименованиями;
· столбцы с одинаковыми наименованиями содержат данные из одних и тех же доменов;
· таблицы имеют одинаковые строки с учетом того, что порядок столбцов может различаться.
Внутренние ограничения целостности являются безотлагательными. Их проверка реляционной СУБД выполняется автоматически.
Семантические ограничения целостностиСемантические ограничения целостности (или семантические условия) присущи самой предметной области и их учет основан на понимании смыслового содержания данных. Семантические ограничения целостности не выводятся. Это свойства данных, которые выполняются или не выполняются для рассматриваемого отношения элементов данных.
Семантические ограничения целостности для каждой предметной области будут свои, что представляет трудности для аналитика. Тем не менее классификация возможна и полезна. Семантические ограничения целостности различают:
· ограничения объектов;
· ограничения на ссылки (связи) между объектами.
В реляционном представлении ограничения целостности объектов реализуются в виде ограничений целостности доменов, атрибутов и отношений.
Ограничения ссылочной целостности или ограничения, основанные на связях между отношениями-объектами, проявляются как ограничения целостности реляционной базы данных в целом.
Ограничения целостности домена (атрибута)
Ограничениями целостности домена является определение множества элементов данных, которые образуют этот домен. В определение домена входит определение типа данных, образующих домен, а также множество допустимых значений элементов домена. Множество допустимых значений может быть задано либо перечислением (списком), либо при помощи порождающего условия, например:
· «пол» {мужской, женский};
· «фамилия» как множество строк символов длиной не более 20;
· «оценка» как множество целых чисел в диапазоне от 2 до 5 и т. д.
Поскольку сами домены никогда не обновляются в процессе функционирования базы данных, то ограничения целостности доменов не проверяются. Обновляются значения атрибутов, определенных на доменах. Поэтому проверяются ограничения целостности атрибутов на предмет соответствия типу данных или множеству допустимых значений, причем проверяются всегда и немедленно.
Ограничения целостности отношения
Ограничения целостности отношения базируются на понятиях функциональных зависимостей атрибутов, потенциальных ключей, неопределенных так называемых Null-значениях атрибутов и др.
Зависимости одних атрибутов от других являются очень распространенным типом ограничений. Особое значение имеют зависимости от так называемых потенциальных ключей. Строки-кортежи отношения соответствуют реальным экземплярам объектов, а реальные объекты различимы, идентифицируемы. Это значит, что среди атрибутов отношения всегда найдется такое их подмножество (в том числе хотя бы один или наоборот все), которое однозначно определяет любой другой атрибут отношения, а значит, и все отношение в целом. Такие комбинации атрибутов, которые, как говорят, функционально полно определяют другие атрибуты, а значит, и весь кортеж в целом, называются потенциальными ключами отношения.
Потенциальным ключом называется подмножество атрибутов, которое функционально полно определяет значение любого атрибута.
Термин «функциональная зависимость» означает однозначную зависимость от ключа. Термин «функционально полная зависимость» означает, что никакое подмножество ключа не может выступать в роли ключа. Среди потенциальных ключей выбирают по соображениям простоты манипулирования один первичный ключ, остальные ключи называются альтернативными.
Основными свойствами потенциального ключа являются:
· уникальность – не может быть в отношении двух и более кортежей с одинаковыми значениями ключа;
· неизбыточность – никакое подмножество ключа не может выступать в роли ключа;
· обязательность (определенность) – ни при каких условиях атрибуты ключа не могут принимать неопределенные (Null) значения.
Например, понятие «номер сотрудника» в роли потенциального первичного ключа как ограничение означает, что не может быть двух и более персон с одинаковыми учетными номерами.
Потенциальный ключ, состоящий из одного атрибута, например «номер сотрудника», называется простым. Потенциальный ключ, состоящий из нескольких атрибутов, например «серия паспорта» и «номер паспорта», называется составным. Атрибуты составного ключа могут быть неуникальными (допускаются дубли), но составной ключ в целом уникален всегда.
В качестве первичного ключа часто используется так называемый искусственный ключ, который никак не связан с содержанием данных. По существу это уникальный, неизменяемый идентификатор кортежа (порядковый номер строки реляционной таблицы). Преимущества искусственного ключа перед естественным проявляется в случае реструктуризации базы данных на основе связанных таблиц.
Искусственный ключ всегда бывает один.
Значение Null используется в реляционной модели при решении проблемы отсутствующей информации. Null – это не одно и то же, что пробелы или числовые нули. Значения Null могут быть как значения атрибутов, для которых данные неизвестны. Null – значение для заданного атрибута может быть разрешено или запрещено.
Поскольку потенциальные ключи фактически служат идентификаторами объектов предметной области, то значения этих идентификаторов не могут содержать неизвестные значения. В противном случае нельзя было бы определить, совпадают или нет два идентификатора. Отсюда следует правило целостности отношений: атрибуты, входящие в состав некоторого потенциального ключа, не могут принимать Null-значений.
Ограничения целостности отношений, как и ограничения целостности атрибутов, являются безотлагательными.
Ограничения ссылочной целостности
Бизнес-правила использования данных конкретной предметной области выражаются ограничениями ссылочной целостности. Последние контролируют корректность реляционной базы данных, образованной несколькими связанными отношениями (таблицами). Ограничения ссылочной целостности – это правила, контролирующие корректность связей между отношениями.
Связи между отношениями различают:
· по типу зависимости:
– категориальные, на основе абстракции обобщения;
– бинарные (в общем случае n-арные), на основе абстракции агрегации;
· по силе зависимости:
– неидентифицирующие;
– идентифицирующие.
По роли в образовании связи различают родительское отношение (parent) и отношение-потомок (child). Связь обычно имеет направление от родителя к потомку.
Связь между отношениями моделируется при помощи внешнего ключа.
Внешний ключ – это атрибут отношения-потомка, доставшийся ему по наследству от родительского отношения.
Внешний ключ отношения-потомка – это потенциальный (часто первичный) ключ родительского отношения, мигрировавший в отношение-потомок и там используемый для моделирования связи.
По существу, внешний ключ представляет собой ссылку на родительское отношение.
Таким образом, потенциальный ключ родительского отношения и внешний ключ отношения-потомка представляют собой атрибуты связи. Часто они имеют одинаковые имена, хотя совпадение имен необязательно. Важно, чтобы атрибуты связи были определены на одном и том же или совместимых доменах.
Анализ структуры данных ведется на уровне схем отношений, при этом фактическое наполнение реляционных таблиц значения не имеет.
Бинарная связь со степенью «один ко многим» между родительским отношением, например, «Отдел» и отношением-потомком «Сотрудник» (рис. 1) называется неидентифицирующей, если кортежи потомка идентифицируются его собственным первичным ключом «номер сотрудника», а не ключом связи с родительским отношением «номер отдела». При этом внешний ключ отношения-потомка «номер отдела» не входит в состав первичного ключа «Сотрудник» и не используется для идентификации его кортежей, а используется только для моделирования связи.
Рис. 1. Неидентифицирующая связь
Бинарная связь со степенью «один ко многим» между родительским отношением, например, «Проект» и отношением-потомком «Задание» (рис. 2) называется идентифицирующей, если кортежи потомка идентифицируются не только его собственным первичным ключом «номер задания», но и ключом связи с родительским отношением «номер проекта». При этом внешний ключ отношения-потомка «номер проекта» входит в состав первичного ключа «Задание» и используется не только для моделирования связи с родительским отношением, но и для идентификации его кортежей.
Рис. 2. Идентифицирующая связь
Категориальная связь со степенью «один к одному» на основе обобщения (связь с семантикой «есть» (is a)): «Сотрудник есть Штатный», «Сотрудник есть Совместитель», «Сотрудник есть Консультант» – осуществляется по атрибуту «номер сотрудника». Обобщающее отношение «Сотрудник» объединяет общие атрибуты, которые наследуются категориями.
Категории «Штатный», «Совместитель», «Консультант» содержат отличительные характеристики – атрибуты.
Категориальная связь в реляционном представлении моделируется при помощи трех (в данном случае) идентифицирующих связей (рис. 3). При этом внешний ключ каждого отношения-потомка «номер сотрудника» играет роль первичного ключа и используется не только для моделирования связи с родительским отношением, но и для идентификации кортежей отношений потомков.
Бинарные связи «многие ко многим» (n-арные связи в общем случае) моделируются при помощи дополнительного ассоциативного отношения. Отношение «Исполнитель проекта» представляет связь между отношениями «Сотрудник» и «Проект» (рис. 4).
Ассоциативное отношение-потомок «Исполнитель проекта» имеет двух родителей и связано с ними идентифицирующими связями, а в качестве первичного ключа имеет составной ключ, построенный из внешних ключей.
Ограничения ссылочной целостности – это ограничения на выполнение корректирующих операций вставки, обновления и удаления данных в связанных отношениях (таблицах). Ссылочная целостность означает одно из двух: · реляционная база данных не должна содержать несогласованных значений внешних ключей, для которых не существует соответствующего значения первичного ключа родительского отношения;
· значение внешнего ключа может быть неопределенным (т. е. ни на что не указывать).
Рис. 3. Категориальная связь
Рис. 4. Связь «многие ко многим»
Реакция на выполнение корректирующих операций над кортежами связанных отношений зависит от типа операции (вставка, обновление или удаление) и от типа связи (идентифицирующая, неидентифицирующая или категориальная) и может осуществляться в виде:
· запрета;
· каскадирования;
· установки в Null.
Для родительского отношения возможны следующие результаты корректирующих операций: · при вставке кортежа в родительское отношение возникает новое значение потенциального ключа. Так как допустимо существование кортежей в родительском отношении, на которые нет ссылок из отношения-потомка, то вставка кортежа в родительском отношении не нарушает ссылочной целостности;
· при обновлении кортежа в родительском отношении может измениться значение потенциального ключа. Если есть кортежи в отношении-потомке, ссылающиеся на обновляемый кортеж, то значения их внешних ключей станут некорректными. Обновление кортежа в родительском отношении может привести к нарушению ссылочной целостности, если это обновление затрагивает значение потенциального ключа;
· при удалении кортежа в родительском отношении удаляется значение потенциального ключа. Если есть кортежи в отношении-потомке, ссылающиеся на удаляемый кортеж, то значения их внешних ключей станут некорректными. Удаление кортежей в родительском отношении может привести к нарушению ссылочной целостности.
Для отношения-потомка возможны следующие результаты корректирующих операций: · нельзя вставить кортеж в отношение-потомок, если вставляемое значение внешнего ключа некорректно. Вставка кортежа в отношение-потомок может привести к нарушению ссылочной целостности;
· при обновлении кортежа в отношении-потомке есть возможность некорректно изменить значение внешнего ключа. Обновление кортежа в отношении-потомке может привести к нарушению ссылочной целостности;
· удаление кортежа в отношении-потомке при условии, что оно не является родителем в другой связи, выполняется без проблем. Удаление кортежа в отношении-потомке не нарушает ссылочную целостность.
Итак, к нарушению ссылочной целостности могут привести:
· обновление кортежа в родительском отношении;
· удаление кортежа в родительском отношении;
· вставка кортежа в отношение-потомок;
· обновление кортежа в отношении-потомке.
Выбор адекватного способа поддержания целостности при выполнении операций манипулирования данными определяется семантикой связей, бизнес-правилами предметной области.
При обновлении кортежа в родительском отношении возможны: · запрет – не разрешается обновление первичного ключа в кортеже, если имеется хотя бы один кортеж в отношении-потомке, ссылающийся на обновляемый кортеж;
· каскадирование – разрешается изменять значение первичного ключа в кортеже родительского отношения, если в отношении-потомке есть ссылающиеся на него кортежи. При этом будут изменены «по каскаду» значения внешних ключей во всех кортежах отношений-потомков, ссылающихся на обновляемый кортеж;
· установка в Null – актуальна для неидентифицирующих связей, когда внешний ключ отношения-потомка является необязательным атрибутом и может быть определен вне зависимости от значения первичного ключа соответствующего кортежа родительского отношения. В случае обновления первичного ключа в кортеже родительского отношения внешний ключ кортежей отношения-потомка может быть установлен в Null.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?