Главная » Все файлы » Просмотр файлов из архивов » Документы » Построение реляционных баз данных

Построение реляционных баз данных, страница 4

2018-01-12СтудИзба

Описание файла

Документ из архива "Построение реляционных баз данных", который расположен в категории "". Всё это находится в предмете "информационные технологии в проектировании рэс" из 10 семестр (2 семестр магистратуры), которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информационные технологии в проектировании рэс" в общих файлах.

Онлайн просмотр документа "Построение реляционных баз данных"

Текст 4 страницы из документа "Построение реляционных баз данных"

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

Можно выполнять соединение и по другим условиям, а не только по равенству. И качестве примеров можно привести соединения СТУДЕНТ JOIN (ЛичныйНомер* НомерСтудента) ЗАПИСЬ или СТУДЕНТ JOIN (ЛичныйНомер < НомерСотрудника) ППС. Результатом последнего соединения явится набор кортежей, в котором номера студентов меньше, чем номера сотрудников. Такая операция может иметь смысл, если, скажем, идентификаторы присваиваются людям в хронологическом поряд­ке. В результирующем отношении будут представлены пары студент—преподава­тель, в которых студент появился в учебном заведении раньше, чем преподаватель.

Есть одно важное ограничение на условия соединения: атрибуты, входящие в условие, должны относиться к одному и тому же домену, поэтому соединение вида СТУДЕНТ JOIN (Специальность = НазваниеПредмета) ЗАНЯТИЯ противоречит ло­гике. Даже при том, что значения атрибутов Специальность и НазваниеПредмета имеют тип Char (10), они относятся к разным доменам. С семантической точки зрения такого рода соединение не имеет смысла. (К сожалению, многие реляци­онные СУБД допускают такие соединения.)

Внешнее соединение

Операция соединения приведет к отношению, в котором перечислены студенты и предметы, на которые они записаны. Студенты, не записанные ни на один из предметов, не будут представлены в результатах. Если мы хотим включить в ре­зультирующее отношение всех студентов, можно использовать внешнее соедине­ние (outer join). Так, в результате операции левого внешнего соединения (left outer join), имеющей вид СТУДЕНТ LEFT OUTER JOIN (ЛичныйНомер= НомерСтудента) ЗАПИСЬ, получится отношение, в котором будут присутствовать все строки из отношения СТУДЕНТ. Данное отношение представлено на рис. 8.16, в. В нем фигурирует студент Смит, хотя этот студент не записан ни на один из предметов. Ключевое слово LEFT (левый) указывает, что в результате должны быть представлены все строки из отношения, находящегося по левую сторону от оператора соединения (в нашем случае это отношение СТУДЕНТ). Операция правого внешнего соединения (right outer join), имеющая вид СТУДЕНТ RIGHT OUTER JOIN (ЛичныйНомер = НомерСтудента) ЗАПИСЬ, приведет к отношению, в котором будут присутствовать все строки из таблицы, находящейся справа от оператора соединения, — а именно таблицы ЗАПИСЬ. Внешнее соединение удобно использовать при работе со связями, в ко­торых минимальное кардинальное число равняется нулю с одной или с обеих сторон. Иногда, когда во избежание неоднозначности требуется указать, какой именно тип соединения имеется в виду, вместо термина соединение используется термин внутреннее соединение (inner join).

Выражение запросов в терминах реляционной алгебры

В табл. 8.2 перечислены все основные операции реляционной алгебры, описан­ные выше. Из них стандартными операциями теории множеств являются объ­единение (+), вычитание (-), пересечение и произведение. Операция выборки выделяет из отношения определенные кортежи (строки) в соответствии с усло-пнями, наложенными на значения атрибутов. Операция проектирования выделя­ет из отношения атрибуты (столбцы) по заданным именам. Наконец, операция соединения конкатенирует кортежи двух отношений в соответствии с условием, наложенным на значения атрибутов.

Теперь посмотрим, как с помощью реляционных операторов можно фор­мулировать запросы. Воспользуемся для этого отношениями СТУДЕНТ, ЗАНЯТИЯ и ЗАПИСЬ, показанными на рис. 8.12. Данные для примера представлены на рис. 8.17. Наша цель состоит в том, чтобы продемонстрировать различные операции с отношениями. Хотя вы, скорее всего, не будете использовать реляционную алгебру при работе с коммерческими продуктами, эти примеры помогут вам понять, каким образом можно манипулировать отношениями.

1. Вывести имена всех студентов. СТУДЕНТ [Имя]

Эта строка проектирует отношение СТУДЕНТ на атрибут Имя. Результатом является следующая таблица:

джонс

ПАРКС БЕЙКЕР

ГЛАСС РАССЕЛ РАЙ

Повторяющиеся имена могут быть опущены. Хотя имена Джонс и Бейкер фигурируют в отношении СТУДЕНТ дважды, повторения были исключены, поскольку результат проектирования представляет собой отношение, а от­ношение не может содержать одинаковые кортежи.

. Вывести имена студентов, записанных хотя бы на один предмет.

ЗАПИСЬ [НомерСтудента]

Этот запрос похож на первый, но здесь оператор проектирования действу­ет на отношение ЗАПИСЬ. Результатом является следующая таблица:

100 150 200 300 400 450

Как и в предыдущем примере, одинаковые строки были удалены. Вывести номера студентов, не записанных ни на один предмет. СТУДЕНТ [ЛичныйНомер] - ЗАПИСЬ [НомерСтудента]

Это выражение представляет собой разность между проекциями двух от­ношений: проекция СТУДЕНТ [ЛичныйНомер] содержит номера всех студен­тов, а проекция ЗАПИСЬ [НомерСтудента] содержит номера студентов, запи­санных на какие-либо предметы. Их разность — это номера студентов, не записанных ни на один предмет. Результатом является следующая таблица:

250 350

298

Глава 8. Основы построения реляционных баз данных

4. Вывести номера студентов, записанных на предмет 'BD445'.

ЗАПИСЬ WHERE НазваниеПредмета = 'BD445' [НомерСтудента]

Это выражение выделяет соответствующие кортежи и затем проектирует их на атрибут НомерСтудента. Результатом является следующая таблица:

250 350

5. Вывести имена студентов, записанных на предмет 'BD445'.

СТУДЕНТ JOIN (ЛичныйНомер = НомерСтудента) ЗАПИСЬ WHERE НазваниеПредмета = 'BD445' [СТУДЕНТ.Имя]

Чтобы дать ответ на этот запрос, требуются данные из обеих таблиц — и СТУДЕНТ, и ЗАПИСЬ. В частности, из таблицы СТУДЕНТ берутся имена сту­дентов, а условие «записан на предмет BD445» проверяется по таблице ЗАПИСЬ. Поскольку необходимы оба отношения, их нужно соединить. К ре­зультату соединения таблиц СТУДЕНТ и ЗАПИСЬ применяется операция вы­борки, за которой следует проектирование на имена студентов. Результатом является следующая таблица:

ДЖОНС БЕЙКЕР

Как уже отмечалось ранее, у двух или более отношений, входящих в выра­жение, могут оказаться атрибуты с одинаковыми именами. Поэтому для определенности перед именем атрибута может указываться имя отно­шения. Так, в нашем примере делается проекция на атрибут СТУДЕНТ.Имя. В данном случае префикс служит лишь для демонстрации, поскольку в рас­сматриваемое выражение не входят какие-либо другие отношения, имею­щие атрибут Имя. Однако когда имена атрибутов повторяются (например, атрибут НазваниеПредмета имеется в отношениях ЗАПИСЬ и ЗАНЯТИЯ), запись с префиксом оказывается необходимой. Рассмотрим следующую задачу.

6. Вывести названия предметов, на которые записан студент Парке, и распи­сание занятий по этим предметам.

Чтобы ответить на этот вопрос, мы должны свести воедино данные из трех отношений. Из таблицы СТУДЕНТ мы возьмем учетный номер студента Пар-кса, из таблицы ЗАПИСЬ — предметы, на которые записан этот студент, а из таблицы ЗАНЯТИЯ — расписание занятий по этим предметам.

СТУДЕНТ WHERE Имя = 'ПАРКС JOIN (ЛичныйНомер = НомерСтудента) ЗАПИСЬ JOIN (ЗАПИСЬ.НазваниеПредмета = ЗАНЯТИЯ.НазваниеПредмета) ЗАНЯТИЯ [ЗАНЯТИЯ.НазваниеПредмета, Время]

Это выражение выделяет кортеж студента по фамилии Парке из отноше­ния СТУДЕНТ и соединяет его с соответствующими кортежами отношения ЗАПИСЬ. Результат соединяется с соответствующими кортежами отноше­ния ЗАНЯТИЯ. Наконец, берется проекция, которая выделяет названия пред­метов и время проведения занятий. Результат имеет следующий вид:

ВА200

ВА20О

Есть другие способы представления этого запроса, эквивалентные этому. Один из них выглядит так:

СТУДЕНТ JOIN (ЛичныйНомер - НомерСтудента) ЗАПИСЬ JOIN

(ЗАПИСЬ.НазваниеПредмета = ЗАНЯТИЯ.НазваниеПредмета) PFY2NBZ WHERE

Имя = 'ПАРКС [ЗАНЯТИЯ.Название, Время]

Это выражение отличается от первого тем, что выборка данных о студенте с фамилией Парке не выполняется до тех пор, пока не будут выполнены все соединения. Если предположить, что компьютер будет выполнять опера­ции именно в таком порядке, это выражение будет вычисляться медленнее, чем предыдущее, так как придется соединять большее количество кортежей. Такие различия являются большим недостатком реляционной алгебры. С точки зрения пользователя, эквивалентные запросы должны занимать одинаковое количество времени (и, следовательно, стоить одинаково). Пред­ставьте себе недоумение пользователя, если один и тот же запрос в одной форме стоит $1.17, а в другой — $4 436. Для неискушенного пользователя такая разница в стоимости будет представляться просто чьей-то прихотью.

Для всех студентов (включая тех, кто не записан ни на один предмет) вы­вести номера курсов, на которых они учатся, и аудиторий, в которых они занимаются.

Поскольку результат должен содержать данные обо всех студентах, в дан­ном запросе необходимо использовать внешнее соединение. Синтаксис пря­молинеен:

СТУДЕНТ LEFT OUTER JOIN (ЛичныйНомер = НомерСтудента) ЗАПИСЬ (ЗАПИСЬ. НазваниеПредмета = ЗАНЯТИЯ.НазваниеПредмета) JOIN ЗАНЯТИЯ [Курс. Аудитория]

В результирующей таблице помимо прочего указано, на каких курсах учатся студенты Гласе и Рассел, не записанные ни на один предмет:



АС

SC213

С2

SC110

АС

ЕВ210

С4

Null

С4

ЕА304

СЗ

Null

С1

SC110

С1

SC213

С1

ЕВ210

С4

SC110

Резюме

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

В реляционной модели данные представляются и обрабатываются в форме таблиц, называемых отношениями. Столбцы таблиц называются атрибутами, а строки — кортежами. Термины таблица, столбец и строка, а также термины файл, поле и запись являются синонимами терминов отношение, атрибут и кор­теж соответственно.

Использование термина ключ может привести к неоднозначности, так как на стадии проектирования и реализации он употребляется в различных значениях. На стадии проектирования этим термином обозначается логический ключ, то есть один или несколько атрибутов, однозначно интерпретирующих строку. На ста­дии реализации этим термином обозначается физический ключ, то есть структу­ра данных, используемая для повышения производительности. Логический ключ может быть, а может и не быть физическим ключом; физический ключ также мо­жет, но не обязан быть логическим ключом. В этой книге под словом ключ мы подразумеваем логический ключ, а под словом индекс — физический ключ.

Поскольку для описания структуры базы данных мы используем реляцион­ную модель, нам нет необходимости осуществлять какие-либо преобразования на стадии реализации. Мы просто описываем имеющуюся структуру для СУБД. Есть два способа сделать это: представить описание в виде текстового DDL-фай­ла или воспользоваться графическими средствами описания данных. В обоих случаях для СУБД описываются таблицы, столбцы, индексы, ограничения, паро­ли и другие элементы управления.

Помимо описания структуры базы данных, разработчики должны выделить для базы данных пространство на физическом носителе. В многопользователь­ских системах это может быть важно для эффективной работы СУБД. Наконец, база данных заполняется информацией, для чего используются средства, предо­ставляемые производителем СУБД, или программы, разработанные производи­телем, или и то и другое.

Есть четыре категории языков манипулирования данными: реляционная алгеб­ра, реляционное исчисление, языки, ориентированные на преобразования, и за­просы по образцу. Реляционная алгебра состоит из набора реляционных операто­ров, с помощью которых можно манипулировать отношениями для получения желаемого результата. Реляционная алгебра является процедурной. Языки, ори­ентированные на преобразования, предоставляют непроцедурные способы для преобразования набора отношений в желаемый результат. Наиболее распростра­ненный пример — это язык SQL.

Существует три способа доступа к реляционной базе данных. Один из них со­стоит в том, чтобы использовать средства для генерации форм и отчетов, предо­ставляемые СУБД. Второй способ — использовать язык запросов и преобразова­ний; наиболее популярным языком такого рода является SQL. Третий способ предполагает доступ через прикладные программы.

Прикладные программы могут взаимодействовать с СУБД через вызовы функций, а также с помощью методов объектов или специальных команд базы

длимых, транслируемых предварительным компилятором. Реляционная модель ориентирована на обработку одного отношения за один прием, но большинство (инков программирования обрабатывают за один прием только одну строку. Не­обходимо предусмотреть какие-то способы компенсации этого несоответствия.

Назначение реляционной алгебры состоит в том, чтобы манипулировать от­ношениями для получения желаемого результата. Она включает в себя следую­щие операторы: объединение, разность, пересечение, произведение, проекция, пыборка, (внутреннее) соединение и внешнее соединение.

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