В этом блоге я расскажу о некоторых наиболее важных темах в системе баз данных.

  1. Реляционная модель
  2. Реляционная алгебра
  3. Реляционное исчисление
  4. Альтернативные модели данных

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

Примерно в то же время был математик по имени Эдгар Ф. Кодд, которого наняли в IBM в Нью-Йорке. После того, как он начал работать с командой разработчиков, он начал видеть, как программисты снова и снова тратят свое время на модификацию или изменение кода своего приложения базы данных каждый раз, когда изменяется физическая структура данных или схема. Итак, он разработал математическую концепцию, названную реляционной моделью, которая пыталась решить эту проблему. Итак, он написал две статьи об этом, и из этого вытекают три ключевых принципа, которые являются революционными и новаторскими.

а. Храните базу данных в простой структуре данных.

б. Доступ к базе данных через язык высокого уровня.

в. Физическая память осталась до реализации.

Эдгар Ф. Кодд также предложил понятие моделей данных.

Модели данных

Модель данных — это набор концепций для описания данных в базе данных. Схема — это описание определенного набора данных с использованием заданной модели данных.

Реляционная модель

Реляционная модель состоит из трех идей.

а. Структура. Определение отношений и их содержимого.

б. Целостность. Убедитесь, что содержимое базы данных удовлетворяет ограничениям.

в. Манипулирование. Как получить доступ к содержимому базы данных и изменить его.

Отношение — это неупорядоченный набор, содержащий отношение атрибутов, представляющих объекты.

tuple – это набор значений атрибутов (также известный как его домен) в отношении.

  • Значения обычно являются атомарными/скалярными. Это означает, что у вас не может быть списков, массивов и вложенных значений.
  • Специальное значение NULL является членом каждого домена.

Ключи-кандидаты.Каждое отношение имеет по крайней мере один ключ-кандидат, который однозначно идентифицирует отдельный кортеж.

Первичный ключ. Первичный ключ отношения — это ключ-кандидат, который является более «важным», чем другой ключ-кандидат. Некоторые СУБД автоматически создают первичный ключ, если вы его не определили.

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

Языки управления данными (DML)

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

Алгебра отношений

Алгебра отношений, открытая в 1970 году Тедом Коддом, изначально состояла из семи основных операций. Таким образом, эти фундаментальные теории можно использовать для написания запросов для извлечения кортежей управления в нашем отношении. Это основано на алгебре множеств.

  • Выбрать: выбрать подмножество кортежей из отношения, которое удовлетворяет предикату выбора.
SELECT column1_name, column2_name, columnN_name FROM table_name;
  • Проекция: создание отношения с кортежами, которые содержат только указанные атрибуты.
Projection means choosing which columns (or expressions) the query shall return.
Selection means which rows are to be returned.
if the query is
select a, b, c from foobar where x=3;

тогда a, b, c — часть проекции, где x=3 — часть выделения.

  • Объединение.Создайте отношение, содержащее все кортежи, которые появляются либо только в одном, либо в обоих входных отношениях.
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
  • Пересечение.Создайте отношение, содержащее только те кортежи, которые присутствуют в обоих входных отношениях.
SELECT column1 , column2 ....
FROM table_names
WHERE condition

INTERSECT

SELECT column1 , column2 ....
FROM table_names
WHERE condition
  • Разница.Создайте отношение, содержащее только те кортежи, которые появляются в первом, а не во втором входном отношении.
  • Продукт.Создайте отношение, содержащее все возможные комбинации кортежей из входного отношения.
  • Объединения.Создайте отношение, содержащее все кортежи, являющиеся комбинацией двух кортежей (по одному из каждого входного отношения) с общим значением одного или нескольких атрибутов.
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

Реляционное исчисление

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

Кортежное реляционное исчисление — это непроцедурный язык запросов, в отличие от реляционной алгебры. Исчисление кортежей предоставляет только описание запроса, но не предоставляет методы для его решения. Таким образом, он объясняет, что делать, но не объясняет, как это делать.

Исчисление кортежей — это исчисление, которое было создано и представлено Эдгаром Ф. Коддом как часть реляционной модели для предоставления декларативного языка запросов к базе данных для манипулирования данными. в этой модели данных. Он послужил источником вдохновения для языков запросов к базе данных QUEL и SQL, из которых последний, хотя и гораздо менее верен исходной реляционной модели и исчислению, теперь является де-факто стандартным языком запросов к базе данных; диалект SQL используется почти во всех системах управления реляционными базами данных. Мишель Лакруа и Ален Пиротт предложили исчисление предметной области, более близкое к логике первого порядка, и вместе с Коддом показали, что оба этих исчисления (как и реляционная алгебра) эквивалентны по выразительной силе. Впоследствии языки запросов для реляционной модели стали называть реляционно полными, если они могли выражать хотя бы все эти запросы.

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

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

В реляционном исчислении домена переменная фильтрации использует домен атрибутов.

Нереляционная модель данных

  1. Ключ-значение

Храните записи в ассоциативном массиве, который сопоставляет ключ со значением. Иногда называется словарем или хеш-таблицей.

Содержимое значения записи часто непрозрачно для СУБД. Приложение должно интерпретировать его содержимое. Некоторые системы допускают составные значения.

2. График

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

Многие языки запросов NoSQL используют этот метод, например SPARQL, Gremlin, Cypher.

3. Документ

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

Поддержка вложения вместе всех документов для одного объекта. В реляционной модели это называется денормализацией.

4. Семейство столбцов

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

Вывод

Реляционная алгебра определяет примитивы для обработки запросов к реляционной базе данных.

Это из этого блога. Я надеюсь, что вы будете исследовать это больше. Моя идея состояла в том, чтобы дать общее представление о вещах, которые вы не найдете легко.

Спасибо.