| layout | ../../layouts/Layout.astro |
|---|---|
| title | Базы данных |
| description | Базы данных, проектирование схем, транзакции и SQL для подготовки к интервью |
| category | Backend |
| kind | questions |
| order | 880 |
Что такое БД?
|
Короткий ответ База данных (БД / DB - Database): Это упорядоченная (структурированная) совокупность данных, организованная таким образом, чтобы обеспечить их удобное хранение, поиск, извлечение, обновление и управление. - Проще говоря: Это как электронная картотека или склад информации, где данные хранятся не хаотично, а по определенным правилам, что позволяет легко и быстро находить нужные сведения. Полный ответ
|
Что такое СУБД?
|
Короткий ответ СУБД (Система Управления Базами Данных / DBMS - Database Management System): Это программное обеспечение (комплекс программ), которое позволяет пользователям и приложениям создавать, получать доступ, управлять и взаимодействовать с базами данных. - Функции СУБД: - Определение данных (создание структуры БД - таблицы, поля, типы данных). - Манипулирование данными (вставка, чтение, обновление, удаление - CRUD операции). Полный ответ
|
Какие есть типы БД? С какими работал на практике?
|
Короткий ответ Основные типы БД (по модели данных): 1. Реляционные (SQL): Самый распространенный тип. Данные хранятся в виде таблиц (отношений), состоящих из строк и столбцов. Связи между таблицами устанавливаются с помощью ключей. Используют язык SQL. - Примеры СУБД: PostgreSQL, MySQL, Oracle, MS SQL Server, SQLite. 2. Полный ответ
|
Почему реляционные БД называют реляционными?
|
Короткий ответ Реляционные базы данных называются так потому, что они основаны на реляционной модели данных, предложенной Эдгаром Коддом в 1970 году. - В основе этой модели лежит математическое понятие "отношение" (relation), которое в терминах БД представляет собой таблицу. - Таким образом, "реляционная" означает, что данные организованы в виде отношений (таблиц), состоящих из кортежей (строк/записей) и атрибутов (столбцов/полей). Полный ответ
|
Какие задачи решаются с помощью нереляционных СУБД?
|
Короткий ответ Нереляционные (NoSQL) СУБД хорошо подходят для решения задач, где традиционные реляционные БД могут испытывать трудности или быть неоптимальными: Полный ответ Нереляционные (NoSQL) СУБД хорошо подходят для решения задач, где традиционные реляционные БД могут испытывать трудности или быть неоптимальными:
|
В чем отличие реляционных и нереляционных БД? В каком виде хранятся данные в той или иной СУБД?
|
Короткий ответ Краткая суть раскрыта в полном ответе с кодом или практическим примером. Полный ответ
|
Что такое нормализация БД?
|
Короткий ответ Нормализация: Это процесс организации данных в реляционной базе данных с целью уменьшения избыточности (дублирования) и улучшения целостности данных. - Цели нормализации: - Устранение аномалий вставки, обновления и удаления (проблем, возникающих из-за дублирования данных). - Минимизация объема хранимых данных. - Упрощение структуры БД и запросов на обновление. - Обеспечение логической целостности данных. Полный ответ
|
Назови первые три нормальные формы
|
Короткий ответ Есть и более высокие нормальные формы (Бойса-Кодда - BCNF, 4НФ, 5НФ), но на практике чаще всего достаточно достижения 3НФ или BCNF. Полный ответ
Есть и более высокие нормальные формы (Бойса-Кодда - BCNF, 4НФ, 5НФ), но на практике чаще всего достаточно достижения 3НФ или BCNF. |
Что такое денормализация и когда ее использовать?
|
Короткий ответ Денормализация: Это процесс, обратный нормализации, при котором в структуру базы данных намеренно вводится избыточность (дублирование данных) или объединяются таблицы. - Цель: Повышение производительности запросов на чтение (SELECT) за счет уменьшения количества соединений (JOIN) между таблицами. JOIN'ы могут быть дорогостоящими операциями на больших объемах данных. Полный ответ
|
Какие виды связей существуют в реляционных базах данных?
|
Короткий ответ Между таблицами в реляционных БД существуют три основных вида связей, определяемых кардинальностью (мощностью): Полный ответ Между таблицами в реляционных БД существуют три основных вида связей, определяемых кардинальностью (мощностью):
|
Каким образом осуществляется связь многие ко многим?
|
Короткий ответ Связь "многие-ко-многим" (M:N) между двумя таблицами (например, TableA и TableB) реализуется с помощью промежуточной (связующей, ассоциативной) таблицы (например, TableATableBLink). Полный ответ Связь "многие-ко-многим" (M:N) между двумя таблицами (например,
Пример: |
Что такое первичный ключ и какими свойствами обладает?
|
Короткий ответ Первичный ключ (Primary Key - PK): Это один или несколько столбцов в таблице реляционной БД, значения которых уникально идентифицируют каждую строку в этой таблице. Он служит основным идентификатором записи. - Свойства первичного ключа: 1. Уникальность (Uniqueness): Значение первичного ключа должно быть уникальным для каждой строки таблицы. Не допускается наличие двух строк с одинаковым значением PK. 2. Полный ответ
|
Что такое транзакция?
|
Короткий ответ Транзакция: Это логическая единица работы, состоящая из одной или нескольких последовательных операций с базой данных (чтение, вставка, обновление, удаление), которая должна быть выполнена атомарно. Полный ответ
|
Что такое требования ACID?
|
Короткий ответ ACID – это акроним, описывающий четыре ключевых свойства, гарантирующих надежность транзакций в СУБД: Полный ответ ACID – это акроним, описывающий четыре ключевых свойства, гарантирующих надежность транзакций в СУБД:
ACID-свойства являются стандартом для большинства реляционных СУБД. |
Как происходит процесс проектирования БД?
|
Короткий ответ Проектирование БД – это итеративный процесс, обычно включающий следующие этапы: Полный ответ Проектирование БД – это итеративный процесс, обычно включающий следующие этапы:
|
Какие способы оптимизации БД можешь назвать?
|
Короткий ответ Оптимизация БД направлена на повышение скорости выполнения запросов и эффективности использования ресурсов. Основные способы: Полный ответ Оптимизация БД направлена на повышение скорости выполнения запросов и эффективности использования ресурсов. Основные способы:
|
Что такое партиционирование и по какому принципу оно реализовывается?
|
Короткий ответ Партиционирование (Partitioning): Это процесс разделения одной большой логической таблицы (или индекса) на несколько меньших физических частей (партиций), которые хранятся отдельно, но для пользователя/приложения остаются видимыми как единое целое. Партиционирование выполняется внутри одного экземпляра (сервера) СУБД. Полный ответ
|
Что такое реплицирование?
|
Короткий ответ Репликация (Replication): Это процесс создания и синхронизации точных копий (реплик) базы данных (или её части) на одном или нескольких других серверах. - Цели: - Повышение отказоустойчивости и доступности: Если основной сервер (мастер/primary) выходит из строя, один из серверов-реплик может взять на себя его роль (failover), минимизируя простой. Полный ответ
|
Что такое шардирование?
|
Короткий ответ Шардирование (Sharding): Это техника горизонтального масштабирования базы данных, при которой большая база данных разделяется на более мелкие, независимые части (шарды), и эти части распределяются по разным серверам (узлам). Каждый шард содержит уникальный поднабор данных всей БД. Полный ответ
|
Чем отличается реплицирование и шардирование?
|
Короткий ответ Часто репликация и шардирование используются вместе: каждый шард реплицируется для обеспечения отказоустойчивости. Полный ответ
Часто репликация и шардирование используются вместе: каждый шард реплицируется для обеспечения отказоустойчивости. |
Что такое маппинг данных?
|
Короткий ответ Маппинг данных (Data Mapping): Это процесс установления соответствия (связывания) между элементами данных из двух различных источников или моделей данных. Он определяет, как данные из одного источника преобразуются и переносятся в другой. - Где используется: - Интеграция данных: При объединении данных из разных систем (например, CRM и ERP). - Миграция данных: При переносе данных из старой системы в новую. Полный ответ
|
Какой уровень абстракции знаешь? В чем отличия?
|
Короткий ответ Речь идет о трехуровневой архитектуре ANSI-SPARC, описывающей три уровня представления данных в СУБД для обеспечения независимости данных: Полный ответ Речь идет о трехуровневой архитектуре ANSI-SPARC, описывающей три уровня представления данных в СУБД для обеспечения независимости данных:
Отличия: Уровни предоставляют разную степень абстракции от деталей хранения и структуры данных, обеспечивая независимость данных и удобство для разных ролей (пользователь, разработчик, администратор БД). |
Зачем нужны индексы в таблицах БД? Встречал ли на практике?
|
Короткий ответ Зачем нужны индексы: Индексы – это специальные структуры данных (чаще всего B-деревья), которые создаются для одного или нескольких столбцов таблицы с целью значительного ускорения операций поиска и извлечения данных (SELECT). Полный ответ
|
Что такое грязное чтение в БД?
|
Короткий ответ Грязное чтение (Dirty Read): Это одна из аномалий параллельного доступа к данным в БД, возникающая при низких уровнях изоляции транзакций (например, Read Uncommitted). - Суть: Транзакция A читает данные, которые были изменены транзакцией B, но еще не были зафиксированы (commit) транзакцией B. Полный ответ
|
Какие знаешь команды SQL? Насколько сложные запросы пишешь?
|
Короткий ответ Команды SQL (по категориям): - DDL (Data Definition Language) - Язык определения данных: - CREATE: Создание объектов БД (DATABASE, TABLE, INDEX, VIEW, FUNCTION, PROCEDURE...). - ALTER: Изменение структуры существующих объектов (TABLE - добавить/удалить/изменить столбец, ограничение...). - DROP: Удаление объектов БД. Полный ответ
|
Что такое JOIN-запросы и как какие они бывают?
|
Короткий ответ JOIN-запросы: Это операторы SQL, используемые для объединения строк из двух или более таблиц на основе связанного столбца (условия соединения) между ними. Они позволяют извлекать данные из нескольких таблиц как единое целое. - Основные типы JOIN: 1. INNER JOIN (Внутреннее соединение): Возвращает только те строки, для которых есть совпадение в обеих соединяемых таблицах по условию ON. (Пересечение множеств). 2. Полный ответ
|
Чем TRUNCATE отличается от DELETE?
|
Короткий ответ Хотя обе команды удаляют строки из таблицы, они работают по-разному и имеют разные характеристики: Полный ответ Хотя обе команды удаляют строки из таблицы, они работают по-разному и имеют разные характеристики:
Итог: |
Для чего используется HAVING в SQL?
|
Короткий ответ Предложение HAVING используется для фильтрации результатов запроса после того, как строки были сгруппированы с помощью GROUP BY и для них были вычислены агрегатные функции (COUNT, SUM, AVG, MIN, MAX и т.д.). - Он позволяет задать условие на значения агрегатных функций для групп строк. Полный ответ
|
Чем отличается HAVING от WHERE?
|
Короткий ответ Проще говоря: WHERE фильтрует строки до того, как они попадут в "котел" агрегации, а HAVING фильтрует уже результаты этого "котла" (сгруппированные строки). Полный ответ
Проще говоря: |
Назовите все способы в SQL выбрать данные из первой таблицы, которых нет во второй таблице
|
Короткий ответ Пусть есть TableA и TableB со столбцом id, по которому их можно связать. Нужно выбрать строки из TableA, для которых нет соответствующих id в TableB. Полный ответ Пусть есть
|
Чем отличается UNION от UNION ALL?
|
Короткий ответ Оба оператора используются для объединения результатов двух или более SELECT запросов, которые должны иметь одинаковое количество столбцов и совместимые типы данных в соответствующих столбцах. Полный ответ Оба оператора используются для объединения результатов двух или более
Когда использовать:
Эти ответы охватывают ключевые аспекты баз данных и SQL для собеседования аналитика. Удачи! |