Лекция №6 Реляционная алгебра.
Рассмотрим пример.
Здесь отношения уже нормализованы.
Допустим, нам надо получить информацию вида: ФИО, Номер_телефона. Но информация находится в разных таблицах. Как ее получить? Или еще пример. Две абсолютно не связанные таблицы
R1(ID, Bank, sch, summa) – поступления денежных средств на расчетный счет;
R2(ID, Bank, sch, summa) – выбытие денежных средств с расчетного счета.
Предположим клиенту нужен отчет обо всех операциях того или иного расчетного счета. Как получить эту информацию из двух совершенно не связанных таблиц в БД?
Для этого предназначены операции реляционной алгебры:
1. Объединение;
2. Пересечение;
3. Разность;
4. Декартово произведение;
5. Выборка;
6. Проекция;
7. Соединение;
8. Деление.
Разберем их подробно.
Реляционная алгебра – это набор операций, которые можно использовать, чтобы сообщить системе, как из определенных отношений, построить требуемое отношение.
Выражения реляционной алгебры определяются над отношениями, результатом является тоже отношение.
Операции объединения, пересечения и разности требуют от отношений совместимости по типу. Два отношения являются совместимыми по типу, если каждое отношение имеет одинаковые атрибуты, определенные на одинаковых доменах.
1. Объединение. Результатом объединения двух отношений является третье отношение, состоящее из множества записей, принадлежащих и первому отношению и второму.
2. Пересечение. Результатом пересечения двух отношений является третье отношение, состоящее из множества записей, принадлежащих одновременно обоим отношениям.
3. Разность. Результатом разности двух отношений является третье отношение, состоящее из множества записей, принадлежащих первому отношению и не принадлежащих второму отношению.
4. Произведение. Результатом произведения двух отношений является третье отношение, атрибуты которого есть и в первом отношении и во втором отношении, записи множество всевозможных комбинаций между отношениями.
5. Выборка. Результатом выборки записей из отношения является другое отношение, записи которого удовлетворяют некоторому условию.
6. Проекция. Результатом выполнения проекции над отношением является «вертикальное» подмножество этого отношения.
7. Соединение. Результатом соединения является последовательное применения к двум отношениям операции произведения и выборки.
8. Деление. Деление одного отношения на другое создает новое отношение, содержащее атрибуты первого отношения, отсутствующие во втором отношении и кортежи первого отношения, которые совпали с кортежами во втором отношении.
MYSQL.
Типы данных.
Целочисленные типы.
MySQL располагает несколькими разными числовыми типами для работы с этими (и многими другими) видами информации. Наиболее часто числовые типы используют для хранения целых чисел. При задании одного из таких типов можно также указать, что данные беззнаковые, тогда сервер будет знать, что все хранящиеся в столбце данные неотрицательные.
При создании столбца одного из целых типов MySQL выделит для хранения данных соответствующее количество памяти – от 1 байта для типа tinyint до 8 байт для bigint. Поэтому попытайтесь подобрать тип достаточного размера для хранения самого большого из предполагаемых чисел без неоправданного расхода памяти.
Tinyint
Smallint
Mediumint
Int
Bigint
Вещественные типы.
Для чисел с плавающей точкой (таких как 3,1415927) можно выбрать один из типов
Float(p,s)
Double(p,s)
Real
Decimal(m,n)
Numeric
Для типа с плавающей точкой можно задать точность (precision) (об щее допустимое число разрядов, как справа, так и слева от десятичной точки) и масштаб (scale) (допустимое число разрядов справа от десятич ной точки), но эти параметры не являются обязательными.
Типы дата/время.
Наряду со строками и числами довольно часто приходится работать с ин формацией о датах и/или времени. Этот тип данных называют временным (temporal).
Date YYYYMMDD
Datetime YYYYMMDD HH:MI:SS от
Timestamp YYYYMMDD HH:MI:SS
Year YYYY
Time HHH:MI:SS
Символьные типы
Символьные данные могут храниться как строки фиксированной или переменной длины. Разница заключается в том, что строки фиксированной длины справа дополняются пробелами, тогда как строки переменной длины – нет. При определении столбца символьного типа необходимо задать максимальный размер сохраняемой в нем строки. Например, если предполагается хранить строки длиной до 20 символов, можно использовать любое из этих описаний:
CHAR(20) /* строка фиксированной длины */
VARCHAR(20) /* строка переменной длины */ В