• Save
007
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

007

on

  • 295 views

 

Statistics

Views

Total Views
295
Views on SlideShare
293
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

2 Embeds 2

http://graustin.ru 1
http://www.graustin.ru 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

007 Document Transcript

  • 1. Лекция 4. Взаимосвязи в моделях и реляционный подход к построениюмоделиАмериканский математик Э.Ф.Кодд (E.F.Codd) в 1970 впервые сформулировал основныепонятия и ограничения реляционной модели. Цели создания реляционной моделиформулировались следующим образом:• обеспечение более высокой степени независимости от данных. Прикладные программы недолжны зависеть от изменений внутреннего представления данных, в частности отизменений организации файлов, переупорядочивания записей и путей доступа;• создание прочного фундамента для решения семантических вопросов, а также проблемнепротиворечивости и избыточности данных. В частности, в статье Кодда вводится понятиенормализованных отношений, т.е. отношений без повторяющихся групп;• расширение языков управления данными за счет включения операций над множествами.Коммерческие системы на основе реляционной модели данных начали появляться вконце 70-х – начале 80-х годов. Благодаря популярности реляционной модели многиенереляционные системы теперь обеспечиваются реляционным пользовательским интерфейсом,независимо от используемой базовой модели.Кроме того, позже были предложены некоторые расширения реляционной моделиданных, предназначенные для наиболее полного и точного выражения смысла данных, дляподдержки объектно-ориентированных, а также для поддержки дедуктивных возможностей.Реляционная модель основана на математическом понятии отношения, физическимпредставлением которого является таблица. Дело в том, что Кодд, будучи опытным ма-тематиком, широко использовал математическую терминологию, особенно из теории множестви логики предикатов.Отношение – это плоская таблица, состоящая из столбцов и строк.В любой реляционной СУБД предполагается, что пользователь воспринимает базуданных как набор таблиц. Однако следует подчеркнуть, что это восприятие относится только клогической структуре базы данных, т.е. ко внешнему и концептуальному уровням. Подобноевосприятие не относится к физической структуре базы данных, которая может бытьреализована с помощью различных структур.Атрибут - это поименованный столбец отношения.Атрибут – это наименьшая поименованная единица данных, к которой СУБДможет адресоваться непосредственно, и с помощью которой выполняется построение всехостальных структур. Атрибут имеет имя и значение.В реляционной модели отношения используются для хранения информации об объектах,представленных в базе данных. Отношение обычно имеет вид двумерной таблицы, в которойстроки соответствуют отдельным записям, а столбцы - атрибутам. При этом атрибуты могутрасполагаться в любом порядке, независимо от их переупорядочивания, отношение будетоставаться одним и тем же, а потому иметь тот же смысл. Например, информация оботделениях компании может быть представлена отношением Branch, включающим столбцы сатрибутами Вno (Номер отделения), Street (Улица), City (Город), Postcode (Почтовый индекс),Tel_ No (Номер телефона) и Fax_ No (Номер факса). Аналогично, информация о работникахкомпании может быть представлена отношением Staff (Персонал), включающим столбцы сатрибутами Sno (Личный номер сотрудника), FName (Имя), LName (Фамилия), Address (Адрес),Tel_No (Номер телефона), Position (Должность), Sex (Пол), DOB (Дата рождения), Salary(Зарплата), INN (Личный номер социального страхования) и Вno (Номер отделения, в которомданный сотрудник работает). В табл. 1 и 2 показаны примеры отношений Branch и Staff.Каждый столбец содержит значения одного и того же атрибута, например столбец Вnосодержит только номера существующих отделений компании.Элементами отношения являются кортежи, или строки, таблицы. Кортеж – это строкаотношения. В отношении Branch каждая строка содержит 6 значений, по одному для каждогоатрибута. Кортежи могут располагаться в любом порядке, при этом отношение будет оставаться
  • 2. тем же самым, а значит, и иметь тот же смысл.Примеры отношений Branch и Staff.Отношение BranchТаблица 1Bno City Postcode Street Tel_No Fax_No23 Москва 111111 Победы 1231112 123111324 Ростов 3334546 Октябрьская 1334456 133445525 Самара 456009 Лесная 1213345 1213346Отношение StaffТаблица 2Sno FName LName Adress Tel_No Position Sex DOB SalaryINN Bno234 Иван Иванов МоскваПобеды 14-24121112 Менеджер м 01.01.67 500$441414 23235 МаринаСмирноваМоскваЛенина215-351417877Менеджер ж 01.01.75 500$543243 25Степень отношения определяется количеством атрибутов, которое оно содержит.Отношение Branch (см. табл. 1) имеет шесть атрибутов и, следовательно, его степеньравна шести. Это значит, что каждая строка таблицы является 6-арным кортежем, т.е. кортежем,содержащим шесть значений. Отношение только с одним атрибутом имеет степень 1 иназывается унарным (unary) отношением (или 1-арным кортежем). Отношение с двумяатрибутами называется бинарным (binary), отношение с тремя атрибутами – тернарным(ternary), а для отношений с большим количеством атрибутов используется термин n-арный (n-ary). Определение степени отношения является частью заголовка отношения.Количество содержащихся в отношении кортежей называется кардинальностьюотношения. Эта характеристика меняется при каждом добавлении или удалении кортежей.Кардинальность является свойством тела отношения и определяется текущим состояниемотношения в произвольно взятый момент.Альтернативная терминология. Терминология, используемая в реляционной модели,порой может привести к путанице, поскольку помимо предложенных терминов существует ещеодин. Отношение в нем называется таблицей , кортежи – записями (records), а атрибуты –полями (fields). Эта терминология основана на том факте, что физически СУБД может хранитькаждое отношение в отдельном файле. В табл. 3 показаны соответствия, существующие междуупомянутыми выше группами терминов.Таблица 3Фундаментальные свойства отношений (таблиц)
  • 3. Отношение обладает следующими характеристиками:• оно имеет имя, которое отличается от имен всех других отношений;• каждая ячейка отношения содержит только атомарное (неделимое) значение;• каждый атрибут имеет уникальное имя;• значения атрибута берутся из одного и того же домена;• порядок следования атрибутов не имеет никакого значения;• каждый кортеж является уникальным, т.е. дубликатов кортежей быть не может;• теоретически порядок следования кортежей в отношении не имеет никакого значения.(Однако практически этот порядок может существенно повлиять на эффективность доступак ним.)Для иллюстрации смысла этих ограничений рассмотрим отношение Branch (см. табл. 1).Поскольку каждая ячейка должна содержать только одно значение, то не допускается хранениев одной и той же ячейке двух номеров телефона одного и того же отделения компании. Иначеговоря, отношения не могут содержать повторяющихся групп. Об отношении, которое обладаеттаким свойством, говорят, что оно нормализовано, или находится в первой нормальной форме.(Более подробно нормальные формы рассматриваются ниже.)Имена столбцов, указанные в их верхней строке, соответствуют именам атрибутовотношения. Значения атрибута Bno берутся из домена BRANCH_NUMBERS - не допускаетсяразмещение в этом столбце иных значений, например почтового индекса. Столбцы можноменять местами при условии, что имя атрибута перемещается вместе с его значениями. Таблицавсе еще будет представлять то же отношение, если атрибут Tel_No расположить в ней передатрибутом Postcode, хотя для лучшей читабельности разумнее было бы располагать отдельныечасти адреса поблизости.Отношение не может содержать кортежей-дубликатов. Например, строка ( 23, Москва,111111, Победы, 1231112, 1231113) может быть представлена в отношении только один раз.При необходимости строки можно менять местами произвольным образом (например,переместить строку отделения ‘23’ на место строки отделения ‘24’), само отношение при этомостанется прежним.Большая часть свойств отношений происходит от свойств математических отношенийреляционной алгебры.Как уже говорилось, наиболее популярны реляционные модели данных. В соответствиис реляционной моделью данных данные представляются в виде совокупности таблиц, надкоторыми могут выполняться операции, формулируемые в терминах реляционной алгебры илиреляционного исчисления.В отличие от иерархических и сетевых моделей данных в реляционной модели операциинад объектами имеют теоретико-множественный характер. Это дает возможность пользовате-лям формулировать их запросы более компактно, в терминах более крупных агрегатов данных.Рассмотрим терминологию, используемую при работе с реляционными базами данных.Первичный ключ. Первичным ключом называется поле или набор полей, однозначноидентифицирующих запись.Нередко возможны несколько вариантов выбора первичного ключа. Например, внебольшой организации первичными ключами сущности "сотрудник" могут быть кактабельный номер, так и комбинация фамилии, имени и отчества (при уверенности, что ворганизации нет полных тезок), либо номер и серия паспорта (если паспорта есть у всехсотрудников). В таких случаях при выборе первичного ключа предпочтение отдается наиболеепростым ключам (в данном примере - табельному номеру). Другие кандидаты на рольпервичного ключа называются альтернативными ключами.Требования, предъявляемые к первичному ключу:• уникальность – то есть в таблице не должно существовать двух или более записей содинаковым значением первичного ключа;• первичный ключ не должен содержать пустых значений.При выборе первичного ключа рекомендуется выбирать атрибут, значение которого неменяется в течение всего времени существования экземпляра (в этом случае табельный номер
  • 4. предпочтительнее фамилии, так как ее можно сменить, вступив в брак).По полям, которые часто используются при поиске и сортировке данныхустанавливаются вторичные ключи: они помогут системе значительно быстрее найти нужныеданные. В отличие от первичных ключей поля для индексов (вторичные ключи) могутсодержать неуникальные значения.Первичные ключи используются для установления связей между таблицами вреляционной БД. В этом случае первичному ключу одной таблицы (родительской)соответствует внешний ключ другой таблицы (дочерней). Внешний ключ содержит значениясвязанного с ним поля, являющегося первичным ключом. Значения во внешнем ключе могутбыть неуникальными, но не должны быть пустыми. Первичный и внешний ключи должны бытьодинакового типа.Связи между таблицами. Записи в таблице могут зависеть от одной или несколькихзаписей другой таблицы. Такие отношения между таблицами называются связями. Связьопределяется следующим образом: поле или несколько полей одной таблицы, называемоевнешним ключом, ссылается на первичный ключ другой таблицы. Рассмотрим пример. Так каккаждый заказ должен исходить от определенного клиента, каждая запись таблицы Orders(заказы) должна ссылаться на соответствующую запись таблицы Customers (клиенты). Это иесть связь между таблицами Orders и Customers. В таблице Orders должно быть поле, гдехранятся ссылки на те или иные записи таблицы Customers.Существует три типа связей между таблицами.Один к одному — каждая запись родительской таблицы связана только с одной записьюдочерней. Такая связь встречается на практике намного реже, чем отношение один ко многим иреализуется путем определения уникального внешнего ключа. Связь один к одномуиспользуют, если не хотят, чтобы таблица «распухала» от большого числа полей. Базы данных,в состав которых входят таблицы с такой связью не могут считаться полностьюнормализованными.Один ко многим — каждая запись родительской таблицы связана с одной или не-сколькими записями дочерней. Например, один клиент может сделать несколько заказов,однако несколько клиентов не могут сделать один заказ. Связь один ко многим является самойраспространенной для реляционных баз данных.Многие ко многим — несколько записей одной таблицы связаны с несколькимизаписями другой. Например, один автор может написать несколько книг и несколько авторов —одну книгу. В случае такой связи в общем случае невозможно определить, какая запись однойтаблицы соответствует выбранной записи другой таблицы, что делает неосуществимойфизическую (на уровне индексов и триггеров) реализацию такой связи междусоответствующими таблицами. Поэтому перед переходом к физической модели все связи"многие ко многим" должны быть переопределены (некоторые CASE-средства, если таковыеиспользуются при проектировании данных, делают это автоматически). Подобная связь междудвумя таблицами реализуется путем создания третьей таблицы и реализации связи типа «одинко многим» каждой из имеющихся таблиц с промежуточной таблицей.Типы связей. Все информационные объекты предметной области связаны между собой.Соответствия, отношения, возникающие между объектами предметной области,называются связями. Различаются связи нескольких типов, для которых введены следующиеобозначения:а) один к одному (1:1);б) один ко многим (1:М);в) многие ко многим (М : М).Рассмотрим эти типы связей на примере.Пример. Дана совокупность информационных объектов, отражающих учебный процесс ввузе:СТУДЕНТ (Номер, Фамилия, Имя, Отчество, Пол, Дата рождения, Группа) СЕССИЯ (Номер.Оценка 1, Оценка 2, Оценка 3, Оценка 4, Результат) СТИПЕНДИЯ (Результат, Процент)ПРЕПОДАВАТЕЛЬ (Код преподавателя, Фамилия, Имя, Отчество)
  • 5. Связь один к одному (1:1) предполагает, что в каждый момент времени одномуэкземпляру информационного объекта А соответствует не более одного экземпляраинформационного объекта В и наоборот.Рис. 1 иллюстрирует указанный тип отношений.Рис. 1. Графическое изображение реального отношения 1:1Примером связи 1:1 может служить связь между информационными объектами СТУДЕНТи СЕССИЯ:СТУДЕНТ <-> СЕССИЯКаждый студент имеет определенный набор экзаменационных оценок в сессию.При связи один ко многим (1 : М) одному экземпляру информационного объекта Асоответствует 0, 1 или более экземпляров объекта В, но каждый экземпляр объекта В связан неболее чем с 1 экземпляром объекта А. Графически данное соответствие имеет вид,представленный на рис 2.Рис. 2. Графическое изображение реального отношения 1:МПримером связи 1: М служит связь между информационными объектами СТИПЕНДИЯ иСЕССИЯ:СТИПЕНДИЯ < -- >> СЕССИЯУстановленный размер стипендии по результатам сдачи сессии может повторятьсямногократно для различных студентов.Связь многие ко многим (М:М) предполагает, что в каждый момент времени одномуэкземпляру информационного объекта А соответствует 0, 1 или более экземпляров объекта В инаоборот. На рис. 3 графически представлено указанное соответствие.BAA1 B1A2A3B2A1 B1A2A3 B3B2 BAA1 B1A2A3 B3B2 BA
  • 6. Рис. 3. Графическое изображение реального отношения М : МПримером данного отношения служит связь между информационными объектамиСТУДЕНТ и ПРЕПОДАВАТЕЛЬ:СТУДЕНТ <<—>>ПРЕПОДАВАТЕЛЬОдин студент обучается у многих преподавателей, один преподаватель обучает многихстудентов.Для рассмотрения ссылочной целостности возьмем в качестве примера наиболее частовстречающуюся в базах данных связь один-ко-многим – см таблицы 4 и 5. Как можно заметить,дочерняя и родительская таблицы связаны между собой по общему полю «Товар». Назовем этополе полем связи.Таблица «Товары»Таблица 4Товар Ед изм ЦенаСахар кг 18Макароны кг 18Куры кг 90Фанта бут 20Таблица «Отпуск товаров»Таблица 5Товар Дата КоличествоСахар 10.12.07. 100Сахар 12.12.07. 200Сахар 14.12.07 50Макароны 10.12.07 1000Макароны 12.12.07 500Фанта 07.12.07 2000Фанта 05.12.07 3000Возможны два вида изменений, которые приведут к утере связей между записями вродительской и дочерней таблицах:• изменение значения поля связи в записи родительской таблицы без изменениязначений полей связи в соответствующих записях дочерней таблицы;• изменение значения поля связи в одной из записей дочерней таблицы без соответ-ствующего изменения значения полей связи в родительской и дочерней таблицах.Рассмотрим первый случай. Если изменить значения поля «Товар» с «Сахар» на«Рафинад» в таблице «Товары», а в таблице «Отпуск товаров» значение поля связи «Сахар»оставить прежним. В результате получим:• в дочерней таблице «Отпуск товаров» для товара «Рафинад» (таблица «Товары») нетсведений о его отпуске со склада;• некоторые записи таблицы «Отпуск товаров» содержат сведения об отпуске товара«Сахар», о котором нет информации в таблице «Товары».Рассмотрим второй случай. Пусть в одной из записей таблицы «Отпуск товаров»значение поля связи «Сахар» изменилось на «Рафинад». В результате:• в дочерней таблице «Отпуск товаров» недостоверны сведения об отпуске со складатовара «Сахар» (таблица «Товары»);
  • 7. • одна из записей таблицы «Отпуск товаров» содержит данные об отпуске товара«Рафинад», сведения о котором отсутствуют в таблице «Товары».И в первом, и втором случае мы наблюдаем нарушение целостности базы данных; этоозначает, что хранящаяся в ней информация становится недостоверной.СУБД обычно блокирует действия, которые нарушают целостность связей междутаблицами, т.е. нарушают ссылочную целостность. Когда говорят о ссылочной целостности,имеют в виду совокупность связей между отдельными таблицами во всей БД. Нарушение хотябы одной такой связи делает информацию в БД недостоверной.Чтобы предотвратить потерю ссылочной целостности, используется механизм кас-кадных изменений. Он состоит в обеспечении следующих действий:• при изменении поля связи в записи родительской таблицы следует синхронноизменить значения полей связи в соответствующих записях дочерней таблицы;• при удалении записи в родительской таблице следует удалить соответствующиезаписи в дочерней таблице.Изменения или удаления в записях дочерней таблицы при одновременном изменении(удалении) записи родительской таблицы называются каскадными изменениями и каскаднымиудалениями.Существует другая разновидность каскадного удаления: при удалении родительскойзаписи в записях дочерних таблиц значения полей связи обнуляются. Эта разновидностьприменяется редко, т.к. дочерние таблицы в этом случае будут содержать избыточные данные,например, сведения о товаре, которого нет на складе.Обычно для реализации ссылочной целостности в дочерней таблице создают внешнийключ, в который входят поля связи дочерней таблицы. Этот ключ для дочерней таблицыявляется первичным и поэтому по составу полей должен совпадать с, первичным ключомродительской таблицы или реже - с частью первичного ключа.