Тема_3 (1122336), страница 3
Текст из файла (страница 3)
Кузнецов. Базы данных.33 Реляционная моделФундаментальные свойства отношений (14)Первая нормальная форма (2)Однако и в истинной реляционной модели данных, и вмодели данных SQL теперь можно определять отношения(таблицы), значениями атрибутов (столбцов) которыхявляются отношения (мультимножества строк)Скорее всего, это произошло по двум причинам: Во-первых, в течение многих лет реляционную модельданных (и модель SQL) многие люди критиковали засложность представления иерархически организованныхданных. Понятно, что при наличии механизма вложенныхотношений иерархические данные представляются вполнеестественно. Во-вторых, оказалось, что при тщательном определениисистемы типов, наличие атрибутов (столбцов) созначениями-отношениями никак не влияет на методы,разработанные в исходной теории реляционных БД25.09.2009С.Д.
Кузнецов. Базы данных.34 Реляционная моделФундаментальные свойства отношений (15)Первая нормальная форма (3)Тем не менее, доводы Кодда, которые привели к появлениюпервой нормальной формы отношений, не утратили смыслаНенормализованное отношениеОТДЕЛЫ-СЛУЖАЩИЕОтношение СЛУЖАЩИЕ:нормализованный вариантотношения ОТДЕЛЫСЛУЖАЩИЕ25.09.2009С.Д.
Кузнецов. Базы данных.35 Реляционная моделФундаментальные свойства отношений (16)Первая нормальная форма (4)Нормализованные по Кодду отношениясоставляют основу классического реляционногоподхода к организации баз данныхОни обладают некоторыми ограничениями (нелюбую информацию удобно представлять в видеплоских таблиц), но существенно упрощаютманипулирование даннымиРассмотрим, например, два идентичныхоператора занесения кортежа:Зачислить служащего Кузнецова (пропуск номер 3000,зарплата 115,000) в отдел номер 320 иЗачислить служащего Кузнецова (пропуск номер 3000,зарплата 115,000) в отдел номер 31025.09.2009С.Д.
Кузнецов. Базы данных.36 Реляционная моделФундаментальные свойства отношений (17)Первая нормальная форма (5)Если информация о сотрудниках представлена ввиде отношения СЛУЖАЩИЕ, оба операторабудут выполняться одинаково:Если же работать с ненормализованнымотношением ОТДЕЛЫ-СЛУЖАЩИЕ, то:вставить кортеж в отношение СЛУЖАЩИЕпервый оператор выразится в занесение кортежа,а второй - в добавление кортежа с первичным ключом310 в значение-отношение атрибута ОТДЕЛПри работе с ненормализованнымиотношениями аналогичные затруднениявозникают при выполнении операций удаления имодификации кортежей25.09.2009С.Д. Кузнецов.
Базы данных.37 Реляционная моделРеляционная модель данных (1)Общая характеристика (1)В структурной части реляционной моделиданных фиксируется, что единственной родовойструктурой данных, используемой вреляционных БД, является нормализованное nарное отношениеОпределяются понятия доменов, атрибутов,кортежей, заголовка, тела и переменнойотношенияПо сути дела, до сих пор мы рассматривалиименно понятия и свойства структурнойсоставляющей реляционной модели25.09.2009С.Д.
Кузнецов. Базы данных.38 Реляционная моделРеляционная модель данных (2)Общая характеристика (2)В манипуляционной части реляционной моделиопределяются два фундаментальных механизмаманипулирования реляционными БД – реляционная алгебраи реляционное исчислениеПервый механизм базируется в основном на классическойтеории множеств (с некоторыми уточнениями идобавлениями), а второй – на классическом логическомаппарате исчисления предикатов первого порядкаМы кратко рассмотрели алгебру Кодда ранее и обсудим всеэти механизмы более подробно в следующей теме, а покалишь заметим, что основной функцией манипуляционнойчасти реляционной модели является обеспечение мерыреляционности любого конкретного языка реляционных БД: язык называется реляционным, если он обладает неменьшей выразительностью и мощностью, чем реляционнаяалгебра или реляционное исчисление25.09.2009С.Д.
Кузнецов. Базы данных.39 Реляционная моделРеляционная модель данных (3)Целостность сущности и ссылок (1)В целостной части реляционной модели данных фиксируются двабазовых требования целостности, которые должныподдерживаться в любой реляционной СУБДПервое требование называется требованием целостностисущности (entity integrity)Объекту или сущности реального мира в реляционных БДсоответствуют кортежи отношенийКонкретно, требование состоит в том, что любой кортеж любогозначения-отношения любой переменной отношения должен бытьотличим от любого другого кортежа этого значения отношения посоставным значениям заранее определенного множестваатрибутов переменной отношения, т.е., другими словами, любая переменная отношения должно обладать первичнымключомКак мы видели, это требование автоматически удовлетворяется,если в системе не нарушаются базовые свойства отношений25.09.2009С.Д.
Кузнецов. Базы данных.40 Реляционная моделРеляционная модель данных (4)Целостность сущности и ссылок (2)На самом деле, требование целостности сущностиполностью звучит следующим образом:у любой переменной отношения должен существоватьпервичный ключ, и никакое значение первичного ключа вкортежах значения-отношения переменной отношения недолжно содержать неопределенных значенийЧтобы эта формулировка была полностью понятна,мы должны хотя бы кратко обсудить понятиенеопределенного значения (NULL)Конечно, теоретически любой кортеж, заносимый всохраняемое отношение, должен содержать всехарактеристики моделируемой им сущностиреального мира, которые мы хотим сохранить в базеданных25.09.2009С.Д.
Кузнецов. Базы данных.41 Реляционная моделРеляционная модель данных (5)Целостность сущности и ссылок (3)Однако на практике не все эти характеристики могутбыть известны к тому моменту, когда требуетсязафиксировать сущность в базе данныхПростым примером может быть процедура принятияна работу человека, размер заработной платыкоторого еще не определенВ этом случае работник отдела кадров, которыйзаносит в отношение СЛУЖАЩИЕ кортеж,описывающий нового служащего, просто не можетобеспечить значение атрибута СЛУ_ЗАРПлюбое значение домена РАЗМЕРЫ_ВЫПЛАТ будет невернохарактеризовать зарплату нового сотрудникаЭдгар Кодд предложил использовать в таких случаяхнеопределенные значения25.09.2009С.Д.
Кузнецов. Базы данных.42 Реляционная моделРеляционная модель данных (6)Целостность сущности и ссылок (4)Неопределенное значение не принадлежит никакомутипу данных и может присутствовать среди значенийлюбого атрибута, определенного на любом типеданных (если это явно не запрещено приопределении атрибута)Если a – это значение некоторого типа данных илиNULL,op – любая двуместная “арифметическая” операцияэтого типа данных (например, “+”), аlop – операция сравнения значений этого типа(например, “=”), то по определению:a op NULL = NULLNULL op a = NULLa lop NULL = unknownNULL lop a = unknown25.09.2009С.Д. Кузнецов. Базы данных.43 Реляционная моделРеляционная модель данных (7)Целостность сущности и ссылок (5)Здесь unknown – это третье значение логического,или булевского типа, обладающее следующимисвойствами:NOT unknown = unknowntrue AND unknown = unknowntrue OR unknown = truefalse AND unknown = falsefalse OR unknown = unknownНапомним, что операции AND и OR являютсякоммутативнымиТребование целостности сущности означает, чтопервичный ключ должен полностьюидентифицировать каждую сущность, а поэтому всоставе любого значения первичного ключа недопускается наличие неопределенных значений25.09.2009С.Д.
Кузнецов. Базы данных.44 Реляционная моделРеляционная модель данных (8)Целостность сущности и ссылок (6)Второе требование называется требованиемцелостности по ссылкам (referential integrity) и являетсянесколько более сложнымОчевидно, что при соблюдении нормализованности поКодду отношений сложные сущности реального мирапредставляются в реляционной БД в виде несколькихкортежей нескольких отношенийНапример, представим, что требуется представить вреляционной базе данных сущность ОТДЕЛ с атрибутамиОТД_НОМЕР (номер отдела), ОТД_РАЗМ (количествослужащих) и ОТД_СЛУ (набор сотрудников отдела). Длякаждого служащего нужно хранить СЛУ_НОМЕР (номерсотрудника), СЛУ_ИМЯ (имя сотрудника) и СЛУ_ЗАРП(заработная плата сотрудника)25.09.2009С.Д. Кузнецов.
Базы данных.45 Реляционная моделРеляционная модель данных (9)Целостность сущности и ссылок (7)Как мы увидим позже, при правильном проектированиисоответствующей БД в ней появятся два отношения:ОТДЕЛЫ { ОТД_НОМЕР, ОТД_РАЗМ } (первичный ключ –{ОТД_НОМЕР}) и СОТРУДНИКИ { СЛУ_НОМЕР,СЛУ_ИМЯ, СЛУ_ЗАРП, СЛУ_ОТД_НОМ ) (первичный ключ– {СЛУ_НОМЕР})Как видно, атрибут СЛУ_ОТД_НОМ появляется вотношении СЛУЖАЩИЕ не потому, что номер отделаявляется собственным свойством сотрудника, а лишь длятого, чтобы иметь возможность восстановить принеобходимости полную сущность ОТДЕЛЗначение атрибута СЛУ_ОТД_НОМ в любом кортежеотношения СЛУЖАЩИЕ должно соответствоватьзначению атрибута ОТД_НОМ в некотором кортежеотношения ОТДЕЛЫ25.09.2009С.Д.
Кузнецов. Базы данных.46 Реляционная моделРеляционная модель данных (10)Целостность сущности и ссылок (8)Атрибут такого рода (возможно, составной) называетсявнешним ключом (foreign key), поскольку его значенияоднозначно характеризуют сущности, представленныекортежами некоторого другого отношеният.е. задают значения их первичного ключаКонечно, внешний ключ может быть составным, т.е.состоять из нескольких атрибутовГоворят, что отношение, в котором определен внешнийключ, ссылается на соответствующее отношение, вкотором такой же атрибут является первичным ключом25.09.2009С.Д.
Кузнецов. Базы данных.47 Реляционная моделРеляционная модель данных (11)Целостность сущности и ссылок (9)В полной форме требование целостности поссылкам, или требование целостности внешнегоключа состоит в том, что для каждого значениявнешнего ключа, появляющегося в кортежезначения-отношения ссылающейся переменнойотношения,либо в значении-отношении переменной отношения, накоторую ведет ссылка, должен найтись кортеж с таким жезначением первичного ключа,либо значение внешнего ключа должно быть полностьюнеопределенным (т.е. ни на что не указывать)Для нашего примера это означает, что если длясотрудника указан номер отдела, то этот отделдолжен существовать25.09.2009С.Д. Кузнецов.