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

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

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

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

QUEL использовался в университете Кэмбридж (Ingres). - Стоунбрейкер

Alpha - был первый декларативный язык лектора.

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

В SQL есть доно свойство, которое люди хвалт, но оно удручает временами. В нём разрешается писать вложенные подзапросы в разных местах. Но в языке ещё есть кванторы. В этом случае они себя ведут по-дурацки, ибо пишется целый запрос, который вырабатывает да или нет. В QUEL кванторы можно писать без подзапросов.ы

//Педедыв

В основе исчислений, самое дазовое понятие – переменная. Так как мы говорим про исчисление кортежей, то кортежная переменная. Чтобы можно было ими пользоваться, их нужно объявлять (ситаксис QUEL):

RANGE a IS r //a.b

Правильно построенная формула (Well-Formal Formula):

Простое условие – правильно формула, в скобках – простое условие:

СЛУЖАЩИЙ.СЛУ_НОМ = 2934

СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК

Конструкции:

NOT, AND, OR, IF ... THEN

IF a THEN b = NOT a OR b;

Читатель нашёл у меня ошибку, но, естественно, он был не прав.

Из лжи следует всё, что угодно

Иногда формулировка с помощью импликаций выглядит заманчиво, затягивает, она и в sQL есть.

Приоритеты: NOT > AND > OR

если for m – WFF, сопр-простое сравнение

NOT form, comp AND form? Comp OR form, IF comp THEN form – WFF

Есть правильно построенная формула. Мы хотим определить формулу истинности, то есть те выражения, которые приводят её в TRUE. Мы довольно долго думали, и в результате придумали использовать вложенные циклы.

Следующий шаг – прямого аналога в алгебре нет – квантор.

Функция, Аргумент – множество, вырабатывает тру или фолс.

Поддерживается два квантора:

Квантор существования EXISTS

FORALL

EXISTS var(form), FORALL var(form) – WFF

Свободные и связанные переменные

Переменные, которые ни разу не встречаются под знаком квантора, называются свободными.

Связанные переменные – закрытые, только под квантором, влияют на способ вычисления формулы.

Пусть есть формула:

есть СЛУ1 и СЛУ2, определены на отношении СЛУЖАЩИЕ

Формула:

EXISTS СЛУ2(СЛУ1.СЛУ_ЗАРП > СЛУ2.СЛУ_ЗАРП) – все с неминимальной зарплатой.

Циклы:

foreach СЛУ1

foreach СЛУ2

FORALL СЛУ2(СЛУ1.СЛУ_ЗАРП >= СЛУ2.СЛУ_ЗАРП) – все с максимальной зарплатой.

Нет условия на несравнение с самим собой, ибо это не влияет.

Здесь точно внутринний цикл будет крутиться до конца, ибо квантор такой.

В одну формулу может входить несколько подформул, в которые одна и та же связанная переменная может входить в разном качестве.

EXISTS СЛУ2(СЛУ1.ПРО_НОМ = СЛУ2.ПРО_НОМ AND СЛУ1.СЛУ_НОМ != СЛУ2.СЛУ_НОМ) AND FORALL СЛУ2(IF СЛУ1.ПРО_НОМ = СЛУ2.ПРО_НОМ THEN СЛУ1.СЛУ_ЗАРП = СЛУ2.СЛУ_ЗАРП)

Нельзя обойтись одним вхождением, ибо нужны и квантор существования, и квантор всеобщности.

SQL и вложенные запросы:

Кванторы появились в SQL не так давно.

QUEL был лучше, чем SQL. Но SQL его загубил.

Зато в SQL очень давно существуют другие агрегатные функции (возвращают халявное значание, а получают множество) – COUNT, MINIMUM, MAXIMUM, AVERAGE. Для использования их нужно сформировать множество, то есть использовать подзапрос. В SQL мы с тем же самым успехом могли написать

min СЛУ2.СЛУ_ЗАРП

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

Что осталось сделать:

Научились строить формулы, в которых есть свободные переменныею Не хватает конструкции, которая говорит, что мы хотим получить.

БД 12.10.06

Три варианта

Целевой список (target list)

var.attr var_имя свобю переменной WFF

var == var.attr1, Var.attr2, ... , var.attrn – порядок не важен, в SQL не так.

new_name = vaar.attr – аналог RENAME

target_list WHERE WFF – выражение реляционного исчисления, аналог проекции

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

При такой интерпретации много шагов, каждый шаг – шаг цикла. Это результирующее отношение строится кусочками, за каждый проход добавляется один кортеж. На кажом шаге мы знаем, откуда взялся кортеж -результат. Легко преобразовать язык запросов в язык обновлений. Вместо того, чтобы написать, что я хочу найти ..., можно сказать выкинуть, и эта операция будет однозначно интерпретирована. Над выражениями реляционной алгебры написать DELETE или UPDATE написать гораздо сложнее, Потому что надо пройти назад и понять, откуда взялось это выражение.

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

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

Один из пунктов борьбы Дейты с SQL является механизм курсоров. В результате запросов получаются таблицы. Обычные ЯП не имеют средств работы с таблицами. По этому поводу в SQL принято компромиссное решение – вставить средство, которое позволяет итерировать таблицы, что позволяет обходить результат по одному кортежу. Очень многие средства для изменения базы данных завязан на механиз курсоров. Почему – потому что можно сказать системе, кого я имею в виду, когда говорю что-то делать. Пояему это Дейта ругает – в язык, который является реляционным мы втыкаем вещи, которые свсем опперёк. Здесь же, несморя на реляционность, внутри содержится понятие курсора, что позволяет менять таблицу.

Ещё олдин вид исчисления – исчисление доменов

Лектор не помнит, откуда пошло это нозвание, ибо у Кодда было исчисление доменов.

Основное отличие от языка исчисления кортежей в том, что облдасть определения переменной – множество значений ТД, в кортежах – отношение, там кортеж – составное значение, здесь атомарное.

Всё строится аналогично.

Отличия: как привязывается это исчисление к БД. Вводится специальный вид предикатов.

R-n-арное отношение – принимает тру тогда и только тогда, когда входит в какой-либо кортеж текущего значения R.

R{ai1 : vi1 (константа переменная), ai2 : vi2, ..., a1m : vim}

Это можно было бы расширисть сравнениями или регэкспами, ибо шаблон, но это и так достаотчно мощное вещь.

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

Запрос:

СЛУЖАЩИЕ

WFF - <2934, 'Иванов', 22400.00, 1>

СЛУЖАЩИЕ (СЛУ_НОМ: 2934, СЛУ_ИМЯ: 'Иванов', СЛУ_ЗАРП: 22400,00, ПРО_НОМ: 1)

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

Запрос служащих с неминимальной з/п:

СЛУ_НОМ, СЛУ_ИМЯ WHERE EXISTS СЛУ_ЗАРП1(СЛУЖАЩИЕ(СЛУ_ЗАРП1) AND СЛУЖАЩИЕ(СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП) AND СЛУ_ЗАРП>СЛУ_ЗАРП1)

Мойше Zluf придумал запрос по образцу – Query_by_example – первый язык графического изображения запросов к БД. Этот язык по мощности превосходит и язык рел алгебры, и исчисл кортежеи, ибо он умудрился создать рекурсивные запросы.

Первый графич язык – Query By Forms – фактически был Query by Example, с выброшенной рекурсией. Поячему он так попёр? Потому что никто из нормальных людей не пишет запросы на SQL.

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

Злуф жив, здоров и невредим, выпустил новый язык – Programming By Example – очень утопическая идея. Есть большой репозиторий заготовок, и трудно подобрать то, чот нужно. Есть идея в том, что пишется шаблон программы, по которому система подбирает заготовки, из которых собирается программа. Никаких практических шагов по реализации шагов не видно.

Закончили реляционную модель данных, с чем лектор нас и поздравляет.

//педедыв

Проектирование реляционных БД

Проектирование путём нормализации

Подход заключаетс в том, что БД представляется в виде таблиц, как взбредёт в голову, и потом нормализируются.

Подход на основе семантических моделей

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

У лектора зазвони телефон.

Если БД содержит порядка 20-30 таблиц, то её надо проектировать, используя обычные ручные средства. Если 100 таблиц, то нужно использовать комбинации, рисовалки, но не их интеллект. Если в БД тысячи таблиц, там деваться уже некогда.

Если не доволишь хороший проект до конца и отдаёшь его другому, то он всё равно умудряется его изгадить.

Лектор видел объявление в хорошей фирме, где обязательным требованием было прослушивание его курса.

Проектирование путём нормализации

  1. Элементы теории

  2. Нормальные фромы

Элементы теории: книги Мейера, но её лектор не советует читать.

В основе всей теории лежит понятие зависимости.

Зависимости

  1. Функциональные

  2. Многозначные

  3. Проекции/соединения – небинарные соответствия

Есть некоторый набор фактов, который касается зависимостей. На праактике абсолютно идеальные БД получаются с учётом наиболее простых зависимостей – функциональных.

Если в Китае, нет в Китае нельзя говорить, в Северной Корее одному человеку соответствует одна чашка риса в день, то это функциональная зависимость. Если ему её не дать, то он без неё умрёт, И это трагедия для страны – образуется лишний рис.

Все преподаватели курса БД на ВМК пользуются одними и теми же учебниками – это насилие, это неестественное требование.

Если учитываем зависимости проекции/соединения, то получим идеальную БД, но это определить нельзя, это от Бога, но он на такие мелочи внимания не обращает и очень трудно добиться от него такой справки.

Функциональные зависимости

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

Есть отношение r – regular, x, y – аттрибуты

Существует функционгальная зависимость x от y z.x -> z.y (у функ зависит от х, ...) Если для каждого значения х в точсности имеется одно значение у.

СЛУ_НОМ

СЛУ_ИМЯ

СЛУ_ЗАРП

ПРО_НОМ

ПРОЕКТ_РУК

2934

Иванов

22400

1

Иванов

2935

Петорв

29600

1

Иванов

2936

Сидоров

18060 (было 18000)

1

Иванов

2937

Федоров

21000

1

Иванов

2938

Иванов

22500

1

Иванов

2939

Сидоренко

18000

2

Иваненко

2940

Федоренко

20000

2

Иваненко

2941

Иваненко

22000

2

Иваненко

СЛУ_НОМ -> СЛУ_ИМЯ

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

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

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

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