Главная страница
Навигация по странице:

  • Data Modeler) применяется расширенная ER-модель, практически лишенная всех

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

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

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

  • О описания данных; О описания представлений; О м анипуляций данными; О ограничений целостности; О границ транзакций (начала, заверш ен и я и отката).

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

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

  • Добавление таблицы к схеме базы данных или столбца к схеме таблицы не должно оказать никакого влияния на уже работающие прикладные программы, поскольку

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

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

  • Н т трт т т ОШ О *Ш

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

  • □ INSERT — опер атор добав л ен и я данны х. Пример:INSERT INTO Заказы VALUES (1420, 20, Ускоренная доставка,1221, 15.03.2010)Э тот зап р ос обращ ается к табли ц е

  • Учебник_Информатика. Стандарт третьего поколениян. В. Макарова, В. Б. Волков


    Скачать 14.49 Mb.
    НазваниеСтандарт третьего поколениян. В. Макарова, В. Б. Волков
    АнкорУчебник_Информатика.pdf
    Дата26.04.2017
    Размер14.49 Mb.
    Формат файлаpdf
    Имя файлаУчебник_Информатика.pdf
    ТипДокументы
    #5919
    страница19 из 48
    1   ...   15   16   17   18   19   20   21   22   ...   48
    Все сказанное о недостатках ER-модели верно лишь в отношении теоретической мо­
    дели. В современных средствах моделирования данных (таких как программа ErWin
    Data Modeler) применяется расширенная ER-модель, практически лишенная всех
    перечисленных недостатков.
    6.3. Реляционные базы данных
    6.3.1. Реляционная модель данных
    Наиболее популярным сейчас типом баз данных являются так называемые реля­
    ционные базы данных. Реляционная модель данных была, предложена Е. Ф. Коддом
    (Е. Е Codd), известным исследователем в области баз данных, в 1969 г., когда он был сотрудником IBM.
    Реляционная база данных представляет собой хранилище данных, содержащее набор двухмерных таблиц. Набор средств для управления подобным хранилищем называется реляционной системой управления базами данных (РС У БД ). РСУБД может содержать утилиты, приложения, сервисы, библиотеки, средства создания приложений, и др.
    Любая таблица реляционной базы данных состоит из строк (называемых также записями) и столбцов (называемых также полями). В данном разделе используются обе пары терминов.
    Строки таблицы содержат сведения (факты) об однотипных объектах: докумен­
    тах, людях и пр. На пересечении столбца и строки находятся конкретные значения содержащихся в таблице данных.
    Данные в таблицах удовлетворяют следующим принципам:
    □ каждое значение в ячейке, находящейся на пересечении строки и столбца, долж­
    но быть атомарным, то есть не расчленяемым на несколько значений;
    □ значения данных в одном и том же столбце должны принадлежать одному и тому же типу, доступному для использования в данной СУБД;
    каждая запись в таблице уникальна, то есть в таблице не существует двух за­
    писей с полностью совпадающим набором значений ее полей;
    □ каждое поле имеет уникальное имя;

    186
    Глава 6. Теория баз данных
    □ последовательность полей в таблице несущественна;
    □ последовательность записей в таблице несущественна.
    Несмотря на то что строки таблиц считаются неупорядоченными, любая система управления базами данных позволяет сортировать строки и столбцы. Так как по­
    следовательность столбцов в таблице несущественна, обращение к ним произво­
    дится по имени, и эти имена для данной таблицы уникальны. Для того чтобы база данных (или система управления базой данных) была полностью реляционной, она должна соответствовать 12 правилам Кодда.
    6.3.2. Правила Кодда
    Автор реляционной модели данных, Е. Ф. Кодд, в 1985 г. опубликовал статью, в которой сформулировал 12 правил реляционной базы данных.
    1. Правило информации.
    Вся информация реляционной базы данных на логическом уровне в полной мере представляется только одним способом — значениями в таблицах.
    ПОЯСНЕНИЕ -----------------------------------------------------------------------------------------------------------
    Не только данные, но и отношения между таблицами или ограничения должны быть
    представлены в виде значений в таблицах.
    2. Правило гарантированного доступа.
    Гарантируется, что каждый элемент данных (атомарное значение) реляци­
    онной базы данных логически доступен через комбинацию из имени таблицы, значения первичного ключа и имени столбца.
    ПОЯСНЕНИЕ -----------------------------------------------------------------------------------------------------------
    В наборе из 12 правил нет явного указания, что каждая строка в таблице должна
    иметь уникальный первичный ключ. Однако правило 2 неявным образом говорит об
    этом: ни одна таблица не может соответствовать правилу гарантированного доступа,
    если в ней нет первичного ключа.
    3. Правило систематической трактовки значений null.
    Значения null (заметим, что они отличаются как от пустой строки символов, так и от строки пробелов) поддерживаются в полностью реляционной СУБД для представления отсутствующей информации систематически и независимо от типа данных.
    ПОЯСНЕНИЕ -----------------------------------------------------------------------------------------------------------
    Во-первых, база данных должна поддерживать значения null для обозначения того,
    что атомарные данные являются неизвестными (null — это не 0, не пустая строка и не
    пробел); во-вторых, в базе данных должно быть общее правило, определяющее, как
    обрабатывать значения null (например, каким образом трактовать их при выполнении
    запросов с выборкой по полю, содержащему такие значения).

    6.3. Реляционные базы данных
    187 4. Правило наличия динамического оперативного каталога на основе реляционной
    модели.
    Описание базы данных представляется на логическом уровне так же, как обычные данные, значит, уполномоченные пользователи могут применять для обращения к этому описанию тот же самый реляционный язык, что и для работы с обычными данными.
    5. Правило наличия исчерпывающего подъязыка данных.
    Реляционная система может поддерживать несколько языков и различных режимов работы с устройствами ввода-вывода, однако должен существовать по меньшей мере один язык, операторы которого точно отражают реляционную модель с вполне определенными синтаксическими конструкциями в виде строк
    , символов и с исчерпывающей поддержкой следующего:
    О описания данных;
    О описания представлений;
    О м анипуляций данными;
    О ограничений целостности;
    О границ транзакций (начала, заверш ен и я и отката).
    6. Правило обновления представлений.
    Все представления, обновляемые теоретически, должны обновляться прак­
    тически.
    7. Правило ввода, обновления и удаления данных на высоком уровне.
    Возможность работы с базовым или производным отношением в качестве одного операнда применима не только к считыванию, но и к вводу, обновлению и удалению данных.
    ПОЯСНЕНИЕ ------------------------------------------------------- -----------------------------------------------------
    Это правило определяет возможность в одной команде выполнить операцию сразу
    над несколькими строками данных.
    8. Правило физической независимости данных.
    Прикладные программы и терминальные операции остаются логически неповрежденными при любом изменении области хранения информации или механизма доступа.
    ПОЯСНЕНИЕ -------------------------------------------------------------------------------------------------------------
    Это правило подразумевает возможность переноса физических данных из одного ка­
    талога (раздела, диска, компьютера) в другой без изменения способа взаимодействия
    пользователей и пользовательских приложений с таблицами базы данных.
    9. Правило логической независимости данных.
    Прикладные программы и терминальные операции остаются логически не­
    поврежденными при внесении в базовые таблицы любого рода изменений, со­

    188
    Глава 6. Теория баз данных храняющих информацию и теоретически допускающих возможность оставить информацию неповрежденной.
    ПОЯСНЕНИЕ -----------------------------------------------------------------------------------------------------------
    Добавление таблицы к схеме базы данных или столбца к схеме таблицы не должно
    оказать никакого влияния на уже работающие прикладные программы, поскольку
    такое действие не уничтожает (а сохраняет) информацию. В случае удаления таблицы
    или столбца сохранение информации, а значит, и работоспособность прикладных
    программ не гарантируется.
    10. Правило независимости целостности.
    При помощи подъязыка реляционных данных должна существовать воз­
    можность описания ограничений целостности, специфичных для конкретной реляционной базы данных, и сохранения их в каталоге, а не в прикладных программах.
    Для этого должны соблюдаться как минимум два ограничения:
    О су щ н о ст н а я ц ел остн ость: ни о д и н и з к ом п он ен т ов п ер в и ч н ого клю ча не
    м ож ет приним ать зн ач ен ия null;
    О ссы лочная целостность: дл я каж дого зн ачен ия внеш него ключа, отличного
    от д р у г и х и не я в л я ю щ егося зн ач ен и ем n ull, в р ел я ц и о н н о й б а зе долж но
    с у щ ес т в о в а т ь с о о т в е т с т в у ю щ е е зн а ч е н и е п ер в и ч н о го клю ча и з т ого же
    дом ен а.
    11. Правило независимости распределения.
    В реляционной СУБД распределение независимо.
    ПОЯСНЕНИЕ -----------------------------------------------------------------------------------------------------------
    Распределенная база данных с точки зрения пользователя не должна отличаться от
    централизованной.
    12. Правило соблюдения правил (запрет обхода правил).
    Если в реляционной системе имеется язык низкого уровня («одна запись за раз»), его нельзя использовать для нарушения или пропуска правил или ограничений целостности, установленных в реляционном языке более высокого уровня («несколько записей за раз»).
    6.3.3. Ключи и связи
    Рассмотрим стандартную для современных информационных систем задачу построения базы данных, которая содержит в себе информацию о клиентах и сде­
    ланных ими заказах (покупках).
    Самое первое решение:, каждый раз, когда клиент делает заказ, делать об этом одну запись в базу данных. Схема этой записи могла бы выглядеть так, как показано на рис. 6.13.

    6.3. Реляционные базы данных
    189
    Номер заказа
    Имя клиента
    Адрес заказа
    Адрес отгрузки
    Контактный адрес
    Номер счета
    Дата заказа
    Дата отгрузки
    Дата оплаты
    Товар 1
    Товар 2
    Товар 3
    Товар 4
    Рис. 6 .1 3 . Схема таблицы Клиенты и заказы
    В этой таблице будет множество записей. Все поля в записях могут принять одинаковые значения (даже номер счета, поскольку один и тот же клиент может сделать два идентичных заказа, и их впишут в один счет). Значит, для того чтобы обеспечить уникальность каждой записи в таблице, необходимо иметь поле, в ко­
    тором значения никогда не повторяются. Если в данной фирме принята сквозная уникальная нумерация заказов, мы можем в качестве уникального идентификатора выбрать номер заказа. В случае, если это не так, мы можем в качестве уникальной метки для записи добавить еще одно поле, значения в котором будут уникальными.
    это т т
    Ы т щ
    Н т трт т т ОШ О *Ш
    ун и *£и % ш . г ; £ * / ; / * ' Ь» 4
    , ,,
    7
    ^
    Проведя моделирование процесса добавления заказов в таблицу, мы можем понять, что такая схема записей является несовершенной: сколько бы позиций товаров мы не внесли, клиент все равно может заказать их больше. Если же мы в схеме предусмотрим заведомо избыточное количество позиций товаров, то по­
    лучим совершенно нечитабельную запись и такую таблицу, в которой при каждом добавлении заказа будет дублироваться большое количество незаполненных полей.
    Избавиться от такого рода несовершенства можно за счет создания связи между таблицами (в нашем случае — связи один ко многим).
    Произведя разделение схемы таблицы на две, одна из которых содержит све­
    дения о сделанном заказе, а другая — о каждом заказанном товаре, мы свяжем эти таблицы между собой при помощи связи один ко многим (на рис. 6.14 это линия с цифрой 1 около одного конца и значком бесконечности около другого).

    190
    Глава 6. Теория баз данных
    Номер заказа
    Имя клиента
    Адрес заказа
    Адрес отгрузки
    Контактный адрес
    Номер счета
    Дата заказа
    Дата отгрузки
    Дата оплаты
    Номер позиции
    Номер заказа
    Описание
    Количество штук
    Цена за штуку
    Общая стоимость
    Рис. 6 .1 4 . Связь один ко многим
    Связь один ко многим связывает один оформленный заказ с набором товаров, входящих в заказ, через поле
    Номер заказа.
    При этом в таблице
    Клиенты и заказы это поле является первичным ключом. В таблице же
    Заказанные товары это поле высту­
    пает в роли внешнего ключа, то есть ключа, через который осуществляется связь между набором товаров и конкретным заказом. Выбрав в таблице
    Заказанные товары все записи, в которых значения внешнего ключа совпадают, можно получить на­
    бор записей, относящихся к одному заказу Первичным ключом таблицы
    Заказанные товары является поле
    Номер позиции.
    6.3.4. Ссылочная целостность
    Как уже отмечалось, первичный ключ любой таблицы должен содержать уни­
    кальные непустые значения для данной таблицы. Это утверждение является одним из правил ссылочной целостности (referential integrity). Практически все современные СУБД контролируют уникальность первичных ключей. При попытке присвоить первичному ключу значение, уже имеющееся в другой записи, СУБД ге­
    нерирует диагностическое сообщение, обычно содержащее словосочетание primary
    key violation (нарушение первичного ключа). Если две таблицы связаны соотноше­
    нием один ко многим, внешний ключ второй таблицы должен содержать только те значения, которые уже имеются среди значений первичного ключа первой таблицы.
    Современные СУБД отслеживают попытки удалить запись в первой таблице, если во второй таблице есть связанные с ней записи, препятствуя этому и генерируя диагностические сообщения. Если бы этого не происходило, со временем вторая таблица переполнилась бы записями, не связанными ни с одной записью в первой таблице (а значит, попросту бесполезными).
    6.3.5. Нормализация данных
    Нормализация представляет собой процесс приведения таблиц к виду, позво­
    ляющему осуществлять непротиворечивое и корректное редактирование данных.

    6.3. Реляционные базы данных
    191
    Первая нормальная форма
    Вернемся к таблице
    Клиенты и заказы.
    Структура этой таблицы показана на рис. 6.15.
    Номер заказа
    Имя клиента
    Адрес заказа
    Адрес отгрузки
    Контактный адрес
    Номер счета
    Дата заказа
    Дата отгрузки
    Дата оплаты
    Рис. 6 .1 5 . Таблица Клиенты и заказы в первой нормальной форме
    Чтобы таблица соответствовала первой нормальной форме, все значения ее полей должны быть атомарными и все записи — уникальными.
    Таблица
    Клиенты и заказы соответствует этим требованиям, как и любая другая реляционная таблица. Однако она, несмотря на выделение из нее таблицы с зака­
    занными товарами, остается в значительной степени избыточной. На самом деле каждый раз, добавляя в таблицу очередной заказ от одного и того же клиента, мы многократно дублируем множество сведений. Это, в свою очередь, может привести к некоторым негативным последствиям:
    □ до тех пор, пока клиент не сделал хотя бы один заказ, сведения о нем не появятся в базе данных;
    □ при удалении последней записи о заказанном товаре из базы исчезают все све­
    дения о клиенте;
    □ при изменении клиентом адреса в базе могут оказаться две записи с разными адресами одного и того же клиента.
    Некоторые из этих проблем могут быть решены путем приведения таблиц дан­
    ных ко второй нормальной форме.
    Вторая нормальная форма
    Реляционная таблица находится во второй нормальной форме, если она на­
    ходится в первой нормальной форме и ее неключевые поля полностью зависят от всего первичного ключа.
    Получить вторую нормальную форму можно, разделив таблицу
    Клиенты и за ­
    казы еще на несколько таблиц. При этом поля разносятся таким образом, чтобы полностью зависеть от первичного ключа соответствующей таблицы (рис. 6.16).

    192
    Глава 6. Теория баз данных
    00
    Номер позиции
    Номер заказа
    Описание
    Количество штук
    Цена за штуку
    Общая стоимость
    Клиенты
    Номер клиента
    Имя клиента
    00
    Номер заказа
    Номер клиента
    Область
    Город
    Улица
    Почтовый индекс
    Тип адреса
    Рис. 6 .1 6 . Таблица Клиенты и заказы во второй нормальной форме
    Третья нормальная форма
    Итак, таблица
    Клиенты и заказы превратилась у нас в группу связанных таблиц.
    Благодаря упорядоченности связей в схеме появилась логика: в центре теперь клиент, с которым связаны его заказы и адреса. В свою очередь, с заказами связаны заказанные товары. Но и эта схема все еще не соответствует третьей нормальной форме. Происходит это потому, что в таблице
    Заказанные товары есть поле
    Общая сто­
    имость.
    Это поле получено в результате произведения значений полей
    Количество штук и
    Цена за штуку.
    База данных находится в третьей нормальной форме, если она находится во второй нормальной форме и все поля ее сущностей не зависят друг от друга1.
    Таким образом, чтобы привести полученную группу объектов к третьей нор­
    мальной форме, нужно удалить из таблицы
    Заказанные товары поле
    Общая стоимость.
    6.3.6. Язык SQL
    Математическая реляционная модель данных предполагает, что для манипу­
    ляций с данными и сущностями должна использоваться одна из специальных алгебр — реляционная. Для реализации операций реляционной алгебры в СУБД был разработан специальный язык SQL (Structured Query Language — структури­
    рованный язык запросов). SQL является декларативным языком программиро­
    вания. В отличие от процедурных языков программирования, SQL определяет не
    1 Существуют и другие нормальные формы с более строгими условиями.

    6.3. Реляционные базы данных
    193
    последовательность процедур, а условия выполнения запроса. При этом запросы могут быть объемом с простую программу на процедурном языке программирова­
    ния (от одной строки до нескольких страниц).
    Язык SQL содержит несколько групп операторов.
    Операторы манипулирования данными
    Операторы манипулирования данными позволяют производить извлечение, добавление, изменение и удаление данных. В группу входят следующие операторы:
    □ SELECT
    — оператор извлечения данных.
    Пример:
    SELECT 'Номер заказа', 'Номер счета’ , 'Дата заказа'
    FROM 'Заказы' WHERE 'Номер клиента' - 20
    Этот запрос обращается к таблице
    Заказы, и выбирает из нее все записи, при­
    надлежащие клиенту с номером
    2 0 , организуя эти записи в три столбца:
    Номер заказа, Номер счета, Дата заказа.
    □ INSERT — опер атор добав л ен и я данны х.
    Пример:
    INSERT INTO 'Заказы' VALUES (1420, 20, 'Ускоренная доставка',
    1221, 15.03.2010)
    Э тот зап р ос обращ ается к табли ц е
    Заказы
    1   ...   15   16   17   18   19   20   21   22   ...   48


    написать администратору сайта