Файл: Первый вопрос Иерархические базы данных.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 29.10.2023

Просмотров: 305

Скачиваний: 6

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Первый вопрос

  1. Иерархические базы данных

Иерархическая модель базы данных — это модель баз данных, в которой данные организованы в древовидную (иерархическую) структуру. Данные хранятся в виде записей, соединенных между собой ссылками (отношением предок-потомок).

Особенности:

Имеется один главный объект (корневой узел) и остальные – подчиненные объекты, находящиеся на разной уровни иерархии.

Связи между объектами одного уровня не допускаются.

Каждый объект – потомок связан только с одним объектом-предком. Предок может иметь несколько потомков.



  1. Сетевые базы данных

Сетевая модель баз данных — это модель баз данных, являющаяся расширением иерархического подхода.

Главной особенностью является то, что потомки могут иметь несколько предков.



  1. Что будет нарушать ссылочную целостность базы данных?

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

Ссылочную целостность можно нарушить при выполнении операций, которые изменяют состояние БД. К таким операциям относится удаление, обновление и вставка кортежей (записей) в отношениях (таблицах).

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

При обновлении

Если изменяется первичный ключ в родителе и есть связанные кортежи в дочернем, то операция должна закончиться ошибкой

Если изменяется внешний ключ в дочернем, то новый внешний ключ должен ссылаться на существующий картеж, иначе ошибка.

При удалении связанных кортежей, то возможны 3 варианта событий

Запрет – удаления нет и будет ошибка

Каскадное удаление – удаление кортежа и всех связанных с ним картежей


Присвоить NULL – удаление кортежа в родителе и присвоение связанным с ним до этого значение NULL во внешний ключ

Правило RESTRICT (по умолчанию) – запрещает удаление (обновление первичного ключа) записей из таблицы предка, если запись имеет потомков. Обеспечивает ссылочную целостность

Удаление связанных записей может происходить при следующих правилах:

Правило CASCADE – при удалении (изменении первичного ключа) записи предка все записи потомки также удаляются (также изменяются). Обеспечивает ссылочную целостность

Правило SET NULL - при удалении записи предка внешний ключ у записей потомков устанавливается в NULL. Слабо обеспечивает ссылочную целостность

Правило SET DEFAULT - при удалении записи предка внешний ключ у записей потомков устанавливается в DEFAULT. Слабо обеспечивает ссылочную целостность

Правило NONE - при удалении записи предка внешний ключ у записей потомков сохраняется. Не обеспечивает ссылочную целостность

  1. Таблица заказов имеет поле с именем customer_id. Данный клиент может в течение времени сделать любое число заказов, каждый из которых вводится как строка в таблицу заказов. Каждое значение customer_id в таблице заказов отвечает одному значению customer_id в таблице клиентов. Какой тип связи описывает эту ситуацию?

Так как клиент может сделать любое число заказов, то customer_id в таблице заказы может иметь неуникальные значения. А в таблице клиенты customer_id имеет ункальные значения. То тип связи для таблиц клиенты и заказы один ко многим.

Взаимосвязи между отношениями позволяют связать по некоторому логическому условию (совпадение значение в полях) данные из одного отношения с данными другое отношения

1:m (один ко многим или много к одному) возникает между первичным ключом и полем, которое не имеет ограничение уникальности.

1:1 (один к одному) возникает между двумя уникальными полями. Пример: разделить одну таблицу на несколько таблиц (чтобы скрыть информацию)

m:m (много ко многому) возникает между двумя не уникальными полями. Решается создаем промежуточной таблицей со связями один ко многим. Некоторые СУБД могут самостоятельно решать эту проблему созданием служебной таблицы.



  1. Какой тип целостности данных гарантирует, чтобы данные, вводимые в некоторый столбец, принадлежали заданному набору или диапазону значений?


Доменная целостность. (Условие назначения. Ограничения домена)

Доменная целостность - достоверность значений атрибута, или в конкретном столбце. Она поддерживается в соответствии с указанием типа данных, формата, правил и ограничений CHECK, а также ограничения на диапазон возможных значений, задаваемого с помощью FOREIGN KEY (внешний ключ), DEFAULT (значение по умолчанию), определений NOT NULL (недопустимость значения NULL).

Доп инфа

Целостность данных - устойчивость хранимых данных к разрушению и уничтожению, связанных с неисправностями технических средств, системными ошибками и ошибочными действиями пользователей. Так поддерживает и обеспечивает точность и согласованность данных на протяжении всего их жизненного цикла. Она предполагает:

  • отсутствие неточно введенных данных или двух одинаковых записей об одном и том же факте;

  • защиту от ошибок при обновлении БД;

  • невозможность удаления (или каскадное удаление) связанных данных разных таблиц;

  • неискажение данных при работе в многопользовательском режиме и в распределенных базах данных;

  • сохранность данных при сбоях техники (восстановление данных).

Типы целостности

Сущностная целостность (Целостность таблицы). Первичный ключ содержит только уникальные значения. Ограничения уникальности к обычным полям. То есть каждый картеж (запись) должен быть уникален

Доменная целостность

Ссылочная целостность - наличие пары внешнего ключа и первичного ключа

Обязательное наличие данных. Ограничение NOT NULL

В случае нарушения этих условий какие либо операции отменяются

  1. Какой тип целостности данных обеспечивается уникальным индексом и недопустимостью NULL-значений для поля первичного ключа?

Сущностная целостность (Целостность таблицы) (PRIMARY KEY) - целостность на уровне сущности означает обеспечение уникальности кортежа сущности, т.е., записи в конкретной таблице.

Она обеспечивается указанием ограничений целостности PRIMARY KEY или UNIQUE в SQL, или указанием первичного ключа таблицы.

  1. Какое из утверждений справедливо относительно первичного и внешнего ключей?

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

Внешний ключ – ключ, который обеспечивает ссылочную целостность между таблицами.


В отличие от первичных ключей внешние ключи могут содержать повторяющиеся значения и NULL значения, индексы не создается автоматически. Внешних ключей может быть несколько.

Внешний и первичный ключ может быть составным (состоять из нескольких полей) и простым (состоять из одного поля)

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

Поля первичного ключа – покупатель из таблицы покупателей. Внешний ключ – покупатель из таблицы заказов.

  1. Реляционная модель данных включает несколько типов целостности данных. Целостность какого типа обеспечивается использованием первичного ключа?

Ответ в вопросе 6

Доп инфа вопрос 5

  1. Что справедливо относительно сериализации транзакций?

Сериализация (Serializable - упорядочивание) транзакций – последовательное выполнение транзакций. Это механизм выполнения транзакций по такому плану, когда результат совместного выполнения транзакций эквивалентен результату их последовательного выполнения.

В сериализации возникают следующие проблемы:

  1. Транзакция 2 пытается изменить объект, измененный не закончившейся транзакции (WW конфликт)



  1. Транзакция 2 пытается изменить объект, прочитанный незаконченной транзакцией (RW)



  1. Транзакция 2 пытается читать объект, измененный незаконченной транзакцией (WR)

Для обеспечения сериализации транзакций применяются:

Уровень изоляции Serializable - все операции текущей транзакции могут видеть только строки, которые были закоммичены только до первой операции в текущей транзакции.

Методы «захвата» и «освобождения» объекта. Транзакция захватывает объект – это приводит к его блокировке для другой транзакции. И освобождает его только при своем завершении. При этом совместимы только захваты несколькими транзакциями на чтение объекта.

Доп инфа

Транзакции — это группа операций на чтение/ записи, которые выполняются только если все операции из группы успешно выполнены.

  1. Что такое тупиковая ситуация при параллельном выполнении транзакций?


Тупиковая ситуация возникает тогда, когда две или более транзакции одновременно находятся в состоянии ожидания, причем для продолжения работы каждая из транзакций ожидает прекращения выполнения другой транзакции.

Тупиковые ситуации возникает при использовании блокировок. Блокировки решают проблемы параллельного выполнения транзакции.

Если транзакции друг на друга наложат блокировки, то успешно ни одна их них не будет завершена. Чтобы решить именно эту проблему необходимо выбрать одну транзакцию и отменить ее, тем самым пожертвовать ей.

  1. Что произойдет, если транзакция А накладывает на запись S-блокировку, а транзакция В пытается обновить ту же запись (используется протокол доступа к данным)?

Для транзакции В запись доступна только для чтения, поэтому транзакция В перейдет в режим ожидания

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

В системе поддерживается два типа блокировок: блокировка без взаимного доступа (монопольная блокировка), называемая Х-блокировкой и блокировка с взаимным доступом, называемая S -блокировкой.

Х блокировка – объекты недоступны для других транзакций до момента окончания работы данной транзакции. Используется для занесения, удаления и модификации

S блокировка – объекты не изменяются при выполнении транзакции и доступны другим транзакциям только для чтения. Используется для чтения



Если блокировка объекта транзакцией B отвергается оттого, что объект уже заблокирован транзакцией A, то транзакция B переходит в состояние ожидания. Транзакция B будет находиться в состоянии ожидания до тех пор, пока транзакция A не снимет блокировку объекта.

  1. Пусть первая транзакция накладывает Х-блокировку на некоторую запись. Что справедливо относительно другой транзакции, обрабатывающей ту же самую запись?