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

Добрый день! У меня ноутбук Dell inspiron с вин7.
был сбой при загрузке после этого входил через аварийную загрузку но не было точки восстановление, к счастье после перезагрузки ноутбук заработал но теперь тачпад плохо работает т.е. иногда не реагирует. помогите в чем может быть дело и как исправить?

  • long_klong

    Здравствуйте. У меня ноутбук DELL с Windows8. Не работает тачпад, т.е вобще не реагирует. Пробовала нажимать Fn+F5 . Йн(Обычной мыши тоже нету и получается что компьютер в нерабочем состоянии. Что делать?

  • катюха

  • Андрей

    Добрый день. У меня ноутбук Toshiba satellite l500d-16Q не работает тачпад. Обновлял драйвера с оф сайта, пробовал включать через горячие клавиши не эфекта. В БИОСЕ нет настроек на вкл тачпада. Мучаюсь 2 дня весь инет перерыл эфекта 0. Даже раскрутил и шлейф проверил, всё в порядке. Помогите очень прошу.

  • Андрей

    Добрый день. Ещё раз с просьбой о помощи. Загрузил ноут в безопасном режиме, не по могло. Проверил Диспетчер всё работает. Synaptics PS/2 Port TouchPad пишет устройство работает нормально. На самом тачпаде нет не каких углублений для вкл. Может ещё есть какие варианты7 Через програмное обеспечение?
    Помогите нет сил боротся…

  • Андрей

    Сделал как вы сказали. Появился жолтый трёхугольник с восклицательным знаком и пишет запуск этого устройства не возможен ошибка (код 10) но и ещё пишет драйвера для этого устройства не нуждаются в обновлении. Не чего не понимаю…

  • Катя

    Добрый вечер. Извините пожалуйста, не знаю, что происходит с ноутбуком. Асус, включаю, минут 6 все работает, потом курсор передвигается, но не работают никакие клавиши, ни на клавиатуре, ни на тачпаде. Вообще ни на что не реагирует… Подскажите пожалуйста, что это может быть…?

  • Олег

    Здравствуйте. Подскажите пожалуйста, что можно сделать. Установил виндовс 10 и перестал работать тайчпад на ноуте Асус. Пробовал кнопки fn+f9 и никакого результата. Винда переустановилась сама

  • Елена

    Здравствуйте, после переустанвки ОС не работает прокрутка и жесты на тачпаде, в панели управления нет тачпада вообще, только мышь и все. Переустанавливала драйверы ничего не изменилось, ранее было тоже самое помогло восстановление системы. Подскажите что делать, ноутбук Dell vostro 3500.

  • Polinka148

    Здраствуйте.
    Сначала ноутбук Samsung перестал видеть любую мышку,и беспроводную и проводную. Проверила их на стационарном компьютере-обе работают. А потом и не стала работать сенсорная панель, но не везде, а только в пользователе «Администратор», а пользователе «Гость»-функционирует только сенсорная панель.
    Помогите, что делать????((((

  • Александр

    У меня на ASUS после установки Windows 10 тачпад включился только из панели управления. Там по умолчанию стояла функция отключения при наличии мышки в USB порту. Так что не удивляйтесь. При этом функциональная клавиша fn+F9 не работает, поскольку устройство отключено программно.

  • Наталья

    Здравствуйте, у меня на нэтбуке асус стояла windows7, перестал работать тач пэд, когда вызываешь диспетчер задач (alt+Ctrl+Del) работает, как только выходить на рабочий стол снова не работает. Проводной мышки нет, срочно нужен компьютер, что делать?

  • artem2104

    Ребят послушайте если у кого-то возникла проблема с тем что вы установили 10 Винду и у вас перестал работать тачпад то это очень легко исправить (заходите в деспетчер устройств далее «мыши и иные устройства и правой кнопкой мыши нажимаете на «Asus tach pad» смотря какая модель у вас ноута, и надимаете Удалить удаляете и у вас перезагрузится ваш ноут и все работать будет как часы…) Удачи)

  • KseniaLo

  • Aleksa

    Добрый день. На ноуте ASER 5552G перестал работать тачпад, перепробовала все выше указанное не помогло. Подскажите где можно скачать драйвера для моего ноутбука, чтобы тачпад вновь заработал. Спасибо.

  • Пулька

    Здравствуйте. После обновления win8 —> win10 перестала работать кнопка вкл/откл тачпада (углубление) на ноутбуке HP 250. Ума не приложу, как сделать, что работало, как и раньше. Благодарю.

  • Альбина.

    Здравствуйте, скажите пожалуйста что делать если перестал работать тачпад, клавиатура работает, включаю или выключаю F6 тачпад все равно не работает, если перезагрузить ноутбук то тачпад работает. Lenovo, вин-8.

  • виктор

    здравствуйте! такая проблема: включаю ноутбук acer extensa 5620G все загружается и после загрузки появляется ромашка а под ромашкой запрашивает пароль для входа жму на клавиши не печатает, курсор тачпад(ом)не двигается??? не могу войти в систему для сброса пароля. ноутбук можно выключить только кнопкой включения. сижу уже 5-е сутки в интернете ищу свою проблему, но увы не чего не нашел

  • Ольга

    Здравствуйте,у меня ноутбук Acer E1-522. Перестаёт работать тачпад. Раньше я чистила систему программой CCleaner и после перезагрузки он начинал работать. Теперь эта прога показывает ошибки в опере и не чистит полностью. Тачпад так и не включается. Кнопки включения-выключения не срабатывают. В биос по предложенным сочетаниям клавиш войти не получилось. На панели управления при открытии «устройства и принтеры» включается не центр управления, а свойства. Не знаю что уже и делать.

  • Анна

  • Лера

  • Alex

  • Евгений

  • Анастасия

    Здравствуйте. После установки windows 10 стал подвисать тачпад, именно после работы с клавиатурой. Зависает секунд на 5, но уже стал раздражать. Ноутбук — HP Pavilion g6. Подскажите, что можно сделать.

  • TIR

    Здравствуйте! проблема следующая. ноут ASUS X554S. была установлена Windows 10, все работало. переустановлена на Windows 7 — не работает тачпад. какие только дрова не ставил, не видит устройства даже в неизвестных.

  • TIR

    так вот именно уже в процессе установки, на этапе разбивки дисков тачпада нету и даже usb мышь не работает. справился клавиатурой в надежде что далее поставится. но нет. драйвера под мою модель на сайте только под windows 10. что смог поставил с инета искал. в итоге картина — как написал в предыдущем сообщении. тачпадом нигде не пахнет. usb мышь работает, в устройствах «Мыши и иные указ. уст-ва» — HID-совместимая мышь. вытаскиваешь мышь, пропадает этот пункт. у меня вот мысль — может на этом ноуте реализована какой-нить программный тачпад, а не аппаратный? что установить можно?

  • Альбина.

  • Ирина

    Ноутбук HP ProBook4730, отключается тачпад и мышка. После включения ноутбука они работают и через несколько секунд, минут перестают реагировать. Если через диспетчер задач выходишь на смену пользователей, и мышка и тачпад реагирует и работает. как только заново заходишь в систему они перестают работать. перезагружаешь ноутбук опять, чуть поработает и перестает. Решала один раз проблему таким образом: сняла с близнеца ноутбука образ и поставила на этот ноутбук, все хорошо работало и через пол года опять та же проблема. Помогите разобраться с проблемой. Что делать?

  • Михаил

  • валёк

  • marahovarita

    здравствуйте,не знаю что делать заходила в биос там нет такого пункта,потом смотрела в устройствах там только мышь стоит а как установить драйвер не знаю,ноутбук acer extensa 2510G

  • Гиз

    Здравствуйте. У меня ноутбук сони вайо. Не давно купил новую мышку беспроводную, после пару дней на экране мышка начала сама ходить и нажимать. Переустановил драйвера помогло, но потом через 2 дня опять началось так же, тогда сменил мушку думал из-за драйверов мыши дерутся с тачпадом. Но нет. Тачпад хуже бегать и нажимать, переустановка драйвера не помогло, переустановка винды тоже, разбор и чистка внутри тоже, даже танец с бубном… Есть такой момент после перезагрузки мышка не сразу бесится, но если палец поставишь над тачпадом сантиметров 3~4 то он как бы чувствует и начинает беситься… Не пойму в чем проблема. Тачпад не бил, не ударял, над ним не ел, не пил… Все было хорошо а потом просто раз и все… Не знаю что делать, в сервис или как то можно сэкономить? Отпишите пожалуйста на маил. Благодарю.

  • Серж

    Доброго времени суток. Вдруг, неожиданно, тачпад стал подтормаживать,- то реагировал со 2-го или большего нажатия, то при вызове «волшебных кнопок» вообще умирал. А сейчас, при загрузке ноута, по началу кое-как подаёт знаки жизни, спустя минут 10-15 не работает вообще, но может иногда включаться. До появления проблемы обновлял драйверы (DriverPack Solution). Спасибо. Ноутбук Lenovo 80E3, Windows 8.1

  • Nasteel

  • Серж

    Спасибо, частично помогло (хотя, ноут всегда держу в чистоте и протираю часто, сухой вискозной тряпочкой), видать поверхность тачпада покрылась жировой плёнкой от пальца. Но вот в некоторых случаях всё равно не работает, к примеру, если вызвать «волшебные кнопки», то по-прежнему умирает, когда они исчезают, вновь работает. Не думал, что с этим тачпадом будет такая марока. За ранее спасибо.

  • KASPER89

    Ноутбук Dell Inspiron 3551, после переустановки с Win8.1 на Win7x64 перестал работать тачпад, драйвер с оф сайта не устанавливается. После манипуляций с драйверами пропадает клавиатура но решается автоматическим обновлением драйверов, если тоже делать с мышкой (тачпадом) выскакивает ошибка. В свойствах оборудования «ошибка 10». Кнопку включения тачпада найти не могу может её и нет.

  • Роман

    Добрый день! Менял термопасту в ноутбуке Dell Inspiron N5110 (разбирал и собирал корпус, естественно). После перестала работать левая кнопка тачпада и функция клика (как левой кнопкой мыши)на сенсорной панели. Правая кнопка работает, движение курсора с помощью сенсорной кнопки работает. Драйвера переустанавливал- не помогло. Кнопки прожимаются, все в порядке. В чем может быть проблема?

  • Олег

    Здравствуйте! После включения Sony Vaio sve 1712t1rb вертикальная прокрутка работает несколько минут пока не погаснет рабочий стол и сразу же после восстановления рабочего стола прокрутка уже не работает. После перезагрузки компьютера снова все работает пока не выключится рабочий стол.

  • Марыся

    Спасибо огромное! Полгода просидела привязанная мышью к ноуту packard bell, пока не нашла Вашу статью. Перепробовала все! Но это была F6, а я лох)
    Спасибо еще раз!

  • Павел

  • Елена

    Здравствуйте,у меня на ноутбуке aser aspire 5730 не работает тачпад. Сам по себе бегает по экрану,открывает всякие окна. Подскажите пожалуйста.что делать(((

  • Алeксeй

    Здравствуйтe, ноутбук ASUS, рeзко пeрeстал работать тачпад. Работаeт только лeвый «клик». Движeния нe воспринимаются. Подскажитe пожалуйста, что дeлать?

  • Валерия

    Здравствуйте, тачпад не работает, когда отключаю ноутбук от розетки, все остальное время прекрасно работает.
    Подскажите, пожалуйста, что делать

  • Lni

    У меня hp elitebook 8470p. Неожиданно прекратил работать тачпад, хотя еще утром все было нормально. То есть, не работает сенсорная панель и клавиши снизу, при этом верхние клавиши и джойстик работают (если в настройках отключить, то все не работает). Драйвера проверяла, биос тоже, тачпад включала/выключала, ничего не помогло.

  • raic

    Packard bell ts11sb/ вторые сутки не могу победить тач. со слов хозяйки умер когда отдала переустановить винду. поставил свою 7-64. тач не работает вообще. биос пустой. на тач настроек нет. все драйвера с офсайта.установилось все кроме тач. Винда видит тач в скрытых устройствах. помечен восклицательным знаком. пишет следующее Устройство отсутствует, работает неправильно, или для него установлены не все драйверы. (Код 24).. так сколько драйверов для него надо то? все перепробовал.

  • Alena

    Здравствуйте. Имеется проблема с неработающим тачпадом (не удивительно). Ноутбук Lenovo, недавно менялась термопаста, после чего перестал работать тачпад. В диспетчере устройств его нет в принципе, т.е. присутсвует только подключенная к ноутбуку мышь (при ее отключении параметр «мышь» отсутствует вовсе). До этого все работало исправно. Может ли быть проблема из-за случайного повреждения подсоединений к мат. плате, хотя все проверялось и вроде как подключено?

    • SMARTRONIX

    • Alena

    • SMARTRONIX

      Клавиши тачпада так же не работают?
      Проверьте, верно ли вставлен шлейф, иногда он немного не доходит или перекошен или вообще не той стороной вставили. Попробуйте скачать драйвер для тачпада, на сайте производителя ноутбука, для вашей модели.

  • Общая характеристика реляционной модели данных

    Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реляционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту . Согласно Дейту, реляционная модель состоит из трех частей:


    • Структурной части.

    • Целостной части.

    • Манипуляционной части.
    Структурная часть описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n-арные отношения.

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

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

    В данной главе рассматривается структурная часть реляционной модели.

    ^ Типы данных

    Любые данные, используемые в программировании, имеют свои типы данных.

    Важно! Реляционная модель требует, чтобы типы используемых данных были простыми .

    Для уточнения этого утверждения рассмотрим, какие вообще типы данных обычно рассматриваются в программировании. Как правило, типы данных делятся на три группы:


    • Простые типы данных.

    • Структурированные типы данных.

    • Ссылочные типы данных.
    Простые типы данных

    Простые, или атомарные, типы данных не обладают внутренней структурой. Данные такого типа называют скалярами . К простым типам данных относятся следующие типы:


    • Логический.

    • Строковый.

    • Численный.
    Различные языки программирования могут расширять и уточнять этот список, добавляя такие типы как:

    • Целый.

    • Вещественный.

    • Дата.

    • Время.

    • Денежный.

    • Перечислимый.

    • Интервальный.

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

    ^

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


    • Массивы

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

    Называемое множеством индексов. Отображение

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

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

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

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

    Работая же с простыми типами данных, например с числовыми, мы манипулируем ими как неделимыми целыми объектами. Чтобы "увидеть", что числовой тип данных на самом деле сложен (является набором битов), нужно перейти на более низкий уровень абстракции. На уровне программного кода это будет выглядеть как ассемблерные вставки в код на языке высокого уровня или использование специальных побитных операций.

    ^ Ссылочные типы данных

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

    ^ Типы данных, используемые в реляционной модели

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

    С этой точки зрения, если рассматривать массив, например, как единое целое и не использовать поэлементных операций, то массив можно считать простым типом данных. Более того, можно создать свой, сколь угодно сложных тип данных, описать возможные действия с этим типом данных, и, если в операциях не требуется знание внутренней структуры данных, то такой тип данных также будет простым с точки зрения реляционной теории. Например, можно создать новый тип - комплексные числа как запись вида , где . Можно описать функции сложения, умножения, вычитания и деления, и все действия с компонентами и выполнять только внутри этих операций. Тогда, если в действиях с этим типом использовать только описанные операции, то внутренняя структура не играет роли, и тип данных извне выглядит как атомарный.

    Именно так в некоторых пост-реляционных СУБД реализована работа со сколь угодно сложными типами данных, создаваемых пользователями.

    Домены

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

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


    • Домен имеет уникальное имя (в пределах базы данных).

    • Домен определен на некотором простом типе данных или на другом домене.

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

    • Домен несет определенную смысловую нагрузку .
    Например, домен , имеющий смысл "возраст сотрудника" можно описать как следующее подмножество множества натуральных чисел:

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

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

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

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

    Замечание . Не всегда очевидно, как задать логическое условие, ограничивающее возможные значения домена. Я буду благодарен тому, кто приведет мне условие на строковый тип данных, задающий домен "Фамилия сотрудника". Ясно, что строки, являющиеся фамилиями не должны начинаться с цифр, служебных символов, с мягкого знака и т.д. Но вот является ли допустимой фамилия "Ггггггыыыыы"? Почему бы нет? Очевидно, нет! А может кто-то назло так себя назовет. Трудности такого рода возникают потому, что смысл реальных явлений далеко не всегда можно формально описать. Просто мы, как все люди, интуитивно понимаем, что такое фамилия, но никто не может дать такое формальное определение, которое отличало бы фамилии от строк, фамилиями не являющимися. Выход из этой ситуации простой - положиться на разум сотрудника, вводящего фамилии в компьютер.

    ^ Отношения, атрибуты, кортежи отношения

    Определения и примеры

    Фундаментальным понятием реляционной модели данных является понятие отношения . В определении понятия отношения будем следовать книге К. Дейта .

    Определение 1. Атрибут отношения есть пара вида <Имя_атрибута: Имя_домена>.

    Имена атрибутов должны быть уникальны в пределах отношения. Часто имена атрибутов отношения совпадают с именами соответствующих доменов.

    Определение 2 . Отношение , определенное на множестве доменов (не обязательно различных), содержит две части: заголовок и тело.

    Заголовок отношения содержит фиксированное количество атрибутов отношения:

    Тело отношения содержит множество кортежей отношения. Каждый кортеж отношения представляет собой множество пар вида <Имя_атрибута: Значение_атрибута>:

    Таких что значение атрибута принадлежит домену

    Отношение обычно записывается в виде:

    Или короче

    ,

    Или просто

    Число атрибутов в отношении называют степенью (или -арностью ) отношения.

    Мощность множества кортежей отношения называют мощностью отношения.

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

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

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

    Пример 1 . Рассмотрим отношение "Сотрудники" заданное на доменах "Номер_сотрудника", "Фамилия", "Зарплата", "Номер_отдела". Т.к. все домены различны, то имена атрибутов отношения удобно назвать так же, как и соответствующие домены. Заголовок отношения имеет вид:

    Сотрудники (Номер_сотрудника, Фамилия, Зарплата, Номер_отдела)

    Пусть в данный момент отношение содержит три кортежа:

    (1,Иванов, 1000, 1)

    (2, Петров, 2000, 2)

    (3, Сидоров, 3000, 1)

    Такое отношение естественным образом представляется в виде таблицы:

    ^ Таблица 1 Отношение "Сотрудники"

    Определение 3 . Реляционной базой данных называется набор отношений.

    Определение 4 . Схемой реляционной базы

    Хотя любое отношение можно изобразить в виде таблицы, нужно четко понимать, что отношения не являются таблицами . Это близкие, но не совпадающие понятия. Различия между отношениями и таблицами будут рассмотрены ниже.

    Термины, которыми оперирует реляционная модель данных , имеют соответствующие "табличные" синонимы:


    ^ Реляционный термин

    Соответствующий "табличный" термин

    База данных

    Набор таблиц

    Схема базы данных

    Набор заголовков таблиц

    Отношение

    Таблица

    Заголовок отношения

    Заголовок таблицы

    Тело отношения

    Тело таблицы

    Атрибут отношения

    Наименование столбца таблицы

    Кортеж отношения

    Строка таблицы

    Степень (-арность) отношения

    Количество столбцов таблицы

    Мощность отношения

    Количество строк таблицы

    Домены и типы данных

    Типы данные в ячейках таблицы

    ^ Свойства отношений

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


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

    2. ^ Кортежи не упорядочены (сверху вниз) . Действительно, несмотря на то, что мы изобразили отношение "Сотрудники" в виде таблицы, нельзя сказать, что сотрудник Иванов "предшествует" сотруднику Петрову. Причина та же - тело отношения есть множество, а множество не упорядочено. Это вторая причина, по которой нельзя отождествить отношения и таблицы - строки в таблицах упорядочены. Одно и то же отношение может быть изображено разными таблицами, в которых строки идут в различном порядке .

    3. ^ Атрибуты не упорядочены (слева направо) . Т.к. каждый атрибут имеет уникальное имя в пределах отношения, то порядок атрибутов не имеет значения. Это свойство несколько отличает отношение от математического определения отношения (см. гл.1 - компоненты кортежей там упорядочены ). Это также третья причина, по которой нельзя отождествить отношения и таблицы - столбцы в таблице упорядочены. Одно и то же отношение может быть изображено разными таблицами, в которых столбцы идут в различном порядке .

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

    Замечание . Каждое отношение можно считать классом эквивалентности таблиц , для которых выполняются следующие условия:


    • Таблицы имеют одинаковое количество столбцов.

    • Таблицы содержат столбцы с одинаковыми наименованиями.

    • Столбцы с одинаковыми наименованиями содержат данные из одних и тех же доменов.

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

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

    Труднее всего дать определение вещей, которые всем понятны. Если давать не строгое, описательное определение, то всегда остается возможность неправильной его трактовки. Если дать строгое формальное определение, то оно, как правило, или тривиально, или слишком громоздко. Именно такая ситуация с определением отношения в Первой Нормальной Форме (1НФ ). Совсем не говорить об этом нельзя, т.к. на основе 1НФ строятся более высокие нормальные формы, которые рассматриваются далее в гл. 6 и 7. Дать определение 1НФ сложно ввиду его тривиальности. Поэтому, дадим просто несколько объяснений.

    Объяснение 1 . Говорят, что отношение находится в 1НФ, если оно удовлетворяет определению 2.

    Это, собственно, тавтология, ведь из определения 2 следует, что других отношений не бывает. Действительно, определение 2 описывает, что является отношением, а что - нет, следовательно, отношений в непервой нормальной форме просто нет.

    Объяснение 2 . Говорят, что отношение находится в 1НФ, если его атрибуты содержат только скалярные (атомарные) значения.

    Опять же, определение 2 опирается на понятие домена, а домены определены на простых типах данных.

    Непервую нормальную форму можно получить, если допустить, что атрибуты отношения могут быть определены на сложных типах данных - массивах, структурах, или даже на других отношениях. Легко себе представить таблицу, у которой в некоторых ячейках содержатся массивы, в других ячейках - определенные пользователями сложные структуры, а в третьих ячейках - целые реляционные таблицы, которые в свою очередь могут содержать такие же сложные объекты. Именно такие возможности предоставляются некоторыми современными пост-реляционными и объектными СУБД.

    Требование, что отношения должны содержать только данные простых типов, объясняет, почему отношения иногда называют плоскими таблицами (plain table ). Действительно, таблицы, задающие отношения двумерны. Одно измерение задается списком столбцов, второе измерение задается списком строк. Пара координат (Номер строки, Номер столбца) однозначно идентифицирует ячейку таблицы и содержащееся в ней значение. Если же допустить, что в ячейке таблицы могут содержаться данные сложных типов (массивы, структуры, другие таблицы), то такая таблица будет уже не плоской. Например, если в ячейке таблицы содержится массив, то для обращения к элементу массива нужно знать три параметра (Номер строки, Номер столбца, номер элемента в массиве).

    Таким образом появляется третье объяснение Первой Нормальной Формы:

    Объяснение 3 . Отношение находится в 1НФ, если оно является плоской таблицей.

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

    Выводы

    Реляционная модель данных состоит из трех частей:


    • Структурной части.

    • Целостной части.

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

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

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

    Отношение обладает следующими свойствами:


    • В отношении нет одинаковых кортежей.

    • Кортежи не упорядочены (сверху вниз).

    • Атрибуты не упорядочены (слева направо).

    • Все значения атрибутов атомарны.
    Реляционной базой данных называется набор отношений.

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

    Отношение находится в Первой Нормальной Форме (1НФ ), если оно содержит только скалярные (атомарные) значения.

    Главная > Лекция

    Лекция БД Глава 2 РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ 2.1. Термины и определения Развитие реляционных баз данных началось в конце 1960-х гг., когда появились первые работы, в которых обсуждались возмож-ности использования привычных для специалиста способов фор-мализованного представления данных в виде таблиц. Некоторые специалисты такой способ представления информации называли таблицами решений, другие - табличными алгоритмами. Теоре-тики реляционных баз данных табличный способ представления информации называли даталогическими моделями. Основоположником теории реляционных баз данных считается сотрудник фирмы IВM доктор Э. Ф. Кодд, опубликовавший 6 июня 1970 г. статью «Реляционная модель данных для больших коллек-тивных банков данных» «А Relational Model of Data for Large Shared Data Banks». В этой статье впервые и был использован термин «ре-ляционная модель данных», что и положило начало реляцион-ным базам данных. Теория реляционных баз данных, разработанная в 1970- х гг. в США доктором Э. Ф. Коддом, опиралась на математический аппарат те-ории множеств. Он доказал, что любой набор данных МОЖНО пред-ставить в виде двумерных таблиц особого вида, известных в матема-тике как отношения. От английского слова «relation» «отношение») и произошло название «реляционная модель данных». В настоящее время теоретическую основу проектирования баз данных (БД) состав-ляет математический аппарат реляционной алгебры (см. подразд. 1.2). Таким образом, реляционная БД представляет собой инфор-мацию (данные) об объектах, представленную в виде двумерных массивов - таблиц, объединенных определенными связями. База данных может состоять и из одной таблицы. Прежде чем присту-пить к дальнейшему изучению реляционных баз данных, рассмот-рим применяемые в теории и практике термины и определения. Таблица базы данных - двумерный массив, содержащий ин-формацию об одном классе объектов. В теории реляционной ал-гебры двумерный массив (таблицу) называют отношением. Таблица состоит из следующих элементов: поле, ячейка, за-пись (рис. 2.1). Поле содержит значения одного из признаков, характеризу-ющих объекты БД. Число полей в таблице соответствует числу при-знаков, характеризующих объекты БД. 22 Ячейка содержит конкретное значение соответствующего поля (признака одного объекта). Запись - строка таблицы. Она содержит значения всех призна-ков, характеризующих один объект. Число записей (строк) соот-ветствует числу объектов, данные о которых содержатся в таб-лице. В теории баз данных термину запись соответствует понятие кор-теж - последовательность атрибутов, связанных между собой от-ношением AND (И). В теории графов кортеж означает простую ветвь ориентированного графа - дерева. В табл. 2.1 приведены термины, применяемые в теории и прак-тике разработки реляционных баз данных. Одним из важных понятий, необходимых для построения оп-тимальной структуры реляционных баз данных, является понятие ключа, или ключевого поля. Ключом считается поле, значения которого однозначно опреде-ляют значения всех остальных полей в таблице. Например, поле «Номер паспорта», или «Идентификационный номер налогопла-тельщика (ИНН)», однозначно определяет характеристики любого физического лица (при составлении соответствующих таблиц баз данных ДЛЯ отделов кадров или бухгалтерии предприятия).
    23

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

    Уникальность ключа означает, что в любой момент времени таблица базы данных не может содержать никакие две различные записи, имеющие одинаковые значения ключевых полей. Выпол-нение условия уникальности является обязательным. Условие минимальности ключевых полей означает, что только сочетание значений выбранных полей отвечает требованиям уни-кальности записей таблицы базы данных. Это означает также, что ни одно из входящих в ключ полей не может быть исключено из него без нарушения уникальности. При формировании ключа таблицы базы данных, состоящего из нескольких полей, необходимо руководствоваться следующи-ми положениями: не следует включать в состав ключа поля таблицы, значения которых сами по себе однозначно идентифицируют записи в таб-лице. Например, не стоит создавать ключ, содержащий одновре-менно поля «номер паспорта» и «идентификационный номер на-логоплательщика», поскольку каждый из этих атрибутов может однозначно идентифицировать записи в таблице; нельзя включать в состав ключа неуникальное поле, т. е. поле, значения которого могут повторяться в таблице. Каждая таблица должна иметь, по крайней мере, один воз-можный ключ, который выбирается в качестве первичного ключа. Если в таблице существуют поля, значения каждого из которых однозначно определяют записи, то эти поля могут быть приняты в качестве альтернативных ключей. Например, если в качестве первичного ключа выбрать идентификационный номер нало-гоплательщика, то номер паспорта будет альтернативным ключом. 2.2. Нормализация таблиц реляционной базы данных Реляционная база данных представляет собой некоторое мно-жество таблиц, связанных между собой. Число таблиц в одном файле или одной базе данных зависит от многих факторов, основ-ными из которых являются: состав пользователей базы данных, обеспечение целостности информации (особенно важно в мно-гопользовательских информационных системах), обеспечение наименьшего объема требуемой памяти и мини-мального времени обработки данных. 24

    Учет данных факторов при проектировании реляционных баз данных осуществляется методами нормализации таблиц и уста-HoBлeHиeM связей между ними.

    Нормализация таблиц представляет собой способы разделения одной таблицы базы данных на несколько таблиц, в целом отве-чающих перечисленным выше требованиям. Нормализация таблицы представляет собой последовательное изменение структуры таблицы до тех пор, пока она не будет удов-летворять требованиям последней формы нормализации. Всего су-ществует шесть форм нормализации:
      первая нормальная форма (First Normal Form - 1NF); вторая нормальная форма (Second Normal Form - 2NF); третья нормальная форма (Third Normal Form - ЗNF); нормальная форма Бойса - Кодда (Brice - Codd Normal Form -BCNF); четвертая нормальная форма (Foиrth Normal Form - 4NF); пятая нормальная форма, или нормальная форма проекции--соединения (Fifth Normal Form - 5NF, или PJ/NF).
    При описании нормальных форм используются следующие по-нятия: «функциональная зависимость между полями»; «полная функциональная зависимость между полями»; «многозначная функ-циональная зависимость между полями»; «транзитивная функцио-нальная зависимость между полями»; «взаимная независимость между полями». Функциональной зависимостью между полями А и В называется зависимость, при которой каждому значению А в любой момент времени соответствует единственное значение В из всех возмож-ных. Примером функциональной зависимости может служить связь между идентификационным номером налогоплательщика и но-мером его паспорта. Полной функциональной зависимостью между составным полем А и полем В называется зависимость, при которой поле В зависит функционально от поля А и не зависит функционально от любого подмножества поля А. Многозначная функциональная зависимость между полями опре-деляется следующим образом. Поле А многозначно определяет поле В, если для каждого значения поля А существует «хорошо опре-деленное множество» соответствующих значений поля В. Напри-Мер, если рассматривать таблицу успеваемости учащихся в шко-Ле, включающую в себя поля «Предмет» (поле А) и «Оценка» (поле В), то поле В имеет «хорошо определенное множество» до-пустимых значений: 1, 2, 3, 4, 5, т. е. для каждого значения поля «Предмет» существует многозначное «хорошо определенное мно-жество» значений поля «Оценка». Транзитивная функциональная зависимость между полями А и С Существует в том случае, если поле С функционально зависит от 25 поля В, а поле В функционально зависит от поля А; при этом не существует функциональной зависимости поля А от поля В. Взаимная независимость между полями определяется следующим образом. Несколько полей взаимно независимы, если ни одно из них не является функционально зависимым от другого. Первая нормальная форма. Таблица находится в первой нор-мальной форме тогда и только тогда, когда ни одно из полей не содержит более одного значения и любое ключевое поле не пусто. Первая нормальная форма является основой реляционной мо-дели данных. Любая таблица в реляционной базе данных автома-тически находится в первой нормальной форме, иное просто не-возможно по определению. В такой таблице не должно содержать-ся полей (признаков), которые можно было бы разделить на несколько полей (признаков). Ненормализованными, как правило, бывают таблицы, изна-чально не предназначенные для компьютерной обработки содержащейся в них информации. Например, в табл. 2.2 показан фраг-мент таблицы из справочника «Универсальные металлорежущие станки», изданного Экспериментальным научно- исследователь-ским институтом металлорежущих станков (ЭНИМС). Данная таблица является ненормализованной по следующим причинам. 1. Она содержит строки, имеющие в одной ячейке несколько значений одного поля: «Наибольший диаметр обработки, мм» и «Частота вращения шпинделя, об/мин». 2. Одно поле - «Габаритные размеры (длина х ширина х высо-та), мм» может быть разделено на три поля: «Длина, мм», «Ши-рина, мм» И «Высота, мм». Целесообразность такого разделения может быть обоснована необходимостью последующих расчетов площадей или занимаемых объемов. Исходная таблица должна быть преобразована в первую нор-мальную форму. Для этого необходимо: поля «Наибольший диаметр обработки, мм» и «Частота вра-щения шпинделя, об/мин» разделить на несколько полей в соот-ветствии с числом значений, содержащихся в одной ячейке;
    26

    Поле «Габаритные размеры (длина х ширина х высота), мм» , разделить на три поля: «Длина, мм», «Ширина, мм», «Высота, мм». Ключевым полем данной таблицы может быть поле «Модель станка» или «№ п/п» Вид нормальной формы имеет табл. 2.3. Рассмотрим еще один пример. На рис. 2.2 показан фрагмент бланка зачетно-экзаменационной ведомости, который, как и в предыдущем примере, изначально не предназначался для компь-ютерной обработки. Пусть мы хотим создать базу данных для автоматизированной обработки результатов зачетно-экзаменационной сессии в соответствии
    27

    с содержанием зачетно-экзаменационной ведомости. Для этого преобразуем содержание бланка в таблицы базы данных. Ис-ходя из необходимости соблюдения условий функциональной за-висимости между полями необходимо сформировать, как мини-мум, две таблицы (рис. 2.3) (ключевые поля в каждой таблице выделены полужирным шрифтом). В первой таблице содержатся результаты сдачи зачета (экзамена) каждым студентом по конк-ретному предмету. Во второй таблице содержатся результирующие итоги сдачи зачета (экзамена) конкретной группы студентов по конкретному предмету. В первой таблице ключевым является поле «ФИО студента», а во второй таблице - поле «Дисциплина». Таб-лицы должны быть связаны между собой по полям «Дисциплина» И «Шифр группы».

    Представленные структуры таблиц полностью отвечает требо-ваниям первой нормальной формы, но характеризуется следу-ющими недостатками: добавление новых данных в таблицы требует ввода значений для всех полей; в каждую строку каждой таблицы необходимо вводить повто-ряющиеся значения полей «Дисциплина», «ФИО преподавателя», «Шифр группы». Следовательно, при таком составе таблиц и их структуре име-ется явная избыточность информации, что, естественно, потре-бует дополнительных объемов памяти. Чтобы избежать перечисленных недостатков, необходимо при-вести таблицы ко второй или третьей нормальной форме. Вторая нормальная форма. Таблица находится во второй нор-мальной форме, если она удовлетворяет требованиям первой нор-мальной формы и все ее поля, не входящие в первичный ключ, связаны полной функциональной зависимостью с первичным ключом. 28

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

    Если же первичный ключ составной, то таблица необязатель-но находится во второй нормальной форме. Тогда ее необходимо разделить на две или более таблиц таким образом, чтобы первич-ный ключ однозначно идентифицировал значение в любом поле. Если в таблице имеется хотя бы одно поле, не зависящее от пер-вичного ключа, то в первичный ключ необходимо включить до-полнительные колонки. Если таких колонок нет, то необходимо добавить новую колонку. Исходя из данных условий, определяющих вторую нормаль-ную форму, можно сделать следующие выводы по характеристике составленных таблиц (см. рис. 2.3). В первой таблице нет прямой связи между ключевым полем и полем «ФИО преподавателя», поскольку зачет или экзамен по одному предмету могут принимать разные преподаватели. В табли-це существует полная функциональная зависимость только между всеми остальными полями и ключевым полем «Дисциплина». Аналогично во второй таблице нет прямой связи между ключе-вым полем и полем «ФИО преподавателя». Для оптимизации базы данных, в частности для уменьшения требуемого объема памяти из-за необходимости повторения в каждой записи значений полей «Дисциплина» И «ФИО препо-давателя», необходимо изменить структуру базы данных - пре-образовать исходные таблицы во вторую нормальную форму. Состав таблиц измененной структуры базы данных показан на рис. 2.4. Преобразованная структура базы данных состоит из шести таб-лиц, две из которых связаны между собой (ключевые поля в каж-дой таблице выделены полужирным шрифтом). Все таблицы удов-летворяют требованиям второй нормальной формы. Пятая и шестая таблицы имеют в полях повторяющиеся значе-ния, но, учитывая, что эти значения представляют собой целые числа вместо текстовых данных, общий объем требуемой памяти для хранения информации значительно меньше, чем в исходных таблицах (см. рис. 2.1). Кроме того, новая структура базы данных обеспечит возмож-ность заполнения таблиц различными специалистами (подразде-лениями управленческих служб). Дальнейшая оптимизация таб-лиц баз данных сводится к приведению их к третьей нормальной форме. Третья нормальная форма. Таблица находится в третьей нор-мальной форме, если она удовлетворяет определению второй нор-мальной формы и ни одно из ее не ключевых полей не зависит функционально от любого другого не ключевого поля. 29

    Можно также сказать, что таблица находится в третьей нор-мальной форме, если она находится во второй нормальной форме и каждое не ключевое поле не транзитивно зависит от первичного ключа. Требование третьей нормальной формы сводится к тому, чтобы все не ключевые поля зависели только от первичного ключа и не зависели друг от друга. В соответствии с этими требованиями в составе таблиц базы данных (см. рис. 2.3) к третьей нормальной форме относятся пер-вая, вторая, третья и четвертая таблицы. Для приведения пятой и шестой таблиц к третьей нормальной форме создадим новую таблицу, содержащую информацию о со-ставе предметов, по которым проводятся экзамены или зачеты в группах студентов. В качестве ключа создадим поле «Счетчик», ус-танавливающий номер записи в таблице, так как каждая запись должна быть уникальна. 30

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

    Нормальная форма Бойса - Кодда. Таблица находится в нор-мальной форме Бойса - Кодда только в том случае, если любая функциональная зависимость между ее полями сводится к пол-ной функциональной зависимости от возможного ключа. Согласно данному определению в структуре базы данных (см. рис. 2.4) все таблицы соответствуют требованиям нормальной формы Бойса - Кодда. Дальнейшая оптимизация таблиц баз данных должна сводить-ся к полной декомпозиции таблиц. Полной декомпозицией таблицы называют такую совокупность произвольного числа ее проекций, соединение которых полно-стью совпадает с содержимым таблицы. Проекцией называют копию таблицы, в которую не включены одна или несколько колонок новой таблицы. Четвертая нормальная форма. Четвертая нормальная форма яв-ляется частным случаем пятой нормальной формы, когда полная декомпозиция должна быть соединением двух проекций.
    31

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

    Пятая нормальная форма. Таблица находится в пятой нормаль-ной форме тогда и только тогда, когда в каждой ее полной деком-позиции все проекции содержат возможный ключ. Таблица, не имеющая ни одной полной декомпозиции, также находится в пятой нормальной форме. На практике оптимизация таблиц базы данных заканчивается третьей нормальной формой. Приведение таблиц к четвертой и пятой нормальным формам представляет, по нашему мнению, чисто теоретический интерес. Практически эта проблема решает-ся разработкой запросов на создание новой таблицы. 2.3. Проектирование связей между таблицами Процесс нормализации исходных таблиц баз данных позволяет создать оптимальную структуру информационной системы - раз-работать базу данных, требующую наименьших ресурсов памяти и, как следствие, обеспечивающую наименьшее время доступа к информации. В то же время разделение одной исходной таблицы на несколь-ко требует выполнения одного из важнейших условий проектиро-вания информационных систем - обеспечения целостности ин-формации в процессе эксплуатации базы данных. В приведенном выше примере нормализации исходных таб-лиц (см. рис. 2.3) из двух таблиц в конечном итоге мы получили семь таблиц, приведенных к третьей и четвертой нормальным формам. Как показывает практика, в реальном производстве и бизнесе базы данных представляют собой многопользовательские систе-мы. Это относится как к созданию и поддержанию данных в от-дельных таблицах, так и к использованию информации для при-нятия решений. В рассмотренном выше примере, в реально функционирующей системе управления учебным процессом в вузе или колледже, пер-воначальное формирование учебных групп производится прием-ными комиссиями при зачислении абитуриентов по результатам вступительных экзаменов. Дальнейшее поддержание информации о составе студентов в группах в вузах возлагается на деканаты, а в колледжах - на учебные отделения или соответствующие струк-туры. Состав учебных дисциплин по группам определяется други-ми службами или специалистами. Информация о преподаватель-ском составе формируется в отделах кадров. Результаты зачетных и экзаменационных сессий необходимы руководителям деканата и отделений, в том числе и для принятия решений о предоставлении 32 успевающим студентам стипендии или «снятии со стипен-дию» неуспевающих студентов. Любое изменение в любой из таблиц базы данных должно на-ходить адекватное изменение во всех других таблицах. Это и со-ставляет сущность обеспечения целостности базы данных. Прак-тически эта задача осуществляется установлением связей между таблицами базы данных. Сформулируем основные правила установления связей между таблицами. 1. Выбрать из двух связываемых таблиц главную и подчинен-ную. 2. В каждой таблице выбрать ключевое поле. Ключевое поле глав-ной таблицы называют первичным ключом. Ключевое поле подчи-ненной таблицы называют внешним ключом. 3. Связываемые поля таблиц должны иметь один тип данных. 4. Между таблицами устанавливаются следующие типы связей: «один к одному»; «один ко многим»; «многие ко многим»: связь «один к одному» устанавливается в случаях, когда конкретная строка главной таблицы в любой момент времени связана только с одной строкой подчиненной таблицы; связь «один ко многим» устанавливается в случаях, когда конкретная строка главной таблицы в любой момент времени
    33 связана с несколькими строками подчиненной таблицы; при этом любая строка подчиненной таблицы связана только с од-ной строкой главной таблицы; связь «многие ко многим» устанавливается в случаях, ког-да конкретная строка главной таблицы в любой момент време-ни связана с несколькими строками подчиненной таблицы и в то же время одна строка подчиненной таблицы связана с не-сколькими строками главной таблицы. При изменении значения первичного ключа в главной таблице возможны следующие варианты поведения зависимой таблицы. Каскадирование (Cascading). При изменении данных первично-го ключа в главной таблице происходит изменение соответству-ющих данных внешнего ключа в зависимой таблице. Все имеющи-еся связи сохраняются. Ограничение (Restrict). При попытке изменить значение пер-вичного ключа, с которым связаны строки в зависимой таблице, изменения отвергаются. Допускается изменение лишь тех значе-ний первичного ключа, для которых не установлена связь с зави-симой таблицей. Установление (Relation). При изменении данных первичного ключа внешний ключ устанавливается в неопределенное значе-ние (NULL). Информация о принадлежности строк зависимой таблицы теряется. Если изменить несколько значений первичного ключа, то в зависимой таблице образуется несколько групп строк, которые ранее были связаны с измененными ключами. После это-го невозможно определить, какая строка с каким первичным клю-чом была связана. На рис. 2.6 показаны схемы связей меЖдУ таблицами базы дан-ных, представленной на рис. 2.5. Контрольные вопросы 1. Дайте определения следующим элементам таблицы баз данных: поле, ячейка, запись. 2. Что означают понятия «ключ», «ключевое поле»? 3. Какое ключевое поле называют первичным ключом, а какое - внешним ключом? 4. В чем состоит процесс нормализации таблиц базы данных? 5. Какие пять нормальных форм таблиц баз данных вы знаете? 6. Дайте определения следующим типам связей между таблицами базы данных: «один к одному»; «один ко многим»; «многие ко многим».

    Введение

    Начавшийся XXI век специалисты называют веком компьютерных технологий. Человечество вступает в принципиально новую информационную эпоху. Меняются все слагаемые образа жизни людей. Уровень информации становится одной из характеристик уровня развития государства.

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

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

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

    Базовые понятия реляционной модели данных

    Основными понятиями свойственными для реляционных данных считаются тип данных, домен, атрибут, кортеж, первичный ключ отношение. Первоначально отметим смысл этих понятия на примере отношения «СОТРУДНИКИ», содержащего информацию относительно сотрудников некоторой организации

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

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

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

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

    В нашем случае значения доменов "Номера пропусков" и "Номера групп", которые имеют отношение к типу целых числе, не может быть сравнимым. Отметим, что в некоторых случаях в реляционных СУБД само понятие «домена» не находит применение, т.к. уже поддерживается в Oracle V.7.

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

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

    Кортеж, который соответствует данной схеме отношения представляет собой множество пар, которое находит отражение в вхождении каждого имени атрибута, принадлежащего схеме отношения.

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

    Кортеж - это набор именных значений заданного типа.

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

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

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

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

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

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

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

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

    Требования, предъявляемые к первичному ключу:

      уникальность – то есть в таблице не должно существовать двух или более записей с одинаковым значением первичного ключа;

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

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

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

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

    Связи между таблицами . Записи в таблице могут зависеть от одной или несколь­ких записей другой таблицы. Такие отношения между таблицами называютсясвязями. Связь определяется следующим образом: поле или несколько полей одной таблицы, называемоевнешним ключом, ссылается на первичный ключ другой таблицы. Рассмотрим пример. Так как каждый заказ должен исходить от определенного клиента, каждая запись таблицыOrders (заказы) должна ссылаться на соответствующую запись таблицыCustomers (клиенты). Это и есть связь между таблицамиOrders иCustomers . В таблицеOrders должно быть поле, где хранятся ссылки на те или иные записи таблицыCustomers .

    Типы связей . Существует три типа связей между таблицами.

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

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

    Многие ко многим - несколько записей одной таблицы связаны с несколькими записями другой. Например, один автор может написать несколько книг и не­сколько авторов - одну книгу. В случае такой связи в общем случае невозможно определить, какая запись одной таблицы соответствует выбранной записи другой таблицы, что делает неосуществимой физическую (на уровне индексов и триггеров) реализацию такой связи между соответствующими таблицами. Поэтому перед переходом к физической модели все связи "многие ко многим" должны быть переопределены (некоторые CASE-средства, если таковые используются при проектировании данных, делают это автоматически). Подобная связь между двумя таблицами реализу­ется путем создания третьей таблицы и реализации связи типа «один ко многим» каждой из имеющихся таблиц с промежуточной таблицей.