Ерл. 1 Пул вопросов Иерархические базы данных
Скачать 0.66 Mb.
|
Внешний ключ: для обеспечения ссылочной целостности в дочерней таблице создается внешний ключ. Во внешний ключ входят поля связи дочерней таблицы. Для связей типа "один-ко-многим" внешний ключ по составу полей должен совпадать с первичным ключом родительской таблицы. Учебник: Столбец одной таблицы, значения в котором совпадают со значениями столбца, являющегося первичным ключом другой таблицы, называется внешним (вторичным) ключом. На 0 столбец ID_OFC представляет собой внешний ключ для таблицы OFFISY. Значения, содержащиеся в этом столбце, представляют собой идентификаторы офисов. Эти значения соответствуют значениям в столбце ID_OFC, который является первичным ключом таблицы OFFISY. Совокупно первичный и внешний ключи создают между таблицами такое же отношение предок/потомок, как и в иерархической базе данных. Внешний ключ, как и первичный, тоже может быть составным (состоящим из нескольких столбцов). На практике внешний ключ всегда будет составным, если он ссылается на составной первичный ключ в другой таблице. Очевидно, что количество столбцов и их типы данных в первичном и внешнем ключах совпадают. База данных Продажи содержит таблицу покупателей и таблицу заказов. Для каждого заказа имеется один и только один покупатель, а для каждого покупателя может существовать любое число заказов (в том числе и нулевое). Как следует выбрать поля первичного и внешнего ключа этой базы данных? Первичный ключ - ID покупателя, внешний ключ в таблице заказов поле "ID покупателя". Первичный, вторичный и внешний ключи могут быть как простыми так и составными (сложными). Простые ключи – это ключи, которые содержат только одно поле (один атрибут). Составные (сложные) ключи – это ключи, которые содержат несколько полей (атрибутов). По ограничению целостности данных разделяют: · Первичный ключ – служит как ограничение целостности в рамках одной таблицы для однозначной идентификации, конкретно поле первичного ключа не может повторятся или быть пустым. · Внешний ключ(вторичный) – служит как ограничение целостности связей нескольких таблиц, конкретно подчиненная таблица не может ссылаться на несуществующие записи главной таблицы(что позволяет строить целостные модели данных). Реляционная модель данных включает несколько типов целостности данных. Целостность какого типа обеспечивается использованием первичного ключа? Ответ: Ссылочная целостность. Ссылочная целостность обеспечивается системой первичных и внешних ключей. Этими средствами можно гарантировать, что у нас не будет ссылок на несуществующие объекты таблицы. Доп. Ответ: Первичный ключ (primary key, PK) - это один из потенциальных ключей отношения, выбранный в качестве основного ключа. Внешний ключ (foreign key, FK) - это ключ, объявленный в базовом отношении, который при этом ссылается на первичный того же самого или какого-то другого базового отношения. Также существуют такие типы целостности данных как: Доменная целостность - отвечает за то, чтобы в соответствующих полях базы данных были соответствующие значения. В базах данных такая целостность зачастую обеспечивается запретом пустых значений (NOT NULL), триггерами, ключами. Целостность сущностей (Заключается в том, что любое отношение должно обладать первичным ключом или проверкой уникальности. Иными словами, главная задача целостности сущностей — сделать так, чтобы данные об одном объекте не попали в базу данных дважды, так как при несоблюдении данного ограничения в базе данных может храниться противоречивая информация об одном объекте). Что справедливо относительно сериализации транзакций? Ответ: Уровень Serializable обеспечивает самую строгую изоляцию транзакций. На этом уровне моделируется последовательное выполнение всех зафиксированных транзакций, как если бы транзакции выполнялись одна за другой, последовательно, а не параллельно. Однако, как и на уровне Repeatable Read, на этом уровне приложения должны быть готовы повторять транзакции из-за сбоев сериализации. Фактически этот режим изоляции работает так же, как и Repeatable Read, только он дополнительно отслеживает условия, при которых результат параллельно выполняемых сериализуемых транзакций может не согласовываться с результатом этих же транзакций, выполняемых по очереди. Это отслеживание не привносит дополнительных препятствий для выполнения, кроме тех, что присущи режиму Repeatable Read, но тем не менее создаёт некоторую добавочную нагрузку, а при выявлении исключительных условий регистрируется аномалия сериализации и происходит сбой сериализации. Доп. Ответ: - Что такое тупиковая ситуация при параллельном выполнении транзакций? Ответ: Это ситуация, когда ни одна из транзакций не может продолжить своё выполнение, ожидая пока одна из них не закончит свое выполнение. Доп. Ответ:P.s. Хуй знает с какого перепуга это на экз выносят, но в учебнике нет этого вот вообще. В инете вполне себе нормальный ответ. Собственно вот: 3 Проблемы при параллельных транзакциях: Проблема потери результатов обновления - возникает тогда, когда две транзакции записывают данные в один и тот же кортеж и фиксируют значения; проблема незафиксированной зависимости - проблема потери результатов обновления возникает тогда, когда две транзакции записывают данные в один и тот же кортеж и фиксируют значения проблема несовместимого анализа - транзакция А дважды читает один и тот же кортеж. Между этими чтениями выполняется транзакция В, которая изменяет значения в кортеже. Транзакция – это команда или блок команд (инструкций), которые успешно завершаются как единое целое, при этом в базе данных все внесенные изменения фиксируются на постоянной основе или отменяются, т.е. все изменения, внесенные любой командой, входящей в транзакцию, будут отменены. Метод блокировки - заключается в том, что, в случае, когда для выполнения некоторой транзакции необходимо, чтобы некоторый объект не изменялся непредсказуемо и без ведома этой транзакции, такой объект блокируется. X-блокировка — без взаимного доступа (блокировка записи), данный режим блокировки предполагает монопольный захват объекта и требуется для выполнения операций занесения, удаления и модификации. Объекты, заблокированные данным типом блокировки, фактически остаются в монопольном режиме обработки и недоступны для других транзакций до момента окончания работы данной транзакции. S-блокировка (блокировка чтения) со взаимным доступом Объекты, заблокированные таким образом, не изменяются в ходе выполнения транзакции и доступны другим транзакциям также, но только в режиме чтения. Что произойдет, если транзакция А накладывает на запись S-блокировку, а транзакция В пытается обновить ту же запись (используется протокол доступа к данным)? Ответ: Запись не будет обновлена, так как для обновления записи транзакция В должна наложить Х-блокировку, но это не удастся сделать, так как транзакция А уже наложила S-блокировку. В результате возникнет тупиковая ситуация. Доп. Ответ: Тупиковая ситуация - это ситуация, когда ни одна из транзакций не может продолжить своё выполнение, ожидая пока одна из них не закончит свое выполнение. Метод блокировки - заключается в том, что, в случае, когда для выполнения некоторой транзакции необходимо, чтобы некоторый объект не изменялся непредсказуемо и без ведома этой транзакции, такой объект блокируется. X-блокировка — без взаимного доступа (блокировка записи), данный режим блокировки предполагает монопольный захват объекта и требуется для выполнения операций занесения, удаления и модификации. Объекты, заблокированные данным типом блокировки, фактически остаются в монопольном режиме обработки и недоступны для других транзакций до момента окончания работы данной транзакции. S-блокировка (блокировка чтения) со взаимным доступом, Объекты, заблокированные таким образом, не изменяются в ходе выполнения транзакции и доступны другим транзакциям также, но только в режиме чтения. Пусть первая транзакция накладывает Х-блокировку на некоторую запись. Что справедливо относительно другой транзакции, обрабатывающей ту же самую запись? Ответ: До того момента, как первая транзакция не закончит работу, другим транзакциям будет недоступна эта запись. Доп. Ответ: X-блокировка — без взаимного доступа (блокировка записи), данный режим блокировки предполагает монопольный захват объекта и требуется для выполнения операций занесения, удаления и модификации. Объекты, заблокированные данным типом блокировки, фактически остаются в монопольном режиме обработки и недоступны для других транзакций до момента окончания работы данной транзакции. S-блокировка (блокировка чтения) со взаимным доступом, Объекты, заблокированные таким образом, не изменяются в ходе выполнения транзакции и доступны другим транзакциям также, но только в режиме чтения. Пусть первая транзакция накладывает S-блокировку на некоторую запись. Что справедливо относительно другой транзакции, обрабатывающей ту же самую запись? Ответ: Другая транзакция сможет считать запись, но не сможет вносить изменения в нее. Доп. Ответ: X-блокировка — без взаимного доступа (блокировка записи), данный режим блокировки предполагает монопольный захват объекта и требуется для выполнения операций занесения, удаления и модификации. Объекты, заблокированные данным типом блокировки, фактически остаются в монопольном режиме обработки и недоступны для других транзакций до момента окончания работы данной транзакции. S-блокировка (блокировка чтения) со взаимным доступом, Объекты, заблокированные таким образом, не изменяются в ходе выполнения транзакции и доступны другим транзакциям также, но только в режиме чтения. Как называется ситуация, когда с помощью некоторой транзакции осуществляется извлечение записей, в то время как другая успевает обновить какие-либо из считанных первой транзакцией данные и завершиться до окончания первой транзакции? Ответ: Это явление называется проблемой несовместимого анализа Доп. Ответ: Можно решить с помощью метода блокировки. Для этого транзакция А накладывает S-блокировку на запись, а трансляция В пытается наложить Х-блокировку, но не сможет сделать это и не будет выполняться пока не снимется S-блокировка. Таким образом, Транзакция В не сможет изменить данные и транзакция А оба раза считает одни и те же данные. Как называется ситуация, когда с помощью некоторой транзакции осуществляется извлечение (обновление) записи, которая в данный момент обновляется другой транзакцией, но это обновление еще не закончено? Ответ: Это явление называется проблемой незафиксированной зависимости Доп. Ответ: Можно решить с помощью метода блокировки. Как называется ситуация, когда при одновременном выполнении двух транзакций по модификации одних и тех же данных результат работы одной из них аннулируется другой транзакцией? Ответ: Это явление называется проблемой потери результатов. Доп. Ответ: Можно решить с помощью метода блокировки. Обе транзакции успешно накладывают S-блокировку и получают доступ для извлечения кортежа p. Для того чтобы осуществить обновление кортежа p, транзакция B пытается наложить на него X-блокировку. Эта блокировка отвергается, так как кортеж p уже заблокирован S-блокировкой, осуществленной транзакцией A. Транзакция B переходит в состояние ожидания до тех пор, пока транзакция В не освободит объект. Какой смысл несет термин "параллелизм" при функционировании СУБД? Ответ: Параллелизм – возможность параллельной обработки в СУБД многих параллельных транзакций к одним и тем же данным в одно и то же время. СУБД должно осуществлять правильное восстановление данных при отмене транзакций или в случае системного сбоя и гарантировать, что пользователи при параллельной работе с данными мешать друг другу не будут. Основные проблемы, возникающие при параллельной обработке транзакций: потеря результатов обновления, незафиксированные зависимости, несогласованные данные, строки-призраки. В чем состоит требование ссылочной целостности в реляционных СУБД? Ответ: Термин целостность относится к правильности и полноте информации, содержащейся в базе данных. При изменении содержимого базы данных с помощью инструкций INSERT, DELETE или UPDATE может произойти нарушение целостности содержащихся в ней данных – Ссылочная целостность. В реляционной базе данных каждая строка таблицы-потомка с помощью внешнего ключа связана со строкой таблицы-предка, содержащей первичный ключ, значение которого равно значению внешнего ключа. Если это условие не соблюдается, то речь идет о нарушении ссылочной целостности. Современные СУБД поддерживают ссылочную целостность автоматически В чем состоит требование категорийной целостности в реляционной СУБД? Ответ: Кратко правило категорийной целостности можно сформулировать следующим образом: никакой атрибут первичного ключа строки не может быть пустым. – Обязательное наличие данных. Некоторые столбцы в базе данных должны содержать значения в каждой строке; строки в таких столбцах не могут включать псевдозначения NULL или не содержать никакого значения. Например, в учебной базе данных для каждого заказа должен обязательно существовать клиент, сделавший этот заказ. Поэтому столбец ID_CLN в таблице ZAKAZY является обязательным. Для реализации этого условия необходимо указать СУБД, что запись значения NULL в такие столбцы недопустима; Транзакция — это набор последовательных операций с базой данных, соединенных в одну логическую единицу. Виды транзакций Транзакции делят на два вида: Неявные транзакции, которые предусмотрены на уровне базы данных. Например, БД задает отдельную инструкцию INSERT, UPDATE или DELETE как единицу транзакции. Явные транзакции — их начало и конец явно обозначаются такими инструкциями, как BEGIN TRANSACTION, COMMIT или ROLLBACK. Свойства транзакции Выделяют так называемые «магические» свойства транзакции, которые описываются аббревиатурой «ACID». Каждая буква аббревиатуры означает одно из свойств, о которых мы поговорим ниже. Как называется свойство транзакции, требующее, чтобы результат завершенной транзакции не должен быть утрачен в результате сбоя системы, даже если этот сбой происходит немедленно после завершения транзакции? Ответ: Durability или долговечность (D) Долговечность означает, что если транзакция выполнена, и даже если в следующий момент произойдет сбой в системе, результат сохранится. Свойство долговечности обеспечивает одно из наиболее важных требований баз данных: сохраняемость данных. Иными словами, эффект транзакции должен оставаться действенным даже в случае системной ошибки. По этой причине, если в процессе выполнения транзакции происходит системная ошибка, то осуществляется откат для всех выполненных инструкций этой транзакции. Как называется свойство транзакции, требующее, чтобы параллельное выполнение двух транзакций одновременно не должно привести к результату, которого не было бы, если бы они выполнялись последовательно? Ответ: Isolation или изоляция (I) Свойство изолированности отделяет все параллельные транзакции друг от друга. Иными словами, активная транзакция не может видеть модификации данных в параллельной или незавершенной транзакции. Это означает, что для обеспечения изоляции для некоторых транзакций может потребоваться выполнить откат. https://habr.com/ru/company/simbirsoft/blog/572540/ Как называется свойство транзакции, требующее, чтобы после завершения транзакции БД отвечала всем возможным ожиданиям? Ответ: Consistency или согласованность (C) Согласованность означает, что если до выполнения транзакции данные в БД находятся в неком состоянии «good state»*, то они будут в этом же состоянии и после выполнения транзакции. *Иными словами, выполняется некий набор условий. Свойство согласованности обеспечивает, что в результате выполнения транзакции база данных не будет содержать несогласованных данных. Иными словами, выполняемые транзакцией трансформации данных переводят базу данных из одного согласованного состояния в другое. Как называется свойство транзакции, требующее, чтобы были выполнены все транзакции или не была выполнена ни одна из них? Ответ: Atomicity или атомарность (A) неделимость: либо будут выполнены все действия транзакции, либо никакие. Свойство атомарности обеспечивает неделимость набора инструкций, который модифицирует данные в базе данных и является частью транзакции. Это означает, что или выполняются все изменения данных в транзакции, или в случае любой ошибки осуществляется откат всех выполненных изменений. Что такое SQL? |