Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вопросы_коллоквиума1_по_курсу_Базы_данных (5)

.docx
Скачиваний:
15
Добавлен:
26.03.2015
Размер:
46.54 Кб
Скачать

Коллоквиум 1

Системы управления базами данных

  1. Что означает термин реляционная база данных?

  • Реляционная база данных — база данных, основанная на реляционной модели данных. Слово «реляционный» происходит от англ. relation . Для работы с реляционными БД применяют реляционные СУБД.

  • Реляционная база данных представляет собой множество взаимосвязанных таблиц, каждая из которых содержит информацию об объектах определенного вида. Каждая строка таблицы содержит данные об одном объекте, а столбцы таблицы содержат различные характеристики этих объектов – атрибуты.

  1. Что означает термин система управления базами (СУБД) данных? Назовите три наиболее распространенных реляционных СУБД.

  • Программа которая реализует технологию хранения, извлечения, обработки и хранения данных в БД

  • Систе́ма управле́ния ба́зами да́нных (СУБД) — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием и использованием баз данных[1].

  • Oracle (50-60%), Microsoft SQL Server (15-20%), IBM DB2 (5-10%) – типичные СУБД поддерживающие реляционную модель.

  1. Что такое OLTP?

  • OLTP (Online Transaction Processing), транзакционная система — обработка транзакций в реальном времени. Способ организации БД, при котором система работает с небольшими по размерам транзакциями, но идущими большим потоком, и при этом клиенту требуется от системы минимальное время отклика.

  • Термин OLTP применяют также к системам (приложениям). OLTP-системы предназначены для ввода, структурированного хранения и обработки информации (операций, документов) в режиме реального времени.

  1. Что такое OLAP?

  • OLAP (англ. online analytical processing, аналитическая обработка в реальном времени) — технология обработки данных, заключающаяся в подготовке суммарной (агрегированной) информации на основе больших массивов данных, структурированных по многомерному принципу. Реализации технологии OLAP являются компонентами программных решений класса Business Intelligence[1].

  1. Что такое нормализация данных?

  • процесс преобразования таблиц базы данных к нормальной форме

  • Нормализация данных служит для уменьшения избыточности информации в таблицах базы данных.

  • 1NF - когда в любом допустимом значении отношения каждый его кортеж содержит только одно значение для каждого из атрибутов.

  • 2NF -когда она находится в первой нормальной форме, и каждый неключевой атрибут неприводимо (функционально полно) зависит от ее потенциального ключа.

  • 3NF - когда она находится во второй нормальной форме, и отсутствуют транзитивные функциональные зависимости неключевых атрибутов от ключевых.

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

  • тип -

  • элемент -

  • строка - кортеж

  • столбец - домен

  • таблица данных - отношение

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

  • вторичный ключ - это одно или несколько полей (столбцов) в таблице, содержащих ссылку на поле или поля первичного ключа в другой таблице. Внешний ключ определяет способ объединения таблиц.

  • значение по умолчанию – DEFAULT значение позволяющее указать то значение, которое необходимо добавить, если оно указано в INSERT

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

  • Це́лостность ба́зы да́нных (database integrity) — соответствие имеющейся в базе данных информации её внутренней логике, структуре и всем явно заданным правилам

  • Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint)

  • констрейнт – формальная поименованная запись ограничения целостности

  • PRIMARY KEY, NOT NULL, DEFAULT, UNIQUE, CHECK, FOREING KEY

  • ссылочная целостность – ограничение целостности, которое устанавливается для 2 таблиц. В 1 таблице должен быть PK, во второй FK

  1. Что подразумевается под понятием журнализация базы данных? Что значит упреждающее журналирование.

  • журнализация базы данных - функция СУБД, которая сохраняет информацию, необходимую для восстановления базы данных в предыдущее согласованное состояние в случае логических или физических отказов.

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

  • упреждающее журналирование - до занесения на диск записи, связанной с журналом, никакие изменения данных записаны не будут

  1. Поясните понятия декларативный язык программирования и процедурный язык программирования.

  • декларативный язык программирования – язык в котором нет переходов, циклов и прочего связанного с управлением

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

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

  • Язык SQL (Structured Query Language, язык структурированных запросов) – специализированный язык, предназначенный для написания запросов к реляционной БД.

  • для создания, модификации и управления данными в реляционных базах данных

  • Международная организация по стандартизации (ISO) и Американский национальный институт стандартов (ANSI)

  • SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2008

  • Диалекты SQL: расширения стандарта SQL для конкретных СУБД.

  1. Перечислить группы операторов языка SQL.

  • DDL - Data Definition Language, язык определения данных,

  • DML - Data Manipulation Language, язык манипулирования данными,

  • DCL - Data Control Language, язык управления данными,

  • TCL - Transaction Control Language, язык управления транзакциями.

  1. Перечислите основные операторы каждой группы операторов SQL.

  • DDL: CREATE, ALTER, DROP.

  • DML: INSERT, DELETE, UPDATE, SELECT.

  • DCL: GRAND, REVOKE.

  • TCL: COMMIT, ROLLBACK, SAVEPOINT.

  1. Перечислите все секции оператора SELECT. Что такое подзапрос. Поясните назначение ключевых слов ROLLUP и CUBE.

  • from where group by having distinct order by top

  • Оператор CUBE создает результирующий набор, содержащий статистические выражения для всех комбинаций значений заданных столбцов.

  • Оператор ROLLUP создает результирующий набор, содержащий статистические выражения иерархии значений в заданных столбцах.

  1. Способы соединения таблиц в операторе SELECT.

  • Естественное соединение таблиц – соединение таблиц имеющих общие столбцы

  • Внутреннее соединение INNER JOIN

Каждая строка одной таблицы сопоставляется с каждой строкой второй таблицы, после чего для полученной «соединённой» строки проверяется условие соединения (вычисляется предикат соединения). Если условие истинно, в таблицу-результат добавляется соответствующая «соединённая» строка.

  • Ортогональное соединение: CROSS JOIN

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

  • Внешние объединения: LEFT OUTER JOIN,

В результат включается внутреннее соединение (INNER JOIN) левой и правой таблиц по предикату p.

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

  • RIGHT OUTER JOIN,

В результат включается внутреннее соединение (INNER JOIN) левой и правой таблиц по предикату p.

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

  • FULL OUTER JOIN.

В результат включается внутреннее соединение (INNER JOIN) первой и второй таблиц по предикату p.

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

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

  1. Поясните формат оператора UPDATE.

  • update целевая таблица set set-выражение from join-выражение where логическое выражение

  • Синтаксис UPDATE предусматривает обязательную секцию SET и две необязательные секции FROM и WHERE. Кроме того, допускается применять секцию OUTPUT и опцию TOP.

  1. Поясните применение конструкций IN, ALL, ANY, BETWEEN, NОТ, IS NULL, LIKE, EXISTS в секции WHERE.

  • IN - Определяет, совпадает ли указанное значение с одним из значений, содержащихся во вложенном запросе или списке.

  • ALL - Сравнивает скалярное значение с набором значений, состоящим из одного столбца.

  • ANY - Сравнивает скалярное значение с набором значений, состоящим из одного столбца.

  • BETWEEN - Определяет диапазон для проверки.

  • NOT - Инвертирует входное логическое значение.

  • IS NULL -

  • LIKE - Определяет, совпадает ли указанная символьная строка с заданным шаблоном

  • EXISTS - Определяет вложенный запрос, проверяемый на наличие строк.

  1. Поясните формат оператора INSERT.

  • insert into таблица дополнение

  • insert into insert into таблицца

  • Оператор INSERT может добавить ноль, одну или более строк в заданную (таблица-приемник) таблицу БД. Источником строк для добавления служит тоже таблица (таблица-источник), содержащая ноль, одну или более строк. Причем таблица-приемник – это таблица БД (временная или постоянная) или таблица-переменная (этот тип таблиц рассматривается позже), а таблица-источник – это результирующий набор данных (строки, полученные в результате SELECT-запроса) или просто заданный список строк.

  1. Что такое хранимая процедура? функция? скалярная функция? табличная функция?

  • Хранимая процедура: поименованный блок (BEGIN/END) операторов, хранящийся в базе данных в откомпилированном виде.

  • Функция – это объект БД, представляющий собой поименованный код T-SQL. Для создания, удаления и изменения функций необходимо применять CREATE, DROP и ALTER соответственно. Отличие функций от хранимых процедур в ограничениях, накладываемых на код функции, в форме представления результата работы, а также в способе вызова.

В функции не допускается применение DDL-операторов, DML-операторов изменяющих БД (INSERT, DELETE, UPDATE), конструкций TRY/CATCH, а также использование транзакций.

Результатом выполнения функции является возвращаемое к точке вызова значение. Если функция возвращает единственное значение (число, строка, дата, время и пр.), то она называется скалярной. Функция, возвращающая таблицу, называется табличной. В зависимости от структуры кода, различают встроенные (inline) функции и многооператорные табличные функции.

  • Скалярная функция возвращает единственное значение и принимает любое количество параметров. Допускается возвращать и принимать все типы данных, за исключением TIMESTAMP и устаревших IMAGE, TEXT и NTEXT.

  • Встроенные табличные функции возвращают к точке вызова результирующий набор SELECT-запроса и по своим возможностям очень напоминают представления.

  1. Что такое курсор? Объясните общую схему работы с курсором (DECLARE, OPEN, FETCH, CLOSE, DEALLOCATE).

  • курсор – это механизм обработки результи-рующего набора SELECT-запроса.

  • курсор – это поименованная область памяти, содержащая результирующий набор SELECT-запроса

  • Работа с любым курсором осуществляется в следующей последовательности.

    1. Курсор объявляется в операторе DECLARE.

    2. Курсор открывается с помощью оператора OPEN.

    3. С помощью оператора FETCH считывается одна или несколько строк результирующего набора, связанного с курсором SELECT-оператора. Результат каждого считывания проверяется с помощью системной функции @@FETCH_STATUS.

    4. Курсор закрывается с помощью оператора CLOSE.

    5. Если курсор глобальный , то курсор должен быть освобожден с помощью оператора DEALLOCATE.

  1. Поясните основные типы курсоров: STATIC/DYNAMIC, LOCAL/GLOBAL, READ_ONLY, SCROLL.

  • Динамический курсор: изменения данных отображаются в динамике.

  • Статический курсор: данные выбраны один раз и произошедшие изменения «не видны».

  • Локальный курсор может применяться в рамках одного пакета и ресурсы, выделенные ему при объявлении, освобождаются сразу после завершения работы пакета. Признаком того, что курсор является локальным, является атрибут LOCAL, указанный при объявлении курсора.

  • Глобальный курсор может быть объявлен, открыт и использован в разных пакетах. Выделенные ему при объявлении ресурсы освобождаются только после выполнения оператора DEALLO-CATE или при завершении сеанса пользователя. Для того, чтобы объявить глобальный курсор следует применить атрибут GLOBAL.

  • При объявлении статического курсора должен указываться атрибут STATIC. Открытие статического курсора приводит к выгрузке результирующего набора строк в динамически созданную временную таблицу системной БД TEMPDB, и все дальнейшие курсорные операции осуществляется с этой таблицей. После открытия курсора изменения в исходных таблицах, которые осуществляются в рамках этого или других сеансов не будут отражаться в курсорном результирующем наборе.

  • Read only – курсоры не позволяют изменять БД.

  • Scroll – режим работы курсора, который расширяет возможности оператора fetch. В стандартной работе fetch движется сверху вниз, поочередно выбирая строки. Scroll позволяет передвигатся в разных направлениях (last(сдвиг на последнюю строку результата запроса), first (на первую), absolute (к конкретному номеру), relative (относительно данной строки на некоторое количество), next (на следующую), prior (на предыдущую))

  1. Поясните понятия входной параметр и возвращаемый (выходной параметр) процедуры.

  • Входные параметры хранимых процедур представляют собой указатели мест ввода данных пользователем.

  • Основное отличие выходного параметра от входного в том, что с помощью входного параметра вы задаете хранимой процедуре значение для работы, с помощью выходного - хранимая процедура возвращает значение. Выходной параметр определяется с помощью ключевого слова OUTPUT.

  1. Что такое представление? Поясните назначение опции WITH CHECK OPTION.

  • Представление (англ. View) – это объект БД, представляющий собой поименованный SELECT-запрос. При этом следует подчеркнуть: в БД хранится именно SELECT-запрос, а не результат его выполнения.

  • Если в операторе CREATE VIEW будет указана фраза WITH CHECK OPTION, то СУБД станет осуществлять контроль за тем, чтобы в исходные таблицы базы данных не была введена ни одна из строк, не удовлетворяющих предложению WHERE в определяющем запросе. Этот механизм гарантирует целостность данных в представлении.

  1. Что такое триггер? Какие типы триггеров вы знаете.

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

  • DML-триггеры: создаются для таблицы или представления,реагируют на события INSERT, DELETE, UPDATE.

  • DML-триггеры: для одной таблицы или представления может быть несколько триггеров. Частично (первый и последний) порядок триггеров может быть установлен ч помощью процедуры sp_settriggerorder (не работает для INSTEAD OF).

  • DML-триггеры: AFTER-триггеры, INSTEAD OF-триггеры.

  • AFTER-триггеры: триггеры уровня оператора (выполняются по одному разу для каждого оператора), выполняются после наступления события.

  • INSTEAD OF-триггеры: триггеры уровня оператора (выполняются по одному разу для каждого оператора), выполняются вместо операции (сама операция не выполняется). INSTEAD OF-триггеры не могут вызываться рекурсивно (если в триггере сработает операция, снова вызвавшая работу триггера). Если образуется рекурсия вызовов триггеров, то будет сделана попытка выполнить оператор.

  • DDL-триггеры: AFTER-триггеры: CREATE, ALTER, DROP...., LOGON (при подключении).

  • Ограничения: во всех триггерах запрещено ряд команд: CREATE, DROP, ALTER TABLE/DATABASE и ...

  1. Что такое транзакция? принцип ACID?

  • Транзакция: одна или несколько команд SQL, которые либо успешно выполняются как единое целое, либо отменяются как единое целое.

  • Транзакция: логическая единица работы, обеспечивающая переход базы данных из одного согласованного (непротиворечивого) состояния в другое согласованное состояние.

  • ACID: требование к транзакционной системе

    • Atomicity (Атомарность) транзакция либо завершается полностью и успешно, либо полностью не выполняется (аварийно завершается);

    • Consistency(Согласованность) – транзакция (успешно или аварийно завершенная) всегда оставляет базу данных в согласованном состоянии;

    • Isolation(Изолированность) - до фиксации изменения видит только сеанс, выполнивший эти изменения; есть различные уровни изолированности;

    • Durability (Устойчивость, долговечность) - после фиксации транзакцию нельзя отменить.

  1. Что такое блокировка транзакций? Поясните термин Deadlock.

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

  • Блокировки бывают на чтение и на запись.

  • Взаи́мная блокиро́вка (deadlock) — ситуация в многозадачной среде или СУБД, при которой несколько процессов находятся в состоянии бесконечного ожидания ресурсов, занятых самими этими процессами.

  1. Перечислите уровни изолированности транзакций?

  • Транзакция: уровни изоляции (ANSI SQL-92), читатели писатели

  1. READ UNCOMMITED (неподтвержденное (грязное) чтение). Читатель может прочитать незафиксированные строки. Читатель не может изменить незафиксированные строки (ожидает);

  2. READ COMMITED (подтвержденное чтение). Читатель не может прочитать неподтвержденные данные (ожидает), писатель может изменить и удалить уже прочитанные читателем данные;

  3. REPETABLE READ (повторяемое чтение). В начале транзакции и в конце транзакции результат одного и того же запроса читателя будет одинаков; писатели могут вводить данные, что приводит к появлению фантомных записей;

  4. SERIALIZABLE (сериализуемость). Высший уровень изоляции. Данные не могут не прочитаны ни изменены до окончания транзакции.

SNAPSHOT (снимок). Читатель считывает версию данных на момент начала транзакции писателя.

  1. Поясните понятия фиксация транзакции и откат транзакции.

  • Фиксация – подтверждение успешного завершения транзакции.

  • Откат – это отмена всех изменений в БД, выполненных в рамках транзакции.

  1. Поясните понятие вложенная транзакция.

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

    1. COMMIT вложенной транзакции действует только на внутренние операции вложенной транзакции.

    2. ROLLBACK внешней транзакции отменяет зафиксированные операции внутренней транзакции.

    3. ROLLBACK вложенной транзакции действует на операции внешней и внутренней транзакции, а также завершает обе транзакции.

    4. Уровень вложенности транзакции можно определить с помощью встроенной системной функции @@TRANCOUT.

  1. Поясните понятие режим автофиксации.

  • Режим автоматической фиксации (часто просто автофиксация) транзакции используется MSS по умолчанию. После завершения, каждый оператор T-SQL фиксируется или откатывается. Если оператор выполняется без ошибок, то автоматически выполняется фиксация. В противном случае состояние БД откатывается назад.

Действие режима автофиксации продолжается до тех пор, пока не запускается явная транзакция или не включается режим неявной транзакции. Если явная транзакция завершается (фиксируется или откатывается) или выключается режим неявной транзакции, то автоматически осуществляется возврат в режим автофиксации.

  1. Поясните понятие автономная транзакция.

  • Автономные транзакции позволяют создавать новые подтранзакции (subtransaction), которые могут сохранять или отменять изменения вне зависимости от родительской транзакции.

  1. Что такое контрольная точка транзакции.

  • Контрольная точка – это метка в явной транзакции, определяющая момент времени, к которому может быть выполнен откат.

  1. Для чего необходим индекс? Какие типы индексов бывают?

  • Индекс – это объект БД, позволяющий ускорить поиск в опре-деленной таблице.

  • Обычно кластеризованные индексы создаются автоматически при создании таблицы. Дело в том, что наличие первичного ключа (ограничение PRIMARY KEY) в таблице БД, влечет автоматическое создание индекса при создании таблицы. Если при этом в свойствах столбца первичного ключа специально не указано ключевое слово NONCLUSTERED, то автоматически создастся кластеризованный индекс.

  • Некластеризованные индексы в отличие от кластеризованных никак не влияют на физический порядок строк в таблице. Как и в случае кластеризованных индексов, данные индекса организованы в виде сбалансированного дерева. С таблицей некластеризованный индекс связан указателями на ее строки. Для одной таблицы БД до-пускается создавать до 1023 некластеризованных индексов.

  1. Поясните понятия план запроса и стоимость запроса SQL.

  • Планы запросов: последовательность элементарных действий для исполнения запроса, планы вычисляются подсистемой MS SQL Server Query Optimizer (QO).

  • Стоимость запроса: числовая величина, характеризующая степень использования ресурсов;

  1. Поясните понятие секционирование таблиц?

  • Секционирование: метод хранения объектов базы данных (таблиц и индексов), при котором данные разбиваются на блоки (секции) и распределены между различными файловыми группами.

  • Секционирование: поддерживается не всеми редакциями Microsoft SQL Server 2008, а только Enterprise Edition, Developer Edition.

  • Секционирование: в разных СУБД реализовано по-разному; в Oracle очень развита эта технология.

  • Секционирование: в Microsoft SQL Server 2008 все таблицы и индексы секционированы, по умолчанию таблица или индекс находятся в одной секции; секции – базовая структура данных (совместно со страницами и экстентами).

  • Секционирование: в Microsoft SQL Server только горизонтальное.

  • Секционирование: выигрыш в скорости (секции на разные диски, эффективно совместно с RAID(зеркало, стриппинг)), проще управлять данными при копировании/восстановлении и переносе.

  • Секционирование: пример с базой данных студентов; данные для изменения, для обновления.

  • Секционирование: следует применять если:

  • таблица большая (много строк);

  • таблица содержит множества строк, управляемые по-разному;

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

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