Программирование - это просто
Advertisement
Главная arrow Математика и информатика arrow Теория баз данных. arrow Теория баз данных. Урок 1. Введение в реляционную алгебру.
23.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Теория баз данных. Урок 1. Введение в реляционную алгебру. Печать E-mail
Автор megabax   
24.11.2023 г.
New Page 1

Теория баз данных. Урок 1. Введение в реляционную алгебру.

Вам, возможно,  знакомы термины: реляционная база данных и нормальные формы реляционных баз данных. Наверняка вы слышали об этих терминах но толком не знаете, что это такое и хотите узнать, поэтому читаете эту статью. Но для того, что бы понять все это, необходимо освоить азы реляционной алгебры, чем мы с вами сейчас и займемся. Сначала посмотрим, как термин "реляционной алгебра" определяется по научному: реляционная алгебра — это замкнутая система операций над отношениями в реляционной модели данных. Операции реляционной алгебры также называют реляционными операциями. Согласитесь, не очень понятно. Какое то масло масляное. Поэтому давайте попробуем сформулировать все это простыми словами.

И так, сначала определимся с термином "реляционный". Он означает, в переводе с английского, буквально "связь", "отношение", "зависимость". Именно поэтому реляционную алгебру еще называют "алгеброй отношений".  Так что, если говорить простыми словами, то реляционная алгебра - это набор каких-то операций над отношениями. Ну, или над связями, если кому то так покажется проще.  Реляционная алгебра является замкнутой, что означает, что в результате операций над этими самыми отношениями получаются, опять же,  отношения.

Теперь, что бы понять, что же за операции можно делать над этими отношениями, давайте все таки разберем, а что же, собственно, такое, это отношение. Начну с простого определения, а потом сформулирую это по научному. Итак, отношение - это просто таблица. Сама обычная такая таблица, например, вот такая:

ФИО Оклад Премия
Иванов Иван Иванович 20000 10000
Петров Петр Петрович 19000 10000
Кривоногов Дмитрий Васильевич 15000 5000
Анисимова Анна Павловна 17000 6000

Столбцы в этой таблице - это домены. А строки - кортежи.

По научному определения отношения звучит так  "Пусть дана совокупность типов данных T1, T2, ..., Tn, называемых также доменами, не обязательно различных. Тогда n-арным отношением R, или отношением R степени n называют подмножество декартовa произведения множеств T1, T2, ..., Tn. Отношение R состоит из заголовка {схемы) и тела. Заголовок представляет собой множество атрибутов {именованных вхождений домена в заголовок отношения), а тело — множество кортежей, соответствующих заголовку".

Еще более научно определение звучи так:

  • Заголовок {или схема) H отношения R — конечное множество упорядоченных пар вида {Ai, Ti), где Ai — имя атрибута, а Ti — имя типа {домена), i=1,…, n. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различными {уникальными).

  • Тело B отношения R — множество кортежей t. Кортеж t, соответствующий заголовку H, — множество упорядоченных триплетов {троек) вида <Ai, Ti, vi>, по одному такому триплету для каждого атрибута в H, где vi — допустимое значение типа {домена) Ti. Так как имена атрибутов уникальны, то указание домена в кортеже обычно излишне. Поэтому кортеж t, соответствующий заголовку H, нередко определяют как множество пар {Ai, vi).

Количество кортежей {строк) называют кардинальным числом или мощностью отношений, а количество столбцов - его арностью.

Теперь давайте посмотрим на нашу таблицу по научному. И так, у нас есть определение отношения. Оно состоит из заголовка, который в терминах реляционной алгебры будет выглядеть вот так: {{"ФИО", строка}, {"Оклад",число}, {"Премия",число}}. Первая строка тела данного отношения будет выглядеть вот так: {{"ФИО","Иванов Иван Иванович"}, {"Оклад",20000},{"Премия",10000}}.

Отношение обладает следующими свойствами:

  • В отношении нет двух одинаковых элементов (кортежей).

  • Порядок кортежей в отношении не определён.

  • Порядок атрибутов в заголовке отношения не определён

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

Вообще, в разных базах в таблицах, как правило, добавляется какой то уникальный идентификатор. В 1С это обычно "Код"*:

Теория баз данных. Урок 1. Введение в реляционную алгебру.

Хотя, "Код" - это только для пользователя. И, существует возможность, настроить 1С таким образом, что бы в определенных случаях код не был уникальным. поэтому в таблицах базы данных, с которой работает 1С добавлен еще один код, скрытый от пользователя, он называется УИД - уникальный идентификатор.

В MySQL такой код часто называют Id:

Теория баз данных. Урок 1. Введение в реляционную алгебру.

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

Итак, об ошибках. Как исключить, ну или хотя бы свести к минимуму человеческий фактор при заполнении базы данных? Как вариант - ограничить количество возможных значений для ввода. Например, в поле "оклад" запретить вводить отрицательные числа, или вообще установить некий диапазон от и до (вилку окладов). А в поле "ФИО" вместо ввода текста давать выбирать из списка готовый имен, фамилий и отчеств. Такое действие носит название нормализация баз данных, существует несколько так называемых нормальных форм, шесть основных и еще пара - тройка дополнительных. Но об этом речь пойдет в будущих уроках, а сейчас мы продолжим знакомство с реляционной алгеброй.

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

T1={"Иванов Иван Иванович","Петров Петр Петрович","Кривоногов Дмитрий Васильевич","Анисимова Анна Павловна"}

Если для оклада мы установили ограничение от 3000 до 100000, то

T2={3000,3001,3002,...,99999,100000}

Иными словами, типы мы обозначили как множества. О множествах, кстати, можно прочитать в первых нескольких уроках из серии "Математический анализ для чайников". Также  замечу, что в отличии от таблиц, отношение удовлетворяют следующим пяти условиям:

  1. Нет упорядочивания строк сверху-вниз (другими словами, порядок строк не несет в себе никакой информации).
  2. Нет упорядочивания столбцов слева-направо (другими словами, порядок столбцов не несет в себе никакой информации).
  3. Нет повторяющихся строк.
  4. Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).
  5. Все столбцы являются обычными. «Обычность» всех столбцов таблицы означает, что в таблице нет «скрытых» компонентов, которые могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временных меток.

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


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "1С:Бухглатерия предприятия 2.0 на платформе 8.2", авторское право на который принадлежит корпорации фирме 1С.


 

 

 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги