Реляционная база данных
Содержание:
- Операции над отношениями
- Стандартные требованияTypical requirements
- Нереляционные БД
- Хранимые процедуры
- Реляционная модель
- Преимущества и недостатки
- Структура данных в реляционной модели данных
- Чем хороши и плохи нереляционные базы данных: главные достоинства и недостатки
- История
- 5 последних уроков рубрики «Разное»
- Жесткие диски цены
- Причины и предусловия применения не реляционных БД
- История разработки
- Как ускорить работу компьютера (ноутбука) Windows 7
- O(1) vs O(n2)
- Таблица как важная часть реляционной БД
- История
Операции над отношениями
См. также: реляционная алгебра, реляционное исчисление.
Любая операция, результатом которой является отношение, подпадает под понятие реляционной операции и может использоваться в реляционной теории и практике. Ниже приведён список из восьми операций, изначально предложенных создателем реляционной модели Эдгаром Коддом. Все операции из списка, кроме деления, по-прежнему широко востребованы, однако список не является исчерпывающим, то есть по факту используется гораздо большее число реляционных операций.
- Объединение — тело отношения-результата является объединением тел отношений-операндов; схема не изменяется.
- Пересечение — тело отношения-результата является пересечением тел отношений-операндов; схема не изменяется.
- Вычитание — тело отношения-результата получено вычитанием тел отношений-операндов; схема не изменяется.
- Проекция — схема отношения-результата является подмножеством схемы отношения-операнда; тело отношения-результата является нестрогим подмножеством тела отношения-операнда вследствие возможного удаления кортежей-дубликатов.
- Декартово произведение — тело отношения-результата является декартовым произведением тел отношений-операндов; схема результата является конкатенацией схем операндов.
- Выборка — тело отношения-результата является подмножеством тела отношения-операнда: отбираются лишь те кортежи, которые удовлетворяют заданному предикату (условию выборки); схема не изменяется.
- Соединение — выборка над декартовым произведением.
- Деление — делитель является унарным отношением, частное — совпадающие части кортежей делимого, перед которыми стоит делитель.
Стандартные требованияTypical requirements
Часто архитектура нереляционных хранилищ данных отличается от архитектуры реляционных баз данных.Non-relational data stores often use a different storage architecture from that used by relational databases. В частности, они обычно не имеют фиксированной схемы.Specifically, they tend toward having no fixed schema. а также не поддерживают транзакции или ограничивают их область. Из соображений масштабируемости они обычно не включают вторичные индексы.Also, they tend not to support transactions, or else restrict the scope of transactions, and they generally don’t include secondary indexes for scalability reasons.
В таблице ниже приведено сравнение требований каждого нереляционного хранилища данных.The following compares the requirements for each of the non-relational data stores:
ТребованиеRequirement | Хранилище данных документовDocument data | Столбчатое хранилище данныхColumn-family data | Хранилище данных пар «ключ — значение»Key/value data | Хранилище данных графовGraph data |
---|---|---|---|---|
НормализацияNormalization | Денормализированные данныеDenormalized | Денормализированные данныеDenormalized | Денормализированные данныеDenormalized | Нормализированные данныеNormalized |
схемаSchema | Схема при чтенииSchema on read | Семейства столбцов, определенные при записи, схема столбца при чтенииColumn families defined on write, column schema on read | Схема при чтенииSchema on read | Схема при чтенииSchema on read |
Согласованность (между параллельными транзакциями)Consistency (across concurrent transactions) | Настраиваемый уровень согласованности, гарантии на уровне документаTunable consistency, document-level guarantees | Гарантии на уровне семейства столбцовColumn-family–level guarantees | Гарантии на уровне ключейKey-level guarantees | Гарантии на уровне графаGraph-level guarantees |
Атомарность (область транзакции)Atomicity (transaction scope) | КоллекцияCollection | ТаблицаTable | ТаблицаTable | ГрафикGraph |
Стратегия блокировкиLocking Strategy | Оптимистичная (без блокировки)Optimistic (lock free) | Пессимистичная (блокировка строк)Pessimistic (row locks) | Оптимистичная (ETag)Optimistic (ETag) | |
Шаблон доступаAccess pattern | Прямой доступRandom access | Статистические выражения на основе данных большого форматаAggregates on tall/wide data | Прямой доступRandom access | Прямой доступRandom access |
ИндексацияIndexing | Первичный и вторичные индексыPrimary and secondary indexes | Первичный и вторичные индексыPrimary and secondary indexes | Только первичный индексPrimary index only | Первичный и вторичные индексыPrimary and secondary indexes |
Форма представления данныхData shape | ДокументDocument | Таблица с семействами столбцовTabular with column families containing columns | Ключ и значениеKey and value | Граф с ребрами и вершинамиGraph containing edges and vertices |
разреженные;Sparse | ДаYes | ДаYes | ДаYes | НетNo |
Масштабность (большое количество столбцов и атрибутов)Wide (lots of columns/attributes) | ДаYes | ДаYes | НетNo | НетNo |
Размер данныхDatum size | От малого (КБ) до среднего (несколько МБ)Small (KBs) to medium (low MBs) | От среднего (МБ) до большого (несколько ГБ)Medium (MBs) to Large (low GBs) | Небольшой (КБ)Small (KBs) | Небольшой (КБ)Small (KBs) |
Общий максимальный масштабOverall Maximum Scale | Очень большой (ПБ)Very Large (PBs) | Очень большой (ПБ)Very Large (PBs) | Очень большой (ПБ)Very Large (PBs) | Большой (ТБ)Large (TBs) |
Нереляционные БД
Нереляционные базы данных являются типом БД, который принято называть хранилищем типа ключ-значение.
Ориентированы хранилища типа ключ-значение на работу с записями. Т.е. вся информация, которая относится к данной записи, хранится вместе с ней. Домен (хранится в виде таблицы) может содержать бесконечное число разных записей. Он позволяет хранить все связанные данные в одном месте, что приводит к улучшению масштабируемости, т.к. пропадает необходимость соединения данных из разных таблиц. В случае использования РБД необходимо было бы использовать соединения для группирования нужной информации в одном месте.
Хранимые процедуры
Большая часть программирования в РСУБД выполняется с использованием хранимых процедур (SP). Часто процедуры могут использоваться для значительного уменьшения объема информации, передаваемой внутри и вне системы. Для повышения безопасности проект системы может предоставлять доступ только к хранимым процедурам, а не напрямую к таблицам. Фундаментальные хранимые процедуры содержат логику, необходимую для вставки новых и обновления существующих данных. Могут быть написаны более сложные процедуры для реализации дополнительных правил и логики, связанных с обработкой или выбором данных.
Реляционная модель
Эта модель организует данные в одну или несколько таблиц (или «отношений») столбцов и строк с уникальным ключом, идентифицирующим каждую строку. Строки также называются записями или кортежами . Столбцы также называются атрибутами. Как правило, каждая таблица / отношение представляет один «тип объекта» (например, покупатель или продукт). Строки представляют экземпляры этого типа объекта (например, «Ли» или «стул»), а столбцы — значения, приписываемые этому экземпляру (например, адрес или цена).
Например, каждая строка таблицы класса соответствует классу, а класс соответствует нескольким студентам, поэтому связь между таблицей классов и таблицей учеников — «один ко многим».
Преимущества и недостатки
Надлежащие системы управления базами данных помогают получить лучший доступ к данным, а также оптимизировать управление ими. В свою очередь, точечный доступ помогает конечным пользователям быстро и эффективно обмениваться данными в рамках выполнения задач организации.
Модель базы данных |
Год создания |
Преимущества |
Недостатки |
Иерархическая |
1960-й |
Очень быстрый доступ для чтения, четкая структура, технически простой. |
Исправлена структура в дереве, которая не допускает связи между деревьями. |
Сетевая |
Начало 1970-х |
Поддерживает несколько способов доступа к записи, без строгой иерархии. |
Плохой обзор с большими базами данных. |
Реляционная |
1970-й |
Простое, гибкое создание и редактирование, легко расширяемое, быстрый ввод в эксплуатацию, простое расширение, быстрый запуск, очень динамичный контекст. |
Неуправляемый с большими объемами данных, плохой сегментацией, атрибутами искусственного ключа, внешним интерфейсом программирования, плохо отражает свойства и поведение объектов. |
Ориентирована на объекты |
Конец 1980-х |
Лучшая поддержка объектноориентированных языков программирования, хранение мультимедийного контента. Поддерживает объектноориентированные языки программирования, позволяет хранить мультимедийный контент. |
Более низкая производительность с большими объемами данных, мало совместимых интерфейсов. |
Ориентирована на документы |
1980-е |
Соответствующие данные хранятся централизованно в независимых документах, свободной структуре, концепции мультимедиа, относится к классификации сущностей БД. |
Организационная работа относительно высока, часто требует навыков программирования. |
Структура данных в реляционной модели данных
Реляционная модель данных предусматривает структуру данных, обязательными объектами
которой являются:
отношение;
атрибут;
домен;
кортеж;
степень;
кардинальность;
первичный ключ.
Отношение — это плоская (двумерная) таблица, состоящая из столбцов и строк:
ID | Фамилия | Имя | Должность | г.р. |
1 | Петров | Игорь | Директор | 1968 |
2 | Иванов | Олег | Юрист | 1973 |
3 | Ким | Елена | Бухгалтер | 1980 |
4 | Сенин | Илья | Менеджер | 1981 |
5 | Васин | Сергей | Менеджер | 1978 |
Атрибут — это поименованный столбец отношения.
Домен — это набор допустимых значений для одного или нескольких атрибутов.
Кортеж — это строка отношения.
Степень определяется количеством атрибутов, которое оно содержит
Кардинальность — это количество кортежей, которое содержит отношение.
Первичный ключ — это уникальный идентификатор для таблицы.
Соответствие между формальными терминами реляционной модели данных и неформальными:
- отношение (формальный термин) — таблица (неформальный термин);
- атрибут — столбец;
- кортеж — строка или запись;
- степень — количество столбцов;
- кардинальное число — количество строк;
- первичный ключ — уникальный идентификатор;
- домен — общая совокупность допустимых значений.
Чем хороши и плохи нереляционные базы данных: главные достоинства и недостатки
По сравнению с классическими SQL-базами, нереляционные СУБД обладают следующими преимуществами:
- линейная масштабируемость – добавление новых узлов в кластер увеличивает общую производительность системы ;
- гибкость, позволяющая оперировать полуструктирированные данные, реализуя, в. т.ч. полнотекстовый поиск по базе ;
- возможность работать с разными представлениями информации, в т.ч. без задания схемы данных ;
- высокая доступность за счет репликации данных и других механизмов отказоустойчивости, в частности, шаринга – автоматического разделения данных по разным узлам сети, когда каждый сервер кластера отвечает только за определенный набор информации, обрабатывая запросы на его чтение и запись. Это увеличивает скорость обработки данных и пропускную способность приложения .
- производительность за счет оптимизации для конкретных видов моделей данных (документной, графовой, колоночной или «ключ‑значение») и шаблонов доступа ;
- широкие функциональные возможности – собственные SQL-подобные языки запросов, RESTful-интерфейсы, API и сложные типы данных, например, map, list и struct, позволяющие обрабатывать сразу множество значений .
Обратной стороной вышеуказанных достоинств являются следующие недостатки:
- ограниченная емкость встроенного языка запросов . Например, HBase предоставляет всего 4 функции работы с данными (Put, Get, Scan, Delete), в Cassandra отсутствуют операции Insert и Join, несмотря на наличие SQL-подобного языка запросов. Для решения этой проблемы используются сторонние средства трансляции классических SQL-выражений в исполнительный код для конкретной нереляционной базы. Например, Apache Phoenix для HBase или универсальный Drill.
- сложности в поддержке всех ACID-требований к транзакциям (атомарность, консистентность, изоляция, долговечность) из-за того, что NoSQL-СУБД вместо CAP-модели (согласованность, доступность, устойчивость к разделению) скорее соответствуют модели BASE (базовая доступность, гибкое состояние и итоговая согласованность) . Впрочем, некоторые нереляционные СУБД пытаются обойти это ограничение с помощью настраиваемых уровней согласованности, о чем мы рассказывали на примере Cassandra. Аналогичным образом Riak позволяет настраивать требуемые характеристики доступности-согласованности даже для отдельных запросов за счет задания количества узлов, необходимых для подтверждения успешного завершения транзакции . Подробнее о CAP-и BASE-моделях мы расскажем в отдельной статье.
- сильная привязка приложения к конкретной СУБД из-за специфики внутреннего языка запросов и гибкой модели данных, ориентированной на конкретный случай ;
- недостаток специалистов по NoSQL-базам по сравнению с реляционными аналогами .
Подводя итог описанию основных аспектов нереляционных СУБД, стоит отметить некоторую некорректность запроса «NoSQL vs SQL» в связи с разными архитектурными подходами и прикладными задачами, на которые ориентированы эти ИТ-средства. Традиционные SQL-базы отлично справляются с обработкой строго типизированной информации не слишком большого объема. Например, локальная ERP-система или облачная CRM. Однако, в случае обработки большого объема полуструктурированных и неструктурированных данных, т.е. Big Data, в распределенной системе следует выбирать из множества NoSQL-хранилищ, учитывая специфику самой задачи. В частности, для самостоятельных решений интернета вещей (Internet of Things), в т.ч. промышленного, отлично подходит Cassandra, о чем мы рассказывали здесь
А в случае многоуровневой ИТ-инфраструктуры на базе Apache Hadoop стоит обратить внимание на HBase, которая позволяет оперативно, практически в режиме реального времени, работать с данными, хранящимися в HDFS
Нереляционные СУБД находят больше областей приложений, чем традиционные SQL-решения
Источники
- https://ru.wikipedia.org/wiki/NoSQL
- https://aws.amazon.com/ru/nosql/
- https://ru.bmstu.wiki/NoSQL
- https://tproger.ru/translations/types-of-nosql-db/
- https://habr.com/ru/sandbox/113232/
История
Системы управления объектно-реляционными базами данных выросли из исследований, проведенных в начале 1990-х годов. Это исследование расширило существующие концепции реляционных баз данных, добавив концепции объектов . Исследователи стремились сохранить декларативный язык запросов, основанный на исчислении предикатов, в качестве центрального компонента архитектуры. Вероятно, самый известный исследовательский проект, Postgres (Калифорнийский университет в Беркли), породил два продукта, восходящих к этому исследованию: Illustra и PostgreSQL .
В середине 1990-х появились первые коммерческие продукты. К ним относятся Illustra (Illustra Information Systems, приобретенная , которая, в свою очередь, была приобретена IBM ), Omniscience (Omniscience Corporation, приобретенная Oracle Corporation и ставшая первоначальным Oracle Lite) и UniSQL (UniSQL, Inc., приобретенная KCOMS). ). Украинский разработчик Руслан Засухин, основатель Paradigma Software, Inc. , разработал и выпустил первую версию базы данных Valentina в середине 1990-х годов в виде C ++ SDK . К следующему десятилетию PostgreSQL стала коммерчески жизнеспособной базой данных и является основой для нескольких текущих продуктов, поддерживающих ее функции ORDBMS.
Ученые-компьютерщики стали называть эти продукты «системами управления объектно-реляционными базами данных» или СУБД.
Многие идеи ранних работ по объектно-реляционным базам данных в значительной степени вошли в SQL: 1999 через структурированные типы . Фактически, любой продукт, который соответствует объектно-ориентированным аспектам SQL: 1999, может быть описан как продукт для управления объектно-реляционными базами данных. Например, IBM DB2 , база данных Oracle и Microsoft SQL Server заявляют о поддержке этой технологии и делают это с разной степенью успеха.
5 последних уроков рубрики «Разное»
-
Выбрать хороший хостинг для своего сайта достаточно сложная задача. Особенно сейчас, когда на рынке услуг хостинга действует несколько сотен игроков с очень привлекательными предложениями. Хорошим вариантом является лидер рейтинга Хостинг Ниндзя — Макхост.
-
Как разместить свой сайт на хостинге? Правильно выбранный хороший хостинг — это будущее Ваших сайтов
Проект готов, Все проверено на локальном сервере OpenServer и можно переносить сайт на хостинг. Вот только какую компанию выбрать? Предлагаю рассмотреть хостинг fornex.com. Отличное место для твоего проекта с перспективами бурного роста.
-
Создание вебсайта — процесс трудоёмкий, требующий слаженного взаимодействия между заказчиком и исполнителем, а также между всеми членами коллектива, вовлечёнными в проект. И в этом очень хорошее подспорье окажет онлайн платформа Wrike.
-
Подборка из нескольких десятков ресурсов для создания мокапов и прототипов.
Жесткие диски цены
Причины и предусловия применения не реляционных БД
Определение 1
Реляционная база данных – это самое распространенное, проверенное средство для работы со значительным массивом данных. Реляционная модель основана на мощном математическом аппарате теории множеств и математической логики. Эта модель дает возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации БД во внешней памяти.
Но, помимо достоинств модель имеет и некоторые недостатки, к которым можно отнести:
- сложность структуры, вызванную нормализацией;
- низкую производительность, связанную с поиском по ключу;
- ограниченный набор типов данных;
- недостаточное естественное представление данных (используются плоские двумерные таблицы, а не таблицы, имеющие сложную структуру);
- отсутствие возможности рассмотрения данных послойно, используя разные уровни абстракции;
- отсутствие возможности определения набора операторов (методов), которые связаны с определенными типами данных (приходится задавать операции в конкретном приложении);
- возникновение эффекта утраты при определенном сочетании данных третьей и даже второй нормальных форм;
- стоимость, в данном случае дорогое создание и поддержание базы данных.
Достоинствами реляционных баз данных являются простота, устойчивость, гибкость, производительность, масштабируемость и совместимость. На практике однако часто пренебрегают указанными принципами в угоду производительности. Следует отметить, что имеются аналогичные системы, ориентированные на определенную особенность и способные к превышению по этой особенности показателей реляционной БД. Ранее это не представляло собой большую проблему, но в настоящее время это достаточно актуально. Отмечается проблема реляционных баз данных с масштабированием. К примеру, при повышении нагрузки на сервер за ночь моментально обновить аппаратную часть не возможно. Реляционные БД хорошо масштабировать лишь в случае их расположения на единственном сервере. При недостатке ресурсов этого сервера требуется просто увеличить количество машин и распределить нагрузку между ними. В этом случае сложность реляционной БД станет играть против масштабируемости. Если при этом попробовать увеличить количество серверов до сотни или тысячи, сложность возрастет на порядок, а характеристики, делающие реляционные БД привлекательными для пользователя, станут очень быстро снижать к нулю шансы использования их в качестве платформы для больших распределенных систем. С подобными ограничениями необходимо бороться.
История разработки
Реляционная база данных СУБД была изобретена в начале 1970-х Э. Ф. Коддом, молодым ученым-программистом IBM. В специальной статье по РБД он предложил перейти от хранения данных в иерархических структурах к организации их в таблицах, имеющих строки и столбцы.
К 1960-м годам собралось огромное количество данных, хранящихся на новых мэйнфрейм-компьютерах мира, многие из которых были компьютерами IBM System 360. Это стало проблемой для дальнейшего развития цифровых технологий. Расчеты на мэйнфреймах были дорогими, часто стоили сотни долларов в минуту. Существенной частью этих затрат была сложность, связанная с управлением базой данных (БД).
В 1973 году лаборатория Сан-Хосе, ныне Almaden, начала разрабатывать программу под названием System R (реляционый) с целью применить теорию отношений с помощью так называемой промышленной реализации. Это качество стало определяющим, чтобы определить, какие СУБД называются реляционными. В результате реализации этого проекта было изобретена новая революционная система хранения, ставшая основой успеха IBM.
Дон Чемберлин и Рэй Бойс изобрели SQL для структурированных данных, который сегодня наиболее широко применяются. Патриция Селингер разработала оптимизатор на основе затрат, делающий работу с реляционными БД более рентабельной и эффективной. А Раймон Лори изобрел компилятор, сохраняющий процедуры запросов к БД для будущего использования.
В 1983 году IBM представила второе семейство реляционных СУБД DB2 с целью управления данными. Сегодня DB2 по-прежнему производят миллиарды транзакций каждый день, являясь самым успешным программным продуктом IBM. По словам Арвинда Кришны, генерального менеджера IBM Information Management, DB2 продолжает оставаться лидером в области инновационного ПО для реляционных баз данных (РБД).
Доктор Кодд, известный своим коллегам как Тед, был удостоен звания стипендиата IBM в 1976 году, а в 1981 году Ассоциация вычислительной техники вручила ему премию Тьюринга за вклад, внесенный в разработку РБД.
Как ускорить работу компьютера (ноутбука) Windows 7
O(1) vs O(n2)
В настоящее время многие разработчики не заботятся о временной сложности алгоритмов … и они правы!
Но когда вы имеете дело с большим количеством данных (я не говорю о тысячах) или если вы боретесь за миллисекунды, становится критически важным понять эту концепцию. И как вы понимаете, базы данных должны иметь дело с обеими ситуациями! Я не заставлю вас потратить больше времени, чем необходимо чтобы ухватить суть. Это поможет нам позже понять концепцию оптимизации на основе затрат (cost based optimization).
Концепция
Временная сложность алгоритма используется, чтобы увидеть сколько времени займет выполнение алгоритма для данного объема данных. Чтобы описать эту сложность, используют математические обозначения больших О. Эта нотация используется с функцией, которая описывает, сколько операций нужно алгоритму для заданного количества входных данных.
Например, когда я говорю «этот алгоритм имеет сложность O (some_function() )», это означает, что для обработки определенного объема данных алгоритму требуется some_function(a_certain_amount_of_data) операций.
При этом важно не количество данных**, а то, ** как увеличивается количество операций при увеличении объема данных. Сложность по времени не дает точное количество операций, но хороший способ для оценки времени выполнения
На этом графике вы можете увидеть зависимость числа операций от объема входных данных для различных типов временных сложностей алгоритмов. Я использовал логарифмическую шкалу, чтобы отобразить их. Другими словами, количество данных быстро увеличивается с 1 до 1 млрд. Мы можем увидеть, что:
- O(1) или постоянная сложность остаются постоянными (иначе это не будет называться постоянной сложностью).
- O(log(n)) остается низкой даже с миллиардами данных.
- Наихудшая сложность — O(n2), где количество операций быстро растет.
- Две другие сложности так же быстро увеличиваются.
Примеры
При небольшом количестве данных разница между O(1) и O(n2) незначительна. Например, предположим, что у вас есть алгоритм, который должен обрабатывать 2000 элементов.
- Алгоритм O (1) обойдется вам в 1 операцию
- Алгоритм O (log (n)) обойдется вам в 7 операций
- Алгоритм O (n) обойдется вам в 2 000 операций
- Алгоритм O (n * log (n)) обойдется вам в 14 000 операций
- Алгоритм O (n2) обойдется вам в 4 000 000 операций
Как я уже сказал, по-прежнему важно знать эту концепцию при работе с огромным количеством данных. Если на этот раз алгоритм должен обработать 1 000 000 элементов (что не так уж много для базы данных):
- Алгоритм O (1) обойдется вам в 1 операцию
- Алгоритм O (log (n)) обойдется вам в 14 операций
- Алгоритм O (n) обойдется вам в 1 000 000 операций
- Алгоритм O (n * log (n)) обойдется вам в 14 000 000 операций
- Алгоритм O (n2) обойдется вам в 1 000 000 000 000 операций
Я не делал расчетов, но я бы сказал, что с помощью алгоритма O (n2) у вас есть время выпить кофе (даже два!). Если вы добавите еще 0 к объему данных, у вас будет время, чтобы вздремнуть.
Идем глубже
Для справки:
- Поиск в хорошей хеш-таблице находит элемент за O (1).
- Поиск в хорошо сбалансированном дереве дает результат за O (log (n)).
- Поиск в массиве дает результат за O (n).
- Лучшие алгоритмы сортировки имеют сложность O (n * log (n)).
- Плохой алгоритм сортировки имеет сложность O (n2).
Примечание: в следующих частях мы увидим эти алгоритмы и структуры данных.
Есть несколько типов временной сложности алгоритма:
- сценарий среднего случая
- лучший вариант развития событий
- и худший сценарий
Временная сложность часто является наихудшим сценарием.
Я говорил только о временной сложности алгоритма, но сложность также применима для:
- потребления памяти алгоритмом
- потребления дискового ввода / вывода алгоритмом
Конечно, есть сложности хуже, чем n2, например:
- n4: это ужасно! Некоторые из упомянутых алгоритмов имеют такую сложность.
- 3n: это еще хуже! Один из алгоритмов, которые мы увидим в середине этой статьи, имеет эту сложность (и он действительно используется во многих базах данных).
- факториал n: вы никогда не получите свои результаты даже с небольшим количеством данных.
- nn: если вы столкнетесь с этой сложностью, вы должны спросить себя, действительно ли это ваша сфера деятельности …
Таблица как важная часть реляционной БД
Всем известно, что реляционная база данных состоит из таблиц. При этом каждая таблица включает в себя столбцы (поля либо атрибуты) и строки (записи либо кортежи).
Таблицы в таких БД обладают следующими свойствами:
— столбцы размещаются в определённом порядке, формируемом при создании таблицы. Таблица может не иметь ни одной строки, однако хотя бы один столбец должен быть обязательно;
— в таблице не может быть 2-х одинаковых строк. Если вспомнить математику, то такие таблицы называют отношениями (relation). Именно поэтому данные БД и считаются реляционными;
— каждый столбец в пределах таблицы имеет уникальное имя, а все значения в одном столбце должны быть одного типа (дата, текст, число и т. п.);
— на пересечении строки и столбца может быть только атомарное значение (значение, не состоящее из группы значений). Таблицы, которые удовлетворяют этим условиям, считаются нормализованными.
История
Термин «реляционная база данных» был изобретен EF Codd в IBM в 1970 году. Кодд ввел этот термин в свою исследовательскую работу «Реляционная модель данных для больших общих банков данных». В этой и последующих статьях он определил, что он имел в виду под словом «реляционный». Одно хорошо известное определение того, что составляет систему реляционных баз данных, состоит из 12 правил Кодда . Однако никакие коммерческие реализации реляционной модели не соответствуют всем правилам Кодда, поэтому этот термин постепенно стал описывать более широкий класс систем баз данных, который как минимум:
- Представить данные пользователя в виде отношений (презентации в табличной форме, то есть в виде коллекции из таблиц с каждой таблицей , состоящей из набора строк и столбцов);
- Предоставьте реляционные операторы для управления данными в табличной форме.
В 1974 году IBM начала разработку System R , исследовательского проекта по разработке прототипа СУБД. Первой системой, проданной как РСУБД, была система Multics Relational Data Store (июнь 1976 г.). Oracle была выпущена в 1979 году компанией Relational Software, ныне Oracle Corporation .. Ingres и IBM BS12 . Другие примеры СУБД включают DB2 , SAP Sybase ASE и Informix . В 1984 году началась разработка первой СУБД для Macintosh под кодовым названием Silver Surfer, позже она была выпущена в 1987 году как 4th Dimension и известна сегодня как 4D.
Первые системы, которые были относительно точными реализациями реляционной модели, были от:
- Мичиганский университет — Микро СУБД (1969)
- Массачусетский технологический институт (1971)
- Британский научный центр IBM в Питерли — IS1 (1970–72) и его преемник PRTV (1973–79)
Наиболее распространенное определение РСУБД — это продукт, который представляет данные в виде набора строк и столбцов, даже если он не основан строго на теории отношений . Согласно этому определению, продукты СУБД обычно реализуют некоторые, но не все из 12 правил Кодда.
Вторая школа мысли утверждает, что если база данных не реализует все правила Кодда (или текущее понимание реляционной модели, выраженное Кристофером Дж. Дейтом , Хью Дарвеном и другими), она не является реляционной. Эта точка зрения, разделяемая многими теоретиками и другими строгими приверженцами принципов Кодда, дисквалифицирует большинство СУБД как нереляционных. Для пояснения они часто называют некоторые СУБД действительно реляционными системами управления базами данных (TRDBMS), а другие называют псевдореляционными системами управления базами данных (PRDBMS).
По состоянию на 2009 год большинство коммерческих реляционных СУБД используют SQL в качестве языка запросов .
Были предложены и реализованы альтернативные языки запросов, в частности, реализация Ingres QUEL до 1996 года .