Главная » Просмотр файлов » Вордовские лекции

Вордовские лекции (1121814), страница 4

Файл №1121814 Вордовские лекции (Вордовские лекции) 4 страницаВордовские лекции (1121814) страница 42019-05-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Таблица для конъюнкции:

&

true

false

unknown

true

true

false

unknown

false

false

false

false

unknown

unknown

false

unknown

!!!Лектор не любит, когда путают конъюнкцию и дизъюнкцию, и когда забывают их значки

!!!При рассмотрении реляционной модели про Microsoft говорить нельзя

Базы данных 28.09.06

Реляционная модель данных

Дейта сначала проповедовал бога Кодда, а потом впал в ересь.

Страшнее зверя, чем многозначная логика, не бывает.

Решение: возможность расширять ТД специальными значениями. При сравнениями с другими типами дают false, с собой — true.

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

2 года назад пришла идея соратнику Дейта Хью Гаррелу. предположим, что только в одном атрибуте могут находиться неопределённые значения. Тогда можно ввести два отношения. Не проходит ситуация, когда встречаются и когда не знаю, и когда неприменимо, но в этом случае можно завести несколько отношений.

Критерий хороших идей — они простые.

Это работает хорошо, но только в теории. Ибо сколько потребуется дополнительных полей, если в каждом может быть неопределённое значение.

Неопределённые соотношения в текущем SQL:

В нём есть ситуации, когда

  1. Null comp_op V = unknown

  2. Null = Null ≡ true — дубликат

  3. Null = Null ≡ false — если их пересчитывают

Не надо верить, что врождённые пороки можно исправить на уровне ПО.

Ограничения реляционной модели

Ограничения сущности

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

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

Ограничения ссылок

          1. «Внешний» ключ (foreign key)

С термином «ключ» связано много различных эпитетов. Очень хорошим критерием, когда человек отвечает на экзамене — он не понимает, какой природы ключ.

Пусть есть R1(a1, a2, ..., an) R2(b1, b2, ..., bn)

пусть b1 — возможный ключ

аi — внешний ключ, если при любом значении ai существует b1 — внешний ключ или ссылка.

Существует операция эквисоединения, которая позволяет по ai найти кортеж с соответствующим b1.

Как звучит ссылочное ограничение у Кодда: для любого значения внешнего ключа либо существуют совпадающее с ним значение первого (возможного) ключа, либо значение внешнего ключа является полностью неопределённым (NULL).

SQL не соотв реляционной модели. В нём можно определить таблицу, в которой вообще нет возможного ключа.

          1. Дубликаты

Лектор написал маленькую полезную статью Дубликаты, неопределённые значения и другие экзотические прелести SQL.

Дубликаты возникли ещё в System R в IBM под надзором Кодда. Они появились не потому, что они были идиоты или хотели принести гадость миру, а потому, что если у кортежа при выборке не нужен возможный ключ, могут получатся дубликаты.

Лектор утверждает: Дубликаты в результате запроса никому не нужны.

В соотв с моделью дубликаты надо было бы уничтожать. Но это БД. И одно из свойств БД — очень большие объёмы. Могут быть гигабайты данных. Универсальный способ — отсортировать, а это очень дорогая операция, самая дорогая, которая существует в СУБД. И поэтому мультимножества разрешены в SQL. Но и сохранять их тоже можно. Но если их можно получить в результате запроса, то и другими способами тоже можно добавлять.

Лет 10–15 назад лектору нужно было прочитать курс по стандарту SQL, а из подручных материалов ничего, кроме SQL Server, не было. Лектор был ужасно удивлён, когда он увидел демонстрационную БД, в которой половина таблиц определена без возможного ключа. Людей в этом отношении надо воспитывать, и БД надо делать по-человечески.

Вторая возможность SQL: возможность определения возможного ключа с неопределённым значением. И если n возможных ключей, то 2n могут иметь неопределённые значения.

          1. Правила сопоставления внешнего ключа с возможным

У Кодда — либо ссылается, либо не ссылается. В SQL — simple (...), partial (...), full (...).

Одна ссылка может указывать на несколько строк, если внешняя ссылка объявлена как partial.

Ограничения целостности

Спрашивается, как соблюдать ограничения целостности.

Внешние ключи: всё достаточно просто работает при вставке. Проблема, когда кортеж изменяется или меняется. Способы решения:

  1. Каскадное удаление

  2. Запретить удалять, пока есть потомки

  3. Детей объявлять беспризорниками

Ещё одна возможность в SQL: куда-нибудь пристроить детей.

Алгебра

На время рассказа про средства манипулирования данными забыть про неопределённые значения.

В алгебре Кодда 10 операций. Делятся на группы:

  1. Теоретико-множественные операции

1.1. Объединение (union)

1.2. Пересечение (intersect)

1.3. Вычитание (minus)

1.4. Декартово произведение (times)

  1. Специальные реляционные операции

2.1. Ограничение (where)

2.2. Проекция (project)

2.3. Соединение (join). Одна из самых неприятных ошибок на экзамене — перепутать объединение и соединение. Операция соединения — элементами результата являются конкатенации кортежей, степень результата будет (n+m), а количество кортежей сколько получится

2.4. Деление (divide by)

  1. Дополнительные операции

3.1. Присваивание — не совсем операция, но без неё трудно. В обычных ЯП это просто перенос результата, в БД же это гигантские куски внешней памяти. Как сказал Гайсарян, последней модой принято считать, что с каждой переменной связано некое абстрактное местоположение, единственным свойством которого является то, что в него можно записать, и оттуда считать. В БД присваивание связывает выражение с именем

3.2. Переименование. У Кодда не было, придумал Дейта. Эта операция очень важная. Позволяет взять отношение и переименовать атрибут.

Более содержательный рассказ

union, intersect, minus

Основной смысл этих операций понятен. Отношение — это множество, по идее, можно было бы применять эти операции к любым двум отношениям как к множествам. Например, применяем операцию к R1(a1, b1) и R2(a2, c2, d2). Мы получили бы множество, но оно не было бы отношением. Это нехорошо, потому что мы хотим построить не алгебру множеств, а алгебру отношений. Вообще,чем замечательны алгебры? Тем, что они строятся таким образом, что в любом месте, где можно использовать значение, можно использовать выражение, которое это значение производит. Посему требование, что результатом любого действия должно быть отношение. Отсюда ограничение на операнды, которое называется условием совместимости по объединению. Звучит оно так. Операндами этих операций могут быть только операнды, которые обладают одинаковыми схемами. Но в этом случае мы никогда не могли бы объединить R1(a1, b1) с R2(a2, b2). Как раз здесь начинают работать операции переименования. Почти совместимость — два операнда почти совместимы, если их заголовки обладают одинаковыми степенями, и мы можем составить взаимо однозначное соответствие между атрибутами, тогда мы можем привести операнды в соответствие, применив нужное количество раз операцию переименования. До Дейты плохо жили люди. Один из выходов — использование точечной нотации. То есть считали, что атрибуты были вида R1.a1, R2.b2. Но при этом операции объединения не были бы коммутативны, так как возникал вопрос, как именовать атрибуты результата. Но это не алгебра, так как нельзя применить операцию к любым элементам множества.

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

ДП — если есть два множества A{a} и B{b}, то по определению ДП А и В — множество всех возможных упорядоченных пар A×B = {(a, b)}, где a из A, b из B.

В реляционной модели эта операция не имеет смысла. Поэтому Кодд ввёл понятие расширенного ДП. Если есть R1(a1...an), R2(b1...bn), то в результате ДП получаем (a1...an, b1...bn). Фактически это объединение. Всегда ли можно выполнять эту операцию? Требуются отношения, у которых пересечение множества атрибутов пусто. Для расширенного ДП можно сделать любые отношения разными при помощи операции переименования. Если использовать точечную нотацию, то получаются громоздкие имена.

Избыточность этих трёх операций

Три операции избыточны, минус выбросить нельзя, потому что он некоммутативный, можно выбросить пересечение.

R Where condition

По определению это условие вычисляется для каждого кортежа операнда, и в результат попадают только те кортежи, для которых условие истинно.

R where (cond1&cond2) == (R where cond1) intersect (r where cond2)

R where (cond1|cond2) == (R where cond1) plus (r where cond2)

not R where (cond1) == R ninus (r where cond1)

Базы данных 29.09.06

Проекция

Есть отношение R(a1, …, an), тогда проекцией R PROJECT (ai1, …, aim) является схема, в тело отношения которой попадают кортежи, фактически из каждого кортежа выбираются атрибуты, образуются кортежи, степень которых меньше. Результатом являются отношения, посему дубликатов быть не должно. На самом деле операция сложная, так как могут получиться дубликаты, а их быть не должно. Для их удаления требуется дорогая операция сортировки. Лектор рекомендует почитать про алгоритмы внешней сортировки у Кнута или Вирта, но у Вирта хуже и меньше. Некоторый материал есть на www.citforum.ru, автор — лектор.

С точки зрения лектора, именно сложность алгоритма сортировки привела к тому, что есть в SQL. Не даром люди придумали теорию множеств, и там всё красиво и хорошо, если отступают, то получается всякая фигня.

Соединение

Бывает несколько видов соединений:

  1. Соединение общего вида (theta-соединение)

  2. Эквисоединения

  3. Естественные соединения

В SQL есть порядка 14 видов соединений, и одно антисоединение, но эти самые важные.

Соединение общего вида потому и называется соединением общего вида, что включает в себя все виды соединений, кроме внещних соединений. Соед общ вида – операция вторичная, то есть выражается через другие, и определяется следующим образом - ​tcnm R1(a1...an), R2(b1...bm), причсем к ним должна быть применима операция расширенного декартового проезвидения (пересечение отношений схем пусто). R1 theta-JOIN R2 == R(a1...an, b1...bn). Эквивалентно (R1 TIMES R2) WHERE theta cond(a...ain,bj1...bjl), то есть ограничение расшир декартового произвед операндов. Это хорошее определение для математики, но плохое для программирования, так как создаётся впечатление, что так и надо реализовывать.

С точки зрения математики, нельзя перебрать элементы, можно только выяснить, входит элемент или нет. ТЗ Лектора: программирование принято называть наукой, но это не та наука, как математика, физика, биология и т. д.. Физики, математики, биологи работают для того, чтобы обогощать результатами математику,... Программирование же помогает другим людям со своими задачами. Это очень прикладная обцласть, не смотря на все фундаментальные вещи Так что это скорее, не раздел науки, а раздел инжинерии (ударение на предпоследний слог). И некоторые луди очень стесняются слова инжинерия, инжинер. Инжинерия требует практического созидания. Очень трудно жить с таким мировоззрением, так как денег не дают.

//Лектор любит, когда определения говорят лаконично

//Не надо говорить, что схемы не пересекаются. Пересечь можно всё, но результат может быть пуст или нет

Это очень фундаментальное определние, но оно очень не конструктивно.

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

Характеристики

Тип файла
Документ
Размер
589,5 Kb
Тип материала
Предмет
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее