Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Преимущества ER-моделирования

2018-01-30 290
Преимущества ER-моделирования 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

Исключительная концептуальная простота. ER-модель дает очень простое и наглядное представление об основных логических объектах БД и существующих между ними связях, поэтому использование такой модели значительно упрощает разработку и организацию сложных баз данных.

Наглядное представление. ER-модель дает проектировщикам баз данных, про­граммистам и конечным пользователям простое наглядное представление о данных и связях между ними. Поэтому ER-модель является чрезвычайно эффективным средством, интегрирующим различные представления о данных в единую рабочую среду.

Хорошая интеграция с реляционной моделью данных. ER-модель хорошо инте­грируется с реляционной моделью БД. Такая интеграция помогает эффективно структурировать процесс проектирования реляционных БД.

Недостатки ER-моделирования

Недостаточные возможности представления ограничений. С помощью ER-mo-дели легко изобразить ограничения, имеющие непосредственное отношение к связ­ности. Например, ограничение «автор может работать над несколькими книгами, или более чем над одной книгой, но не более чем над тремя книгами» легко изобра­жаются средствами ER-модели. Однако некоторые ограничения, например, «оплата автору может варьироваться в диапазоне от 4 до 25 %» или «автор не имеет права работать больше 10 часов подряд», в ER-модели представить невозможно, и они должны обрабатываться на уровне приложений.


Реляционные базы данных 185

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

Отсутствие языка манипулирования данными. Сторонники реляционной мо­дели обычно указывают на отсутствие команд манипулирования данными в ER-модели. Отсутствие таких команд делает ER-модель «неполной».

Утеря информационного наполнения. ER-модель сильно «переполнится», если в ней отобразить все ее атрибуты. Поэтому проектировщики баз данных обычно избегают полного отображения атрибутов, таким образом, сужая информационное наполнение ER-модели.

ВНИМАНИЕ

Все сказанное о недостатках ER-модели верно лишь в отношении теоретической мо­дели. В современных средствах моделирования данных (таких как программа ErWin Data Modeler) применяется расширенная ER-модель, практически лишенная всех перечисленных недостатков.

6.3. Реляционные базы данных

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

Наиболее популярным сейчас типом баз данных являются так называемые реля­ционные базы данных. Реляционная модель данных была предложена Е. Ф. Коддом (Е. Е Codd), известным исследователем в области баз данных, в 1969 г., когда он был сотрудником IBM.

Реляционная база данных представляет собой хранилище данных, содержащее набор двухмерных таблиц. Набор средств для управления подобным хранилищем называется реляционной системой управления базами данных (РСУБД). РСУБД может содержать утилиты, приложения, сервисы, библиотеки, средства создания приложений, и др.

Любая таблица реляционной базы данных состоит из строк (называемых также записями) и столбцов (называемых также полями). В данном разделе используются обе пары терминов.

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

Данные в таблицах удовлетворяют следующим принципам:

□ каждое значение в ячейке, находящейся на пересечении строки и столбца, долж­
но быть атомарным, то есть не расчленяемым на несколько значений;

□ значения данных в одном и том же столбце должны принадлежать одному
и тому же типу, доступному для использования в данной СУБД;

□ каждая запись в таблице уникальна, то есть в таблице не существует двух за­
писей с полностью совпадающим набором значений ее полей;

□ каждое поле имеет уникальное имя;


186 Глава 6. Теория баз данных

последовательность полей в таблице несущественна;

□ последовательность записей в таблице несущественна.

Несмотря на то что строки таблиц считаются неупорядоченными, любая система управления базами данных позволяет сортировать строки и столбцы. Так как по­следовательность столбцов в таблице несущественна, обращение к ним произво­дится по имени, и эти имена для данной таблицы уникальны. Для того чтобы база данных (или система управления базой данных) была полностью реляционной, она должна соответствовать 12 правилам Кодда.

Правила Кодда

Автор реляционной модели данных, Е. Ф. Кодд, в 1985 г. опубликовал статью, в которой сформулировал 12 правил реляционной базы данных.

1. Правило информации.

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

ПОЯСНЕНИЕ ------------------------------------------------------------------------------------------------------

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

2. Правило гарантированного доступа.

Гарантируется, что каждый элемент данных (атомарное значение) реляци­онной базы данных логически доступен через комбинацию из имени таблицы, значения первичного ключа и имени столбца.

ПОЯСНЕНИЕ ------------------------------------------------------------------------------------------------------

В наборе из 12 правил нет явного указания, что каждая строка в таблице должна иметь уникальный первичный ключ. Однако правило 2 неявным образом говорит об этом: ни одна таблица не может соответствовать правилу гарантированного доступа, если в ней нет первичного ключа.

3. Правило систематической трактовки значений null.

Значения null (заметим, что они отличаются как от пустой строки символов, так и от строки пробелов) поддерживаются в полностью реляционной СУБД для представления отсутствующей информации систематически и независимо от типа данных.

ПОЯСНЕНИЕ ------------------------------------------------------------------------------------------------------

Во-первых, база данных должна поддерживать значения null для обозначения того, что атомарные данные являются неизвестными (null — это не 0, не пустая строка и не пробел); во-вторых, в базе данных должно быть общее правило, определяющее, как обрабатывать значения null (например, каким образом трактовать их при выполнении запросов с выборкой по полю, содержащему такие значения).


Реляционные базы данных 187

4. Правило наличия динамического оперативного каталога на основе реляционной
модели.

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

5. Правило наличия исчерпывающего подъязыка данных.

Реляционная система может поддерживать несколько языков и различных

режимов работы с устройствами ввода-вывода, однако должен существовать по

меньшей мере один язык, операторы которого точно отражают реляционную

модель с вполне определенными синтаксическими конструкциями в виде строк

, символов и с исчерпывающей поддержкой следующего:

О описания данных;

О описания представлений;

О манипуляций данными;

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

О границ транзакций (начала, завершения и отката).

6. Правило обновления представлений.

Все представления, обновляемые теоретически, должны обновляться прак­тически.

7. Правило ввода, обновления и удаления данных на высоком уровне.

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

ПОЯСНЕНИЕ------------------------------------------------------------------------------------------------------

Это правило определяет возможность в одной команде выполнить операцию сразу над несколькими строками данных.

8. Правило физической независимости данных.

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

ПОЯСНЕНИЕ ----------------------------------------------------------------------------------------------------

Это правило подразумевает возможность переноса физических данных из одного ка­талога (раздела, диска, компьютера) в другой без изменения способа взаимодействия пользователей и пользовательских приложений с таблицами базы данных.

9. Правило логической независимости данных.

Прикладные программы и терминальные операции остаются логически не­поврежденными при внесении в базовые таблицы любого рода изменений, со-


Глава 6. Теория баз данных

храняющих информацию и теоретически допускающих возможность оставить информацию неповрежденной.

ПОЯСНЕНИЕ ------------------------------------------------------------------------------------------------------

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

10. Правило независимости целостности.

При помощи подъязыка реляционных данных должна существовать воз­можность описания ограничений целостности, специфичных для конкретной реляционной базы данных, и сохранения их в каталоге, а не в прикладных программах.

Для этого должны соблюдаться как минимум два ограничения:

О сущностная целостность: ни один из компонентов первичного ключа не может принимать значения null;

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

11. Правило независимости распределения.

В реляционной СУБД распределение независимо.

ПОЯСНЕНИЕ ------------------------------------------------------------------------------------------------------

Распределенная база данных с точки зрения пользователя не должна отличаться от централизованной.

12. Правило соблюдения правил {запрет обхода правил).

Если в реляционной системе имеется язык низкого уровня («одна запись за раз»), его нельзя использовать для нарушения или пропуска правил или ограничений целостности, установленных в реляционном языке более высокого уровня («несколько записей за раз»).

Ключи и связи

Рассмотрим стандартную для современных информационных систем задачу построения базы данных, которая содержит в себе информацию о клиентах и сде­ланных ими заказах (покупках).

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


6.3. Реляционные базы данных



Номер заказа

Имя клиента

Адрес заказа

Адрес отгрузки

Контактный адрес

Номер счета

Дата заказа

Дата отгрузки

Дата оплаты

Товар 1

Товар 2

Товар 3

Товар 4

Рис. 6.13. Схема таблицы Клиенты и заказы

В этой таблице будет множество записей. Все поля в записях могут принять одинаковые значения (даже номер счета, поскольку один и тот же клиент может сделать два идентичных заказа, и их впишут в один счет). Значит, для того чтобы обеспечить уникальность каждой записи в таблице, необходимо иметь поле, в ко­тором значения никогда не повторяются. Если в данной фирме принята сквозная уникальная нумерация заказов, мы можем в качестве уникального идентификатора выбрать номер заказа. В случае, если это не так, мы можем в качестве уникальной метки для записи добавить еще одно поле, значения в котором будут уникальными.

Проведя моделирование процесса добавления заказов в таблицу, мы можем понять, что такая схема записей является несовершенной: сколько бы позиций товаров мы не внесли, клиент все равно может заказать их больше. Если же мы в схеме предусмотрим заведомо избыточное количество позиций товаров, то по­лучим совершенно нечитабельную запись и такую таблицу, в которой при каждом добавлении заказа будет дублироваться большое количество незаполненных полей. Избавиться от такого рода несовершенства можно за счет создания связи между таблицами (в нашем случае — связи один ко многим).

Произведя разделение схемы таблицы на две, одна из которых содержит све­дения о сделанном заказе, а другая — о каждом заказанном товаре, мы свяжем эти таблицы между собой при помощи связи один ко многим (на рис. 6.14 это линия с цифрой 1 около одного конца и значком бесконечности около другого).



Глава 6. Теория баз данных


 



Имя клиента


Номер заказа


 


Адрес заказа


Описание


 


Адрес отгрузки


Количество штук


 


Контактный адрес


Цена за штуку


 


Номер счета


Общая стоимость


Дата заказа

Дата отгрузки

Дата оплаты

Рис. 6.14. Связь один ко многим

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

Ссылочная целостность

Как уже отмечалось, первичный ключ любой таблицы должен содержать уни­кальные непустые значения для данной таблицы. Это утверждение является одним из правил ссылочной целостности (referential integrity). Практически все современные СУБД контролируют уникальность первичных ключей. При попытке присвоить первичному ключу значение, уже имеющееся в другой записи, СУБД ге­нерирует диагностическое сообщение, обычно содержащее словосочетание primary key violation (нарушение первичного ключа). Если две таблицы связаны соотноше­нием один ко многим, внешний ключ второй таблицы должен содержать только те значения, которые уже имеются среди значений первичного ключа первой таблицы. Современные СУБД отслеживают попытки удалить запись в первой таблице, если во второй таблице есть связанные с ней записи, препятствуя этому и генерируя диагностические сообщения. Если бы этого не происходило, со временем вторая таблица переполнилась бы записями, не связанными ни с одной записью в первой таблице (а значит, попросту бесполезными).

Нормализация данных

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


6.3. Реляционные базы данных



Первая нормальная форма

Вернемся к таблице Клиенты и заказы. Структура этой таблицы показана на рис. 6.15.

Номер заказа

Имя клиента

Адрес заказа

Адрес отгрузки

Контактный адрес

Номер счета

Дата заказа

Дата отгрузки

Дата оплаты

Рис. 6.15. Таблица Клиенты и заказы в первой нормальной форме

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

Таблица Клиенты и заказы соответствует этим требованиям, как и любая другая реляционная таблица. Однако она, несмотря на выделение из нее таблицы с зака­занными товарами, остается в значительной степени избыточной. На самом деле каждый раз, добавляя в таблицу очередной заказ от одного и того же клиента, мы многократно дублируем множество сведений. Это, в свою очередь, может привести к некоторым негативным последствиям:

□ до тех пор, пока клиент не сделал хотя бы один заказ, сведения о нем не появятся
в базе данных;

□ при удалении последней записи о заказанном товаре из базы исчезают все све­
дения о клиенте;

□ при изменении клиентом адреса в базе могут оказаться две записи с разными
адресами одного и того же клиента.

Некоторые из этих проблем могут быть решены путем приведения таблиц дан­ных ко второй нормальной форме.

Вторая нормальная форма

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

Получить вторую нормальную форму можно, разделив таблицу Клиенты и за­казы еще на несколько таблиц. При этом поля разносятся таким образом, чтобы полностью зависеть от первичного ключа соответствующей таблицы (рис. 6.16).



Глава 6. Теория баз данных


 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

      Номер позиции    
  Номер заказа
     
      Описание  
      Количество штук  
      Цена за штуку  
      Общая стоимость  
     
     
Номер заказа   Хятты Номер заказа
   
Номер клиента 00 '1 Номер клиента 1 00 Номер клиента
   
Дополнительно   Имя клиента   Область
Номер счета     Город
Дата заказа     Улица
      Почтовый индекс
          Тип адреса

Рис. 6.16. Таблица Клиенты и заказы во второй нормальной форме

Третья нормальная форма

Итак, таблица Клиенты и заказы превратилась у нас в группу связанных таблиц. Благодаря упорядоченности связей в схеме появилась логика: в центре теперь клиент, с которым связаны его заказы и адреса. В свою очередь, с заказами связаны заказанные товары. Но и эта схема все еще не соответствует третьей нормальной форме. Происходит это потому, что в таблице Заказанные товары есть поле Общая сто­имость. Это поле получено в результате произведения значений полей Количество штук и Цена за штуку.

База данных находится в третьей нормальной форме, если она находится во второй нормальной форме и все поля ее сущностей не зависят друг от друга1.

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

Язык SQL

Математическая реляционная модель данных предполагает, что для манипу­ляций с данными и сущностями должна использоваться одна из специальных алгебр — реляционная. Для реализации операций реляционной алгебры в СУБД был разработан специальный язык SQL (Structured Query Language — структури­рованный язык запросов). SQL является декларативным языком программиро­вания. В отличие от процедурных языков программирования, SQL определяет не

1 Существуют и другие нормальные формы с более строгими условиями.


Реляционные базы данных 193

последовательность процедур, а условия выполнения запроса. При этом запросы могут быть объемом с простую программу на процедурном языке программирова­ния (от одной строки до нескольких страниц).

Язык SQL содержит несколько групп операторов.


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.097 с.