Базы Данных, любимые вопросы лектора

Материал из eSyr's wiki.

Перейти к: навигация, поиск

Содержание

[править] Вопросы

  • Реляционная модель данных / ограничения реляционной модели / ограничения сущности: почему должен существовать хотя бы один возможный ключ? (Базы Данных, 07 лекция (от 28 сентября))
    • Ограничения сущности. Для каждой переменной отношения должен существовать хотя бы один возможный ключ и ни в одном значении соотв отношения, ни в одном кортеже этот ключ не должен содержать неопределенного отношения.
  • Придумать хорошую хэш-функцию (Базы Данных, 08 лекция (от 29 сентября))
    • Наиболее часто используемая функция — получающая от деления на простое число.
  • Какова последовательность действий, эквивалентная Theta-соединению? (Базы Данных, 08 лекция (от 29 сентября))
    • Rename
    • Times
    • Where
    • Project
  • Как будет звучать лемма, если есть FR A -> В? (Базы Данных, 15 лекция (от 26 октября))
    • Лема Фейджина. B отн r{A, B, C} выполн MVD->->B <=> выполн MVD A->->C
  • Есть r(A1,...An), А1 – возможный ключ. Есть ли здесь зависимость проекций соединений? Если да, то какая? (Базы Данных, 16 лекция (от 27 октября))
    • Есть, ({A1, A2}, {A1, A3}, {A1, An}) – доказывается по теореме Хитта, так как всё без потерь. Оно сколько угодно декомпозируемое, и его декомпозировать не надо, так как оно и так хорошее.
  • Нетривиальные вещи – что такое связь, когда добавляют связь один к одному и n к m. Оба вопроса возн на экзамене. (Базы Данных, 18 лекция (от 03 ноября))
    • Самый дурацкий ответ – и там и там первичный ключ. Откуда тогда возьмётся связь?
    • На самом деле: Если оперд 1 к 1, то надо выбрать, что где будет, в одной таблице объявл первич ключ, в другой внешний ключ, но сам он должен быть уникальным идентификатором первой сущности. То есть это комбинация внешнего и возможного ключа. Если на одном конце связь необяз, то на этом конце надо определить возм ключ, который обладает свойствами внешнего по скуэлоским понятиям.
    • Н к М – всегда очень сильно показывает ответ на экзамене, готовился ли человек к экзамену вообще, читал ли он лекции лектора, ходил ли он на лекции.
    • Странные ответы: на двух концах внешние ключи. Куда ссылаются? На первичные ключи. А откуда н к м?
    • Очень хороший пример – когда бригада милиционеров ловит банду бандитов.
    • Как это делается: Если у нас два типа сущностей: милиционеры и бандиты, у них есть связь. Предположим, что есть уник ИД милиционера (МИД), уникальный идентификатор бандита (БИД). Заводится таблица, один столбец МИД, другой – БИД, и в ней выписываются все пары МИДов и БИДов, эта таблица называется таблицей связи, и лектор не слышал других способов. На самом деле, один парень смог придумать на экзамене страшно сложный механизм, неправильность которого лектор доказать не смог.
    • На самом деле, в СКЛ с любой реализации, если в таблице опред возм ключ, то создается индекс, если внешний ключ – то индекс на внешнем ключе. В некоторых БД все индексы создавались явно. И если такие вещи не делаются, их надо проделать.
  • Что нужно иметь по минимуму, чтобы было позднее связывание? (Базы Данных, 19 лекция (от 09 ноября))
    • Отвечают, что нужен механизм вирт функций. Это соверш неправильно.
    • А нужно в рантайме по ссылке на объект узнавать, какого он точно класса.
  • Чем отличается OCL от языка исчисления кортежей. (Базы Данных, 20 лекция (от 16 ноября))
    • Разница одна. Здесь (в OCL) есть фактически одна переменная. Что мы не можем сделать с помощью этого языка – мы не можем сделать соединение, можем сделать только полусоединение.
  • Вопрос, как он добирается до таблицы SYSTABLES, чтобы узнать, где находится таблицы SYSTABLES. (Базы Данных, 22 лекция (от 23 ноября))
    • Идея первого знакомства – любой приличный человек для того, чтобы познакомиться с человеком, должен иметь общего знакомого. Тут хороший знакомый – системные таблицы. И у них можно сделать предопр идентификатор: у SYSTABLES – 1, SYSCOLUMNS – 2, и т д.
  • В систем Р для этого делали две динамических области. Как делать менеджер памяти? (Базы Данных, 22 лекция (от 23 ноября))
    • Очень просто – с двух строн, одну сверху, другую снизу. Как только сошлись – память в блоке кончилась.
  • Почему двухфазный протокол блокировки двухфазный? (Базы Данных, 25 лекция (от 07 декабря))
    • Одна фаза трабочая – от начала транзакции, до rollback-commit, на которой накапливаются блокировки. Выполняется операция коммит, и все блокировки освобождаются. Ага, двухфазный, потому что две фазы. Думаем люди, неправильный ответ.
  • Есть двухфазный протокол блокировки. Предположим, что выполняется не коммит, а роллбэк. У роллбэка две вещи – надо освободить все блокировки, и вернуть в исходное состояние. Можно ли сначала разблокировать, а потом делать откат. И вообще, когда можно снимать блокировки? (Базы Данных, 25 лекция (от 07 декабря))
    • rollback – дополнительная транзакция, компенсирующая, и когда выполнится последняя операция отката, после этого выполняется неявня операция commit, и только после неё можно снять блокировку.
  • Предположим, что в качестве механизма блокировок выбран двух фаз протокол, единица блокировки – строка, пример операции, которую нельзя выполнить. Лектор не знает, как при таком способе выполнить операцию уничтожения таблицы. Для этоог нужно сначала выкинуть данные, строка за строкой, и блокировать их. Когда последняя строка удалена, то можно её уничтожить. Но никто не мешает вставить другой кортеж в это время. Нужно блокировать таблицу целиком в режиме X. Если в качестве единицы блокировки теаблица целиком, то когда как удалить базу данных? А если блокировать БД целиком, то как тогда выполнять транзакции одновременно? (Базы Данных, 26 лекция (от 08 декабря))
    • Нужно иметь транзакционные блокировки разных уровней. В System R это реализовывалось при помощи граниулированных синхрозационных блокировок.
  • Почему в журнале нельзя ставить ссылки вперед? (Базы Данных, 27 лекция (от 14 декабря))
  • для того, чтобы выполнить какую-либо операцию на уровне РСС, нужно, вообще говоря, выполнить следующие действия: поменять данные, установить блокировку, нужно поместить запись в журнал. В каком порядке их выполнять? (Базы Данных, 28 лекция (от 15 декабря))
    • Cначала блокировка, потом запись в журнал, последнее – физические изменения.

[править] Что любит и что не любит лектор

  • Лектор не любит слово директория, вместо этого использовать слово каталог, справочник
  • Лектор не любит, когда путают конъюнкцию и дизъюнкцию, и когда забывают их значки
  • При рассмотрении реляционной модели про Microsoft говорить нельзя
  • Лектор любит, когда определения говорят лаконично
  • Не надо говорить, что схемы не пересекаются. Пересечь можно всё, но результат может быть пуст или нет
  • Лектор не любит писать на доске, и рисовать картинки особенно противно
  • Младшие поколения начинают называть consistency консистентностью, лектор это не любит
  • Перевод слова deadlock как самоблокировка

[править] Замечания

  • Очень хорошим критерием, когда человек отвечает на экзамене — он не понимает, какой природы ключ.
  • БД называть БД, СУБД называть СУБД
  • На время рассказа про средства манипулирования данными забыть про неопределённые значения
  • Б в В-деревьях не вообщем-то как раз от слова Байер (но не от слова Binary ни в коем случае).
  • Сбалансированные деревья АВЛ не сбалансированы

[править] Прочая информация

  • Лектор родом из города Жуковский
  • Всего в курсе три теоремы, одна лемма
  • Лектор не читает лекцию, если на неё приходит менее 3 человек
  • Очень хороший тест: когда спрашиваешь, это было на лекциях или не было.


Базы Данных


01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28


Календарь

пт чт пт чт пт чт пт чт пт чт
Сентябрь
01 07 14 15 21 22 28 29
Октябрь
  05 06 12 13 19 20 26 27
Ноябрь
  02 03 09 16 17 23 24 30
Декабрь
  07 08 14 15

Вопросы к экзамену
1999 2000 2001 2002 2003 2004 2005 2006


Дополнительная информация к экзамену

Личные инструменты
Разделы