410 просмотров
От 20 февраля

Вопросы и ответы с собеседования по базам данных и SQL

1. Какие есть типы связей таблиц?

Базы данных могут содержать таблицы, которые связаны между собой различными связями. Связь (relationship) представляет ассоциацию между сущностями разных типов. При выделении связи выделяют главную или родительскую таблицу (primary key table / master table) и зависимую, дочернюю таблицу (foreign key table / child table). Дочерняя таблица зависит от родительской. Для организации связи используются внешние ключи. Внешний ключ представляет один или несколько столбцов из одной таблицы, который одновременно является потенциальным ключом из другой таблицы. Внешний ключ необязательно должен соответствовать первичному ключу из главной таблицы. Хотя, как правило, внешний ключ из зависимой таблицы указывает на первичный ключ из главной таблицы. Связи между таблицами бывают следующих типов: - Один к одному (One to one) - Один к многим (One to many) - Многие ко многим (Many to many)

2. Что такое связь "один к одному"?

Данный тип связей встречается не часто. В этом случае объекту одной сущности можно сопоставить только один объект другой сущности. Например, на некоторых сайтах пользователь может иметь только один блог. То есть возникает отношение один пользователь - один блог. Нередко этот тип связей предполагает разбиение одной большой таблицы на несколько маленьких. Основная родительская таблица в этом случае продолжает содержать часто используемые данные, а дочерняя зависимая таблица обычно хранит данные, которые используются реже. В этом отношении первичный ключ зависимой таблицы в то же время является внешним ключом, который ссылается на первичный ключ из главной таблицы. Например, таблица Users представляет пользователей и имеет следующие столбцы: - UserId (идентификатор, первичный ключ) - Name (имя пользователя) И таблица Blogs представляет блоги пользователей и имеет следующие столбцы: - BlogId (идентификатор, первичный и внешний ключ) - Name (название блога) В этом случае столбец BlogId будет хранить значение из столбца UserId из таблицы пользователей. То есть столбец BlogId будет выступать одновременно первичным и внешним ключом.

3. Что такое связь "один ко многим"?

Это наиболее часто встречаемый тип связей. В этом типе связей несколько строк из дочерний таблицы зависят от одной строки в родительской таблице. Например, в одном блоге может быть несколько статей. В этом случае таблица блогов является родительской, а таблица статей - дочерней. То есть один блог - много статей. Или другой пример, в футбольной команде может играть несколько футболистов. И в то же время один футболист одновременно может играть только в одной команде. То есть одна команда - много футболистов. К примеру, пусть будет таблица Articles, которая представляет статьи блога и которая имеет следующие столбцы: - ArticleId (идентификатор, первичный ключ) - BlogId (внешний ключ) - Title (название статьи) - Text (текст статьи) В этом случае столбец BlogId из таблицы статей будет хранить значение из столбца BlogId из таблицы блогов.

4. Что такое связь "многие ко многим"?

При этом типе связей одна строка из таблицы А может быть связана с множеством строк из таблицы В. В свою очередь одна строка из таблицы В может быть связана с множеством строк из таблицы А. Типичный пример - студенты и курсы: один студент может посещать несколько курсов, и соответственно на один курс могут записаться несколько студентов. Другой пример - статьи и теги: для одной статьи можно определить несколько тегов, а один тег может быть определен для нескольких статей. Но на уровне базы данных мы не можем установить прямую связь многие ко многим между двумя таблицами. Это делается посредством вспомогательной промежуточной таблицы. Иногда данные из этой промежуточной таблицы представляют отдельную сущность. Например, в случае со статьями и тегами пусть будет таблица Tags, которая имеет два столбца: - TagId (идентификатор, первичный ключ) - Text (текст тега) Также пусть будет промежуточная таблица ArticleTags со следующими полями: - TagId (идентификатор, первичный и внешний ключ) - ArticleIdId (идентификатор, первичный и внешний ключ) Технически мы получим две связи один-ко-многим. Столбец TagId из таблицы ArticleTags будет ссылаться на столбец TagId из таблицы Tags. А столбец ArticleId из таблицы ArticleTags будет ссылаться на столбец ArticleId из таблицы Articles. То есть столбцы TagId и ArticleId в таблице ArticleTags представляют составной первичный ключ и одновременно являются внешними ключами для связи с таблицами Articles и Tags.

5. Что такое ссылочная целостность данных?

Поддержите проект и получите доступ ко всему контенту всего за 290

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

Поддержите проект и получите доступ ко всему контенту всего за 290

7. Что такое первая нормальная форма?

Поддержите проект и получите доступ ко всему контенту всего за 290

8. Что такое вторая нормальная форма?

Поддержите проект и получите доступ ко всему контенту всего за 290

9. Что такое третья нормальная форма?

Поддержите проект и получите доступ ко всему контенту всего за 290

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

Поддержите проект и получите доступ ко всему контенту всего за 290

11. Что такое транзакции?

Поддержите проект и получите доступ ко всему контенту всего за 290

12. Какие есть уровни изоляции транзакций?

Поддержите проект и получите доступ ко всему контенту всего за 290

13. В чем разница между транзакцией и batch?

Поддержите проект и получите доступ ко всему контенту всего за 290

14. Какие есть уровни изолированности транзакций?

Поддержите проект и получите доступ ко всему контенту всего за 290

15. Что такое индексы в теории баз данных?

Поддержите проект и получите доступ ко всему контенту всего за 290

16. Какие есть типы индексов?

Поддержите проект и получите доступ ко всему контенту всего за 290

17. Что такое первичный ключ?

Поддержите проект и получите доступ ко всему контенту всего за 290

18. Что такое внешний ключ?

Поддержите проект и получите доступ ко всему контенту всего за 290

19. В чем разница между базой данных и схемой?

Поддержите проект и получите доступ ко всему контенту всего за 290

20. Что такое временые таблицы?

Поддержите проект и получите доступ ко всему контенту всего за 290

21. Что такое SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

22. Какие существуют типы данных в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

23. В чем разница между CHAR и VARCHAR?

Поддержите проект и получите доступ ко всему контенту всего за 290

24. Что такое self-join?

Поддержите проект и получите доступ ко всему контенту всего за 290

25. Что такое ограничения в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

26. Что такое псевдонимы в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

27. Что такое параллелизм в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

28. Зачем нужен оператор GROUP BY?

Поддержите проект и получите доступ ко всему контенту всего за 290

29. Зачем нужен оператор ORDER BY?

Поддержите проект и получите доступ ко всему контенту всего за 290

30. Из каких групп оператов состоит SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

31. Что такое внутренний и внешний JOIN?

Поддержите проект и получите доступ ко всему контенту всего за 290

32. Что такое коррелированные и некоррелированные подзапросы?

Поддержите проект и получите доступ ко всему контенту всего за 290

33. Что такое обобщенное табличное выражение (CTE)?

Поддержите проект и получите доступ ко всему контенту всего за 290

34. Зачем нужны операторы DELETE и TRUNCATE?

Поддержите проект и получите доступ ко всему контенту всего за 290

35. Зачем нужны операторы HAVING и WHERE?

Поддержите проект и получите доступ ко всему контенту всего за 290

36. Зачем нужен оператор UNION?

Поддержите проект и получите доступ ко всему контенту всего за 290

37. Зачем нужен оператор CASE?

Поддержите проект и получите доступ ко всему контенту всего за 290

38. Что делает операция MERGE в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

39. Какова роль ключевого слова WITH в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

40. В чем разница между операторами BETWEEN и IN?

Поддержите проект и получите доступ ко всему контенту всего за 290

41. Что такое хранимая процедура?

Поддержите проект и получите доступ ко всему контенту всего за 290

42. Какие бывают типы функций в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

43. В чем разница между функцией и хранимой процедурой?

Поддержите проект и получите доступ ко всему контенту всего за 290

44. Что такое оконная функция?

Поддержите проект и получите доступ ко всему контенту всего за 290

45. В чем разница между RANK, DENSE_RANK и ROW_NUMBER?

Поддержите проект и получите доступ ко всему контенту всего за 290

46. Что такое скалярные и табличные функции?

Поддержите проект и получите доступ ко всему контенту всего за 290

47. Какие операции и функции для работы с символами вы знаете?

Поддержите проект и получите доступ ко всему контенту всего за 290

48. Как работает оптимизатор SQL-запросов?

Поддержите проект и получите доступ ко всему контенту всего за 290

49. Что такое SQL-представление?

Поддержите проект и получите доступ ко всему контенту всего за 290

50. Какие бывают виды представлений в SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

51. В чем разница между представлением и таблицей?

Поддержите проект и получите доступ ко всему контенту всего за 290

52. Что такое триггер?

Поддержите проект и получите доступ ко всему контенту всего за 290

53. Что такое вложенный триггер

Поддержите проект и получите доступ ко всему контенту всего за 290

54. Какие есть стратегии резервного копирования и восстановления БД?

Поддержите проект и получите доступ ко всему контенту всего за 290

55. Что такое T-SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

56. Что такое ETL (Extract, Transform, Load) в контексте баз данных?

Поддержите проект и получите доступ ко всему контенту всего за 290

57. Что такое динамический SQL?

Поддержите проект и получите доступ ко всему контенту всего за 290

58. Что такое блокировка?

Поддержите проект и получите доступ ко всему контенту всего за 290

59. Какие есть типы блокировок?

Поддержите проект и получите доступ ко всему контенту всего за 290

60. В чем разница между блокировкой и deadlock?

Поддержите проект и получите доступ ко всему контенту всего за 290
Хотите стать частью сообщества Девстанции?
Вступайте в наш чат в Telegram

Также в этой категории

Шпаргалка
  10 вопросов

Всё о репликации баз данных

Описание понятий и процессов репликации БД

265 просмотров
От 8 октября 2023
Шпаргалка
  11 вопросов

Теория шардинга баз данных

О распределении данных между серверами

312 просмотров
От 10 октября 2023

Вам может быть интересно

Шпаргалка
  13 вопросов

Общие принципы и понятия ООП

Вопросы для собеседования по теме ООП

254 просмотра
От 7 октября 2023
Шпаргалка
  28 вопросов

Паттерны проектирования с примерами

Раскрытие на примерах почти всех паттернов проектирования

319 просмотров
От 7 октября 2023
Шпаргалка
  15 вопросов

Шпаргалка по Domain-Driven Design

Вопросы и ответы про предметно-ориентированное проектирование

233 просмотра
От 27 января
Задачник
  43 задачи

Топ 45 алгоритмических задач по Python

Разбор решений для задач с собеседований Python-разработчиков

4745 просмотров
От 15 февраля
Шпаргалка
  34 вопроса

Шпаргалка по вопросам о Python

Вопросы для собеседования Python-разработчика

694 просмотра
От 30 января
Шпаргалка
  7 вопросов

Коллекция полезных команд для Docker

Большая шпаргалка по всем командам Docker

261 просмотр
От 12 октября 2023

Топ тредов

Gravatar for 9tokio
Tokio:
то что раньше было бесплатным теперь платное - вот это я понимаю

Последнее сообщение:
Логотип Девстанции
Девстанция:
Спасибо за поддержку проекта :) Повышение качества контента - один из важнейших приоритетов. Этому м...
3 сообщения
265 просмотров

Логотип Девстанции
Девстанция:
Поиск людей для совместной разработки IT-стартапов

Последнее сообщение:
В этом треде пока нет сообщений
0 сообщений
139 просмотров

Логотип Девстанции
Девстанция:
Какой язык программирования выбрать в качестве первого?

Последнее сообщение:
Gravatar for 2kokke
Kokke:
Python или JS - универсально. Но по уму надо бы с чего-то строгого начинать и достаточно низкоуровне...
1 сообщение
174 просмотра

Все категории