Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.41 Mб
Скачать

Лекция №6 Реляционная алгебра.

Рассмотрим пример.

З десь отношения уже нормализованы.

Допустим, нам надо получить информацию вида: ФИО, Номер_телефона. Но информация находится в разных таблицах. Как ее получить? Или еще пример. Две абсолютно не связанные таблицы

R1(ID, Bank, sch, summa) – поступления денежных средств на расчетный счет;

R2(ID, Bank, sch, summa) – выбытие денежных средств с расчетного счета.

Предположим клиенту нужен отчет обо всех операциях того или иного расчетного счета. Как получить эту информацию из двух совершенно не связанных таблиц в БД?

Для этого предназначены операции реляционной алгебры:

  1. Объединение;

  2. Пересечение;

  3. Разность;

  4. Декартово произведение;

  5. Выборка;

  6. Проекция;

  7. Соединение;

  8. Деление.

Разберем их подробно.

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

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

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

  1. Объединение. Результатом объединения двух отношений является третье отношение, состоящее из множества записей, принадлежащих и первому отношению и второму.

  1. П ересечение. Результатом пересечения двух отношений является третье отношение, состоящее из множества записей, принадлежащих одновременно обоим отношениям.

  1. Разность. Результатом разности двух отношений является третье отношение, состоящее из множества записей, принадлежащих первому отношению и не принадлежащих второму отношению.

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

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

  1. Проекция. Результатом выполнения проекции над отношением является «вертикальное» подмножество этого отношения.

  1. Соединение. Результатом соединения является последовательное применения к двум отношениям операции произведения и выборки.

  1. Деление. Деление одного отношения на другое создает новое отношение, содержащее атрибуты первого отношения, отсутствующие во втором отношении и кортежи первого отношения, которые совпали с кортежами во втором отношении.

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 YYYY­MM­DD

Datetime YYYY­MM­DD HH:MI:SS от

Timestamp YYYY­MM­DD HH:MI:SS

Year YYYY

Time HHH:MI:SS

Символьные типы

Символьные данные могут храниться как строки фиксированной или переменной длины. Разница заключается в том, что строки фиксированной длины справа дополняются пробелами, тогда как строки переменной длины – нет. При определении столбца символьного типа необходимо задать максимальный размер сохраняемой в нем строки. Например, если предполагается хранить строки длиной до 20 символов, можно использовать любое из этих описаний:

CHAR(20) /* строка фиксированной длины */

VARCHAR(20) /* строка переменной длины */ В

Текстовые типы. (большой бинарный объект)

Если нужно хранить данные, для которых не хватит 255 символов столбца типа char или varchar, вам понадобится один из текстовых типов.

Tinytext 255

Text 65 535

Mediumtext 16 777 215

Longtext 4 294 967 295

Выбирая тот или иной текстовый тип, необходимо помнить следующее:

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

• В отличие от столбца типа varchar, при загрузке данных в такой столбец пробелы в конце строки не удаляются.

• При использовании столбцов типа text для сортировки или группировки используются только первые 1024 байта, хотя при необходимости это ограничивающее значение можно увеличить.

• Разные текстовые типы присущи исключительно MySQL. У SQL Server для больших символьных данных есть только один тип text, а в DB2 и Oracle применяется тип данных под названием clob (Character Large Object, большой символьный объект). При создании столбца для данных произвольного форм

Примеры:

Сокращенные названия государств

Индекс города

Фамилия человека

Описание товара

Хранения отзыва о компании

Названия месяцев

Столбец, являющийся индикатором поставки заказа покупателю

Первичный ключ для таблицы транзакций, генерируемый системой

Номер позиции в клиентской электронной корзине для покупок

Данные позиционирования сверлильного станка для печатных плат

Дата будущего события, например доставки заказа покупателю

Фактическая дата доставки заказа покупателю

Дата и время изменения пользователем определенной строки таблицы

Дата рождения сотрудника

Время, необходимое для монтажа электропроводки в автомобиле на сборочном конвейере

MySQL - это система управления реляционными базами данных.

Программное обеспечение MySQL - это ПО с открытым кодом.

Большинство реляционных баз данных, за исключением MS Access, состоят из двух отдельных компонентов: «back-end», где хранятся данные и «front-end» — пользовательский интерфейс для взаимодействия с данными. Этот тип конструкции достаточно умный, так как он распараллеливает двухуровневую модель программирования, которая отделяет слой данных от пользовательского интерфейса и позволяет сконцентрировать рынок ПО непосредственно на улучшении своих продуктов. Эта модель открывает двери для третьих сторон, которые создают свои приложения для взаимодействия с различными базами данных.

MySQL – это сервер, для работы с сервером имеется консольный клиент mysql.

В Интернете каждый может найти много продуктов для разработки и администрирования баз данных MySQL.  Приведу примеры самых распространенных инструментов разработки:

MySQL Workbench

Navicat 

PHPMyAdmin

dbForge Studio for MySQL

Нет смысла изучать какую-то одну из этих программ. Если вы изучите команды языка SQL, то сможете работать в любой среде. Поэтому мы будем учиться писать команды и запросы в консоли. Но для удобства иногда будем использовать MySQL Workbench.

Немного поговорим о консоли. Она входит в поставку. Она умеет практически все, что нужно для создания и администрирования БД.

Особенности работы в консоли:

Окончание команды обозначается точкой с запятой. Команды могут писаться через энтер, как только прошла точка с запятой, так значит команда пошла на выполнение. Команду можно закончить и по другому: \g – выводит как таблицу. или \G – выводит в виде списка.

Если ошиблись, то отменять команду: \с или clear

Все команды можно увидеть набрав команду help.

Команды могут быть буквенными либо в сокращенном виде.

\t \T – автоматом пишется в файле или отключает запись в файл.

Source (\.) – прогон команд из файла.

Комментарии пишут следующим образом:

-- одну строку закомментировать

/* */ - блок комментарий.

# - тоже однострочный комментарий.

Посмотрим в консоли команды:

SELECT user, password FROM mysql.user;

SELECT now();

SHOW DATABASES;

Примеры:

CREATE DATABASES module3;

CREATE DATABASES module 3; //ошибка

CREATE DATABASES `module 3`; //нет ошибки

CREATE DATABASES IF NOT EXISTS module3; //если не существует, то создать

DROP DATABASES `module 3`;

CREATE DATABASES IF NOT EXISTS module3; //если не существует, то удалить

USE module3; //использовать базу данных