Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Унарные и бинарные операции реляционной алгебры.




Унарные операции: Бинарные операции:   1. Выборка Смысл операции в том, что выбираются строчки, которые подходят по условию F. Попробуем из таблицы «Фрукты» выбрать все яблоки:   2. Проекция Проекция показывает только те характеристики объектов, которые нам нужны. Если мы хоти увидеть только наименования фруктов, которые есть в магазине, проекция будет выглядеть следующим образом: 3. Произведение Произведение – это сцепление строчек, то есть объектов таблицы, по принципу каждый с каждым. Безучастных не бывает :) Представим, что покупатели так и не смогли выбрать что-то конкретное и заказали какое-то количество каждого сорта фруктов: 4. Соединение Соединение происходит по общему столбцу, соответственно поставленному условию. Соединим таблицу «Фрукты» с содержимым заказов при условии, что идентификационный номер фрукта в списке больше его номера в заказе. Получится полная бессмыслица конечно… :wacko: Короче смотрим: Несмотря на абсурдность такого соединения, можно сказать, что если мы заказали фрукты с определенным номером, то получим в соответствие все фрукты что есть в списке с большим номером. 5. Эквисоединение Соединение выполняется так же как и предыдущее, только значения общего столбца должны совпадать. Выполнив такое соединение мы узнаем в каком заказе какие фрукты находятся, так как получим напротив каждого номера его расшифровку: Дальше было отмечено, что соединяя по равным значениям общих атрибутов можно получить эквисоединение, но это еще не все… ... и если посмотреть на эквисоединение, то наблюдается дублирование значений: Зачем дублировать значения, когда можно их не дублировать :) Поэтому смотрим следующую операцию: 6. Естественное соединение Выбрасываем из эквисоединения повторяющийся столбец и готово: 7. Полусоединение Из двух таблиц полусоединение выделяет только те строчки первой таблицы, которые могли бы соединиться со строчками второй таблицы. Возьмем сотрудников. Они любят работать, но еще больше любят получать зарплату :whistle: Зарплата хранится в отдельной таблице, доступа к которой у них нет. А посмотреть то хочется!! :yes: И тогда хитрые сотрудники решают воспользоваться полусоединением, то есть выбрать себя в том случае, если их id соединился со строчкой в таблице зарплаты: Итог – Сидорову не повезло :D 8. Левое внешнее соединение Соединяя две таблицы левым внешним соединением, мы получим абсолютно все строчки из левой таблицы и только те, что соединились из правой. Если соединения не нашлось, напротив строки будет NULL, то есть пустота. Посмотрим, кто из сотрудников не получил зарплату?? :)     9. Правое внешнее соединение На самом деле то же самое, если таблицы поменять местами :whistle: Можно привести еще одно замечательное свойство левого правого соединения – поиск ошибок при заполнении таблиц. Предположим, что целостность данных не поддерживается, а при заполнении таблицы с зарплатой неверно ввели код сотрудника: Из соединения видно, что зарплату начислили сотруднику, который в фирму еще не устроился. Вот так легко найти ошибки при заполнении :yes: Про операции объединения, пересечения, разности и деления расскажу в следующей теме, а сейчас несколько замечаний: Замечание 1: Объединение и соединение – разные вещи. Соединение происходит по одному общему столбцу, а объединение предполагает, что таблицы одинаковые по структуре (то есть все столбцы однотипные). Если в таблицах по 3 столбца, то при соединении мы получим 6 столбцов (в естественном соединении – 5), а при объединении их так и останется три. Замечание 2: В MS Access допущена довольно серьёзная ошибка. Если посмотреть свойства связи при соединении двух таблиц, то там написано «параметры объединения». НЕ ВЕРЬТЕ ЭТОМУ!! :no: Это параметры соединения :yes: А вообще, тому, как на практике реализуются все приведенные операции, будет посвящена отдельная тема.   В этой теме будут рассмотрены операции для таблиц, совместимых по объединению. То есть таблицы должны быть абсолютно одинаковые по структуре – одинаковое число столбцов, одинаковые типы данных в соответствующих столбцах. К делению правда это не относится, потому что эта операция немного сложнее, чем кажется на первый взгляд. Зато непосредственно относится к трем операциям, приведенным в этой статье.   10. Объединение Нет ничего проще, сначала перечисляем все строки первой таблицы, а потом все строки из второй. Только нужно помнить, что повторяющихся строк быть не должно: 11. Пересечение В пересечение двух таблиц входят строки, которые есть и в первой и во второй таблицах: 12. Разность При вычитании одной таблицы из другой, остаются только те строки первой таблицы, которых нет во второй: И, наконец, последняя операция над таблицами, самая сложная для восприятия – деление :wacko: Для того чтобы показать как она работает, привожу следующий пример: 13. Деление Когда одна таблица делится на другую, из первой таблицы выбираются те строки, которые подходят по шаблону значений строк второй таблицы. Возьмем пользователей сайта знакомств и параметры, которые удовлетворяют чьим-то вкусам: Просто отличная база получилась :D Теперь поделим всех на рыжих и толстых :whistle: В результате получим: Алгоритм выполнения такой операции можно описать тремя формулами: Здесь С = {Код_рольз., Ник, Пол, Возраст}, то есть разность атрибутов таблиц Пользователи и Характеристики. Все очень просто :rolleys:

 


Поделиться:

Дата добавления: 2015-04-21; просмотров: 135; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.005 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты