Работа 100+ вопросов к собеседованиям, технических интервью - Базы данных

  1. Вопрос # 1 Что такое База Данных? База данных (БД) - это упорядоченный набор логически взаимосвязанных...
  2. Теперь, немного однобоко уточним несколько моментов по клиент-сервера:
  3. Вопрос # 3 Что такое репозиторий?
  4. Вопрос # 4 Что такое тестирование Баз Данных?
  5. Если перечислять, тестирование базы данных должно включать:
  6. Вопрос # 5 Что такое реляционные базы данных?
  7. Вопрос # 6 Что такое нереляционные Базы Данных
  8. Вопрос # 7 Что такое Реляционная СУБД?
  9. Вопрос # 8 Какая разница между реляционной СУБД и просто СУБД?
  10. Любая Система Управления Баз Данных для эффективной работы должна предоставлять своим пользователям...
  11. Нап д, модель группы студентов может выглядеть:
  12. Вопрос # 10 Что такое таблица?
  13. Вопрос # 11 Что такое поле в таблице?
  14. Вопрос # 12 Что такое типы данных?
  15. Вопрос # 13 Что такое кортежи?
  16. Вопрос # 13 Что такое SQL
  17. Вопрос # 14 Каковы различные типы команд SQL Вы знаете?
  18. Различают типы команд SQL:
  19. Вопрос # 16 Объясните команды DML. Какие разные команды DML в SQL Вы знаете?
  20. Вопрос # 17 Объясните команды DCL. Какие разные команды DCL в SQL известные Вам?
  21. Вопрос # 18 Объясните команды TCL. Какие разные команды TCL в SQL?
  22. Вопрос # 19 Что такое SQL ограничения?
  23. Вопрос # 20 Что такое уникальное ограничения?
  24. Вопрос # 21 Что такое ключи?
  25. Вопрос # 22 Что такое Primary Key?
  26. Вопрос # 23 Что такое Foreign Key?
  27. Вопрос # 24 Что такое тип данных счетчик в БД?
  28. Вопрос # 25 Что такое простой ключ?
  29. Вопрос # 26 Какая разница между уникальным ключевым и первичным ключом?
  30. Вопрос # 27 Что такое составлен ключ?
  31. Вопрос # 28 Что такое искусственный или суррогатный ключ?
  32. Вопрос # 29 Может быть в таблице определено более одного Foreign key?
  33. Вопрос # 30 Что такое значение NULL?
  34. Вопрос # 31 Может ли значение столбцов на которые наложен Foreign Key равно Null?
  35. Вопрос # 32 Что такое »не нулевое ограничение"?
  36. Вопрос # 33 Что такое Check constraint?
  37. Вопрос # 34 Какое максимальное количество CHECK Constraint можно определить в столбце?
  38. Вопрос # 35 Что такое ограничения по умолчанию?
  39. Вопрос # 36 Что такое ограничения целостности?
  40. Вопрос # 37 Что такое Референтная целостность?
  41. Вопрос # 38 Какая разница между функциями Rename and Alias?
  42. Вопрос # 39 Что такое Синоним?
  43. Вопрос # 40 Какие типы связей в Базе Данных Вы знаете?
  44. Существует 3 типа логических связей между таблицами:
  45. Вопрос # 41 Что такое индексы в Базе Данных и для чего их используют?
  46. Вопрос # 42 Назовите негативную сторону использования индексов?
  47. Вопрос # 43 Какие принципы создания индексов?
  48. Вопрос # 45 Что такое кластеризованного индекс?
  49. Вопрос # 46 Что такое некластеризований индекс?
  50. Вопрос # 47 Какая разница между кластеризованного и некластеризованимы индексами?
  51. Вопрос # 48 Есть ли смысл индексировать поля таблицы, которые имеют тип Boolean или с небольшим количеством...
  52. Вопрос # 49 Когда полное сканирование таблицы выгоднее доступа по индексу? Обоснуйте Ваш выбор?

Вопрос # 1 Что такое База Данных?

База данных (БД) - это упорядоченный набор логически взаимосвязанных данных, предназначенных для удовлетворения информационных потребностей пользователей.

Также База данных (БД) может быть определена как сборник таблиц, схем, хэшей, просмотров и других объектов характерных для базы данных.

Вопрос # 2 Какие виды Баз Данных существуют?

согласно википедии : Иерархические, мережевни, объектно-ориентированные, реляционные, а не реляционные, локальные, распределенные, структурированные, неструктурированные. По содержанию, например: географические, исторические, научные и тому подобное.

Теперь, немного однобоко уточним несколько моментов по клиент-сервера:

По способу доступа к данным базы данных, базы данных делятся на базы данных с локальным доступом и базы данных с удаленным (сетевым) доступом. Согласно Базы Данных с сетевым доступом проектируют согласно архитектуры:

  • клиент-сервер.

Вот, клиент-сервер распространена, на ней работает интернет, поэтому следует знать и понимать ее определение! Суть концепции клиент-сервера заключается в том, что кроме хранения централизованной базы данных, центральная машина (сервер базы данных) должна обеспечивать выполнение основного объема обработки данных. Запрос на данные, выдаваемый клиентом (рабочей станцией), порождает поиск и извлечение данных на сервере. Вытянутые данные транспортируются по сети от сервера к клиенту. Новые данные записываются / замещаются к базе данных Web приложения. Спецификой архитектуры клиент-сервер является использование языка запросов SOL.

Спецификой архитектуры клиент-сервер является использование языка запросов SOL

Взаимодействие клиентского браузера и Web приложения

Вопрос # 3 Что такое репозиторий?

Прежде чем предоставить определению срока репозиторий, представьте простую математику Одна База Данных = простая База Данных. Мистилище данных, где хранятся данные из 2-х и более баз данных называется хранилище данных. Репозиторий, то обычно уже гигантская база данных.

Кроме того, Репозитории данных, характеризуются тем, что такого рода базы данных предназначены для как для хранения, так и управления данными и метаданными, то есть информации о структуре данных. В репозиториях поддерживаются множество представлений одной и той же или похожей информации (слепков, блокчейнив). Например, программный модуль имеет представление в виде исходного кода, объектного кода, промежуточного кода, готовой программы, таблиц использований / определений, документации. Связи между всеми этими представлениями репозиторием отслеживаются так, чтобы изменения в одном из них автоматически распространялись на другие представления того же объекта. Также репозитории данных поддерживают понятие версий (моментальных слепков элементов данных, изменяющихся во времени и конфигураций (версий данных).

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

Вопрос # 4 Что такое тестирование Баз Данных?

Тестирование баз данных предусматривает проверку целостности и достоверности данных, которые отображаются на Front end -и, и содержатся в Базе Данных (на Back end -i).

Если перечислять, тестирование базы данных должно включать:

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

Более подробно об этом читайте, ну как всегда Более подробно об этом читайте, ну как всегда   здесь на нашем сайте для тестировщиков в статье:   Тестирование базы данных - практические советы начинающим, как качественно проверить БД здесь на нашем сайте для тестировщиков в статье: Тестирование базы данных - практические советы начинающим, как качественно проверить БД

Вопрос # 5 Что такое реляционные базы данных?

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

Суть, Реляционная база данных - это набор таблиц и связей между этими таблицами.

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

Также строка еще называют "записи" таблицы (англ. Record). Каждое поле таблицы, столбец (англ. Field) таблицы имеет тип.

Вопрос # 6 Что такое нереляционные Базы Данных

Гм ... скользкий вопрос. Можно наговорить и написать много, и Вы ничего не поймете.

Запомните главное: нереляционные Базы Данных - это тип неструктурированных Баз Данных.

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

В нереляционных базах данных данные могут быть организованы по принципу ключ-значение или иерархических структур. Если структурированные базы данных предназначены для хранения информации о физических объектах (людей, товары, цены, з / п и т.д.), то нереляционные Базы Данных основном застосовуюся для документооборота.

Нереляционные Базы Данных приобрели популярность с началом массового распространения сети интернет (например организация данных в поиске G oogl e). В нереляционных базах данных делается попытка решить проблемы масштабируемости, производительности баз данных и гибкости отдельно взятой БД. Поэтому срок нереляционных баз данных еще часто идет рядом с NoSQL базами данных, и целой современной наукой Big Data.

Вопрос # 7 Что такое Реляционная СУБД?

СУБД (система управления базами данных) реляционной базы данных - это система, основанная на программных и технических средствах, которая обеспечивает определение отношений между таблицами, создания, манипулирования, контроль, управление и использование баз данных (по стандарту ISO / IEC 2382: 2015). Программы для работы с базой данных могут быть частью СУБД или автономными. Самыми популярными СУБД есть MySQL , PostgreSQL , Microsoft SQL Server , Oracle , Sybase , Interbase , Firebird и IBM DB2 . Они позволяют эффективно работать с базами данных, объем которых делает невозможным их ручное обработки.

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

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

Вопрос # 8 Какая разница между реляционной СУБД и просто СУБД?

Основным отличием между СУБД и СУБД (реляционной системы Управления Базами Данных) - является организация хранения данных. Если в СУБД данные хранятся в таблицах, в нереляционных СУБД нет связи между таблицами (данные могут храниться даже в файлах или как мы уже говорили в иерархических структурах.

Слова-аббревиатуры СУБД, СУБД, DBMS, or Database Management System - являются синонимами.

ВНИМАНИЕ: Из-за тесной связи баз данных с СУБД под термином «база данных» иногда необоснованно и неточно подразумевают систему управления базами данных. Но следует различать базу данных - хранилище данных, и СУБД - как один средств для работы с Базой Данных. СУБД с информационной системы может быть удалена, но база данных продолжит где существовать, если только ее данные предварительно сохранили. И наоборот: СУБД может функционировать без всякой базы данных - просто пустая незаполненная данным приложение.

Любая Система Управления Баз Данных для эффективной работы должна предоставлять своим пользователям следующие возможности:

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

Вопрос # 9 Что такое модель данных?

Перед тем как хранить какие-то данные в СУБД нужно описать их модель. То есть определить сами данные и описать их взаимосвязи с другими данными в таблице. На мужицкий ум - "указать на ячейку", куда данные должны попасть, с помощью запросов SQL, определенных индексов, разного рода ограничений, а по правильному то набор атрибутов.

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

Нап д, модель группы студентов может выглядеть:

    • имя фамилия;
    • дата рождения;
    • фото студента;
  • дополнительные но папы.

№ Имя Фамилия Фото рождения Группа Заметки 1. Иван Дурачок 12.07.1995 МТФ-1 не имеет 2. Елена Прекрасная 31.03.1996 Кфр-7 отличница 3. Василий Пупкин 24.08.1994 ДМР-5 хулиган

Вопрос # 10 Что такое таблица?

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

Вопрос # 11 Что такое поле в таблице?

Поле - это сущность, которая используется для хранения определенного типа данных в таблице, как цифры, символы, даты и тому подобное.

Поля - это столбцы, структура таблицы (поля формируют модель таблицы).

А поле (англ. Field) таблицы имеет тип - повторили еще раз понятие поля о котором уже тоже говорили выше 😆

Вопрос # 12 Что такое типы данных?

Типы данных подразделяются на три категории: числовые, текстовые, типа даты и времени.

Каждая запись в таблице может ожидать данных разного типа: Например: индетификацийний номер налогоплательщика - определенного количества чисел. Имя и Фамилию - букв.

Вопрос # 13 Что такое кортежи?

Кортеж - это так называемый запись, один неявно структурированный элемент в таблице. Согласно кортежи - это набор связанных элементов данных в таблице. Смотрите картинка иллюстрацию, мною скопирован с Википедии на эту тему:

Вопрос # 13 Что такое SQL

SQL (Structured English QUEry Language) - это язык программирования, который применяется для создания, модификации и управления данными в любой реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД). Используется в MySQL, PostgreSQL и так далее.

Вопрос # 14 Каковы различные типы команд SQL Вы знаете?

Команды SQL - это набор команд, можно сказать единичных запросов, используемых для общения и управления данными, находящимися в базе данных.

Различают типы команд SQL:

  1. DDL - Data Definition Language
  2. DML - Data Manipulation Language
  3. DCL - Data Control Language
  4. TCL - Transactional Control Language

Вопрос # 15 Объясните команды DDL. Какие разные команды DDL в SQL Вы знаете?

DDL (Data Definition Language) - это команды в SQL, используемого для определения или изменения структуры базы данных. Вот перед тем как создать Базу Данных, следует с помощью таких команд создать таблицы и при необходимости другие сущности.

Примеры команд DDL в SQL:

    • CREATE - используется для создания таблицы в базе данных;
    • DROP - удаляет таблицу из базы данных;
    • ALTER - изменяет структуру базы данных;
    • TRUNCATE - удаляет все записи из базы данных, но не его структуру базы данных;
  • RENAME - переименовывает объект базы данных.

Вопрос # 16 Объясните команды DML. Какие разные команды DML в SQL Вы знаете?

DML (Data Manipulation Language) - это простые команды, которые используется для управления данными, содержащимися в базе данных. Некоторые из команд DML - выбрать (SELECT), вставить (INSERT), обновить (UPDATE), удалить (DELETE) и др.

Вопрос # 17 Объясните команды DCL. Какие разные команды DCL в SQL известные Вам?

DCL (Data Control Language) - эти команды используются для создания ролей, предоставления разрешения и контроля доступа к объектам базы данных пользователям.

Команды DCL:

    • GRANT - дает разрешение пользователю в базу данных;
    • REVOKE - удаляет права доступа пользователя;
  • DENY - явно запрещает определенному пользователю, принадлежащий группе, получать элементы управления доступом. Более подробно об этом оператор SQL можно узнать здесь

Вопрос # 18 Объясните команды TCL. Какие разные команды TCL в SQL?

TCL (Transaction Control Language) - команды используется для управления изменениями, сделанными с помощью операторов DML. Они используются для обработки группы операторов SQL, содержащих логическую единицу.

Команды TCL:

    • COMMIT - завершить транзакцию и зафиксировать все изменения в Базе Данных;
    • SAVEPOINT - точки остановки, они разделяют транзакцию на меньшие логические единицы, которые могут быть дополнительно отобраны;
    • SET TRANSACTION - установить некоторые условия выполнения транзакций;
  • ROLLBACK - отменить транзакцию и сделать восстановление базы данных с момента последнего изменения.

Вопрос # 19 Что такое SQL ограничения?

Ограничения SQL - это набор правил, накладывают некоторое ограничение при вставке, удалении или обновлении данных в базах данных. В SQL мы ограничения как уровня столбца, так и ограничения уровня таблицы, которые применяются в соответствии с столбцов и таблиц соответственно. Некоторыми ограничениями (Data Integrity Constraints) в SQL являются: Primary Key, Foreign Key, Unique Key, Not NULL, DEFAULT, CHECK и Index.

Вопрос # 20 Что такое уникальное ограничения?

Уникальное ограничение используется для обеспечения того, что поле / колонка будет единственное значение (без дубликатов) в базе данных.

ОБРАТИТЕ ВНИМАНИЕ! На ограничение проверки CHECK используется для ограничения множества значений, которые могут быть помещены в данный столбик. Это ограничение используется для целостности базы данных с точки зрения ее структуры.

Вопрос # 21 Что такое ключи?

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

Существуют ключи двух типов: первичные (Primary Key) и вторичные (внешние Foreign Key).

Вопрос # 22 Что такое Primary Key?

Primary Key (Главный, Первичный ключ) - это столбец или комбинация столбцов, которые однозначно идентифицируют запись в базе данных. Первичный ключ может иметь только уникальные значения, а не значение NULL, и в таблице может быть только один первичный ключ. Главная роль первичного ключа - поддерживать целостность БД.

Вопрос # 23 Что такое Foreign Key?

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

Примеры Primary Key & Foreign Key:

Как Foriegn ключ в одной таблице, связанный с первичным ключом другой таблицы. С помощью этого отношения мы объединяем данные с внешнего ключа, с соответствующими данным в первичном ключе другой таблицы. Данные по Foreign Key должны соответствовать данным из Primary Key.

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

Существует 4 типа первичных ключей:

    • ключевые поля счетчика (счетчик)
    • простой ключ (Simple Primary Key)
    • составлен ключ (Composite Primary Key)
  • суррогатный ключ (Surrogate Primary Key).

Вопрос # 24 Что такое тип данных счетчик в БД?

Поле счетчика (тип данных «Счетчик») - это когда для каждой записи поля таблицы автоматически заносится уникальное числовое значение.

Вопрос # 25 Что такое простой ключ?

Простой ключ (Simple Primary Key) - использует только 1 поле для идентификации записи, если поле содержит уникальные значения, такие как коды или инвентарные номера, то это поле можно определить как первичный ключ. Кроме того, определить как простой ключ, если это поле не содержит повторяющиеся значения или значения Null.

Вопрос # 26 Какая разница между уникальным ключевым и первичным ключом?

(UNIQUE & PRIMARY KEY) Уникальный ключ допускает нулевое значение (хотя только одно), но первичный ключ не позволяет нулевого значения.

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

Уникальный ключевой столбец создает некластерного индекс, тогда как первичный ключ создает кластеризованного индекс в столбце.

Вопрос # 27 Что такое составлен ключ?

Составлен ключ (composite key, комбинированный ключ) - является первичным ключом с несколькими столбцами. Поскольку в случае некоторых таблиц одно поле может не гарантировать уникален не нулевых значений, поэтому первичным ключом считается комбинация нескольких полей. Другое определение это когда в таблице есть несколько Foreign Key.

Вопрос # 28 Что такое искусственный или суррогатный ключ?

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

Вопрос # 29 Может быть в таблице определено более одного Foreign key?

Да, может. В т аблица можно определять любое количество внешних ключей. Но главный (Primary Key) его можно найти только один.

Вопрос # 30 Что такое значение NULL?

Значение NULL в SQL неизвестен или пустым значением. Поскольку значение NULL неизвестен значением, значение NULL нельзя сравнивать с другими значениями NULL. Следовательно, мы не можем использовать оператор '=', где условие с NULL. Для этого мы оператор в СУБД IS NULL, которая проверяет, является значение в поле NULL или нет.

Вопрос # 31 Может ли значение столбцов на которые наложен Foreign Key равно Null?

Может если на данный столбик НЕ наложено ограничение not null. При построении таблицы дерева файловой системы, где находится столбик Foreign Key ссылки на ту же таблицу, на кортеж с информацией о родительскую директорию. Когда для корня директории файловой системы в колонке родительской категории будет null.

Вопрос # 32 Что такое »не нулевое ограничение"?

Not NULL ограничения используется для обеспечения того, что значение в поле не может быть NULL.

Вопрос # 33 Что такое Check constraint?

Это ограничение значения, введенного в поле. Используется как проверка. Например, мы можем гарантировать, что поле "Зарплата" может иметь значение более 1000, используя проверочные ограничения.

Вопрос # 34 Какое максимальное количество CHECK Constraint можно определить в столбце?

Не имеет ограничения.

Вопрос # 35 Что такое ограничения по умолчанию?

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

Вопрос # 36 Что такое ограничения целостности?

Ограничения целостности (Integrity Constraint) - это правило которое ограничивает значение для столбца в таблице.

Вопрос # 37 Что такое Референтная целостность?

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

Вопрос # 38 Какая разница между функциями Rename and Alias?

Переименование (Rename) - это постоянное имя, приведенное для таблицы или колонки, а псевдоним (Alias) - это временное имя, предоставляется таблицы или столбце, которые уже не существуют после выполнения оператора SQL.

Вопрос # 39 Что такое Синоним?

Синоним - это alias определенной последовательности или программного блока в таблице.

Существует два типа синонимов: частные (Private) и общедоступные (Public).

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

Вопрос # 40 Какие типы связей в Базе Данных Вы знаете?

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

Существует 3 типа логических связей между таблицами:

Один-к-одному - каждой записи из одной таблицы соответствует одна запись в другой таблице.

Связь один-к-одному создается когда есть определенные ограничения по первичному ключу или уникальности. Отношение один-к-одному создается в том случае, когда оба поля являются ключевыми или имеют уникальные индексы.

Один-ко-многим - одной записи из одной таблицы соответствует несколько записей в другой таблице.

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

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

В большинстве случаев логические связи между таблицами это сопоставление Primary Key одной таблицы и Foreign Key второй таблицы.

Вопрос # 41 Что такое индексы в Базе Данных и для чего их используют?

Индексы - это специальные структуры в базах данных, которые помогают ускорить поиск и сортировка данных по определенному полю или набора полей. Используются для обеспечения уникальности данных. Проще индексы сравнить с содержанием в книге. Если в книге не имеет смысла с указателями, для того чтобы найти нужную информацию нам нужно будет пролистывать много страниц пока не найдем нужное место. А с указателем (индексом) - мы сразу открываем на нужной странице. Чем больше индексов в таблице, тем выше производительность запросов к базе данных. Однако при избыточном увеличении индексов - падает скорость операций изменения данных (вставка / изменение / удаление), поэтому следует соблюдать меры.

Вопрос # 42 Назовите негативную сторону использования индексов?

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

Вопрос # 43 Какие принципы создания индексов?

    • Индексы необходимо создавать для столбцов, которые используются в Джойна, по которым часто производится поиск и операции сортировки. При этом необходимо учесть, что индексы всегда автоматически создаются для столбцов, на которые накладывается ограничение Primary key. Чаще всего они создаются и для столбцов с Foreign key;
    • Индекс обязательно в автоматическом режиме создается СУБД для столбцов, на которые наложено ограничение уникальности;
    • Лучше индексы создавать для тех полей, в которых минимальное число повторяющихся значений и данные распределены равномерно. В Oracle есть специальные битные индексы для столбцов с большим количеством повторяющихся значений, в SQL Server и Access такого вида индексов не предусмотрено;
    • Если поиск постоянно проводится по определенному набору столбцов (одновременно), то в этом случае, возможно, есть смысл создать композитный индекс (только в SQL Server) - один индекс для группы столбцов;
    • При внесении изменений в таблицы автоматически изменяются и индексы, наложенные на эту таблицу. В результате индекс может быть сильно фрагментирован, что сказывается на производительности. Периодически следует проверять степень фрагментации индексов и дефрагментировать их. При загрузке большого количества данных иногда стоит сначала удалить все индексы, а после завершения операции создать их заново;
  • Индексы можно создавать не только для таблиц, но и для сущностей (только в SQL Server). Преимущества - возможность вычислять поля в момент запроса, а в момент появления новых значений в таблицах.

Вопрос # 44 Какие типы индексов?

Уникальный индекс, индекс первичного ключа, кластеризованного индекс, некластеризований, полнотекстовый.

Вопрос # 45 Что такое кластеризованного индекс?

Кластеризованного индексы физически сортируют строки в таблице на основе кластеризации (по умолчанию - Primary key). Кластеризованного индекс помогает быстро изымать данные из баз данных. В таблице может быть только один кластерный индекс.

Вопрос # 46 Что такое некластеризований индекс?

Некластеризовани индексы содержат значение в том виде, как был определен индекс, вместе с идентификатором строки или кластерным ключом, указывающие на строку в таблице, соответствует Leaf Level. В таблице могут быть несколько кластеризованных индексов. Сами данные не хранятся в индексе и выводятся из таблицы, используя идентификатор строки или ключ кластерного индекса.

Вопрос # 47 Какая разница между кластеризованного и некластеризованимы индексами?

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

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

Индекс по логическим значением имеет смысл только в случае, когда истина или ложь распределены равномерно по таблице. Минимально 1/3.

Вопрос # 49 Когда полное сканирование таблицы выгоднее доступа по индексу? Обоснуйте Ваш выбор?

Полное сканирование осуществляется многоблочные чтением. Сканирование по индексу ОДНОБЛОЧНОМ. Также при доступа по индексу сначала идет сканирование самого индекса, а затем чтение блоков с таблицы. Число блоков которые нужно прочитать с таблицы, зависят фактора кластеризации. Если суммарное время на одноблочная проходы больше многоблочных ответ очевидна.Таким образом, полное сканирование избирается при слабой селективности предикатов запросов или незначительной кластеризации данных или в случае очень малых таблиц.

Вопрос # 1 Что такое База Данных?
Вопрос # 4 Что такое тестирование Баз Данных?
Вопрос # 8 Какая разница между реляционной СУБД и просто СУБД?
Вопрос # 11 Что такое поле в таблице?
Вопрос # 12 Что такое типы данных?
Вопрос # 13 Что такое кортежи?
Какие разные команды DML в SQL Вы знаете?
Какие разные команды DCL в SQL известные Вам?
Какие разные команды TCL в SQL?
Вопрос # 19 Что такое SQL ограничения?