Тема_3 (1122336), страница 2
Текст из файла (страница 2)
Кузнецов. Базы данных.18 Реляционная моделБазовые понятия реляционных базданных (15) Первичный ключ (1)По определению, первичным ключом переменной отношенияявляется подмножество S множества атрибутов ее заголовкатакое, что в любой момент времени значение первичного ключа(составное, если в состав первичного ключа входит болееодного атрибута)в любом кортеже тела отношения отличается от значенияпервичного ключа в любом другом кортеже тела этогоотношения, а никакое собственное подмножество S этим свойством необладаетПозже мы покажем, что существование первичного ключа улюбого значения отношения является следствием одного изфундаментальных свойств отношений, а именно, того свойства,что тело отношения является множеством кортежей25.09.2009С.Д.
Кузнецов. Базы данных.19 Реляционная моделБазовые понятия реляционных базданных (16) Первичный ключ (2)Обычным житейским представлением отношения являетсятаблица, заголовком которой является схема отношения, астроками – кортежи отношения-экземпляра; в этом случаеимена атрибутов именуют столбцы этой таблицыПоэтому иногда говорят про «столбцы таблицы», имея ввиду «атрибуты отношения».Это достаточно грубая терминология, поскольку у обычныхтаблиц и строки, и столбцы упорядочены, тогда как атрибутыи кортежи отношений являются элементаминеупорядоченных множествЭтой терминологии придерживаются в большинствекоммерческих реляционных СУБДИногда также используются термины файл как аналогтаблицы, запись как аналог строки и поле как аналог столбца25.09.2009С.Д.
Кузнецов. Базы данных.20 Реляционная моделФундаментальные свойства отношений (1)Отсутствие кортежей-дубликатов (1)То свойство, что тело любого отношения никогда несодержит кортежей-дубликатов, следует из определениятела отношения как множества кортежей В классической теории множеств по определению любоемножество состоит из различных элементовИменно из этого свойства вытекает наличие у каждогозначения отношения первичного ключа – минимальногоподмножества заголовка данного отношения, составноезначение которого уникально определяет кортеж отношенияДействительно, поскольку в любое время все кортежи телалюбого отношения различны, у любого значения отношениясвойством уникальности обладает, по крайней мере, полныйнабор его атрибутов25.09.2009С.Д.
Кузнецов. Базы данных.21 Реляционная моделФундаментальные свойства отношений (2)Отсутствие кортежей-дубликатов (2)Однако в формальном определении первичного ключатребуется обеспечение его «минимальности», т.е. в наборатрибутов первичного ключа не должны входить такиеатрибуты, которые можно отбросить без ущерба дляосновного свойства – однозначного определения кортежаНемного позже мы покажем, почему свойствоминимальности первичного ключа является критическиважнымПонятно, что если у любого отношения существует наборатрибутов, обладающий свойством уникальности, тосуществует и минимальный набор атрибутов, обладающийсвойством уникальности25.09.2009С.Д.
Кузнецов. Базы данных.22 Реляционная моделФундаментальные свойства отношений (3)Отсутствие кортежей-дубликатов (3)Конечно, могут существовать значения отношения снесколькими несовпадающими минимальными наборамиатрибутов, обладающими свойствами уникальностиНапример, если вернуться к предположениям темы 1 обуникальности значений атрибутов СЛУ_НОМЕР и СЛУ_ИМЯотношения СЛУЖАЩИЕ, то для каждого значения этогоотношения мы имеем два множества атрибутов,претендующих на звание первичного ключа – {СЛУ_НОМЕР}и {СЛУ_ИМЯ}В этом случае проектировщик базы данных должен решить,какое из альтернативных множеств атрибутов назватьпервичным ключом, а остальные минимальные наборыатрибутов, обладающие свойством уникальности,называются возможными ключами25.09.2009С.Д.
Кузнецов. Базы данных.23 Реляционная моделФундаментальные свойства отношений (4)Отсутствие кортежей-дубликатов (4)Понятие первичного ключа является исключительно важнымв связи с понятием целостности баз данныхЗаметим, что хотя формально существование первичногоключа значения отношения является следствием того, чтотело отношения – это множество, на практике первичные (ивозможные) ключи переменных отношений появляются врезультате явных указаний проектировщика отношенияОпределяя переменную отношения, проектировщикмоделирует часть предметной области, данные из которойбудет в будущем содержать база данныхИ конечно, проектировщик должен знать природу этихданных25.09.2009С.Д. Кузнецов.
Базы данных.24 Реляционная моделФундаментальные свойства отношений (5)Отсутствие кортежей-дубликатов (5)Например, ему должно быть известно, что никакие дваслужащих ни в какой времени не могут иметь удостоверениес одним и тем же номеромПоэтому он может (и даже должен, как будет показано ниже)явно объявить {СЛУ_НОМЕР} возможным ключомЕсли на предприятии установлено, что у всех сотрудниковдолжны быть разные полные имена, то проектировщикможет (и опять же должен) объявить возможным ключом и{СЛУ_ИМЯ}Потом проектировщик должен оценить, какой из возможныхключей является более надежным (свойство егоуникальности никогда не будет отменено), и выбратьнаиболее надежный возможный ключ в качестве первичного25.09.2009С.Д. Кузнецов. Базы данных.25 Реляционная моделФундаментальные свойства отношений (6)Отсутствие кортежей-дубликатов (6)Теперь поясним, почему проектировщику следует явно объявлятьпервичный и возможные ключи переменных отношенийДело в том, в результате этого объявления СУБД получаетинформацию, которая в дальнейшем будет использоваться какограничение целостностиСУБД никогда не допустит появления в переменной отношениязначения-отношения, содержащего два кортежа с одинаковымзначением атрибута СЛУ_НОМЕРопределение первичного ключа для данной переменной отношениянельзя отменитьПоявление двух кортежей с одинаковым значением атрибутаСЛУ_ИМЯ будет также невозможно до тех пор, пока остается в силеопределение {СЛУ_ИМЯ} как возможного ключаТем самым, объявления первичного и возможных ключей дают СУБДвозможность поддерживать целостность базы данных при попыткахзанесения в нее некорректных данных25.09.2009С.Д.
Кузнецов. Базы данных.26 Реляционная моделФундаментальные свойства отношений (7)Отсутствие кортежей-дубликатов (7)Наконец, вернемся к свойству минимальности первичного (ивозможных ключей)Это свойство является критически важным, и важность проявляетсяименно при трактовке первичного и возможных ключей как ограниченийцелостностиК примеру, в нашем примере с отношением СЛУЖАЩИЕ свойствомуникальности будет обладать не только множество атрибутов{СЛУ_НОМЕР}, но и, например, множество {СЛУ_НОМЕР,СЛУ_ОТД_НОМЕР}Но если бы мы выставили в качестве ограничения целостноститребование уникальности {СЛУ_НОМЕР, СЛУ_ОТД_НОМЕР}, то СУБДгарантировала бы отсутствие кортежей с одинаковым значениематрибута СЛУ_НОМЕР не во всем значении отношения СЛУЖАЩИЕ, атолько в группах кортежей с одним и тем же значением атрибутаСЛУ_ОТД_НОМЕРПонятно, что это не соответствует смыслу моделируемой предметнойобласти25.09.2009С.Д.
Кузнецов. Базы данных.27 Реляционная моделФундаментальные свойства отношений (8)Отсутствие упорядоченности кортежей (1)Формально свойство отсутствия упорядоченности кортежей взначении отношения также является следствием определения телаотношения как множества кортежейОднако на это свойство можно взглянуть и с другой стороны Да, то свойство, что тело отношения является множествомкортежей, облегчает построение полного механизмареляционной модели данных, включая базовые средстваманипулирования данными – реляционные алгебру иисчисление Но основная причина не в этомМожно было бы разработать другую теорию, в которой допускалисьбы упорядоченные «отношения»Однако хранить упорядоченные списки кортежей в условияхинтенсивно обновляемой базы данных гораздо сложнеетехнически, а поддержка упорядоченности вызывает серьезныенакладные расходы25.09.2009С.Д.
Кузнецов. Базы данных.28 Реляционная моделФундаментальные свойства отношений (9)Отсутствие упорядоченности кортежей (2)Отсутствие требования к поддержанию порядка намножестве кортежей отношения придает СУБДдополнительную гибкость при хранении баз данных вовнешней памяти и при выполнении запросов к базе данныхЭто не противоречит тому, что при формулировании запросак БД, например, на языке SQL можно потребоватьсортировку результирующей таблицы в соответствии созначениями некоторых столбцовТакой результат, вообще говоря, является не отношением, анекоторым упорядоченным списком кортежей, и он можетбыть только окончательным результатом, к которому уженельзя адресовать запросы25.09.2009С.Д.
Кузнецов. Базы данных.29 Реляционная моделФундаментальные свойства отношений (10)Отсутствие упорядоченности атрибутов (1)Атрибуты отношений не упорядочены, поскольку поопределению заголовок отношения есть множество пар<имя_атрибута, имя_типа_или_домена>Для ссылки на значение атрибута в кортеже отношениявсегда используется имя атрибутаЛегко заметить явную аналогию между заголовкамиотношений и структурными типами в языкахпрограммированияДаже в языке программирования C с его практическинеограниченными возможностями работы с указателяминастойчиво рекомендуется обращаться к полям структуртолько по их именам.25.09.2009С.Д.
Кузнецов. Базы данных.30 Реляционная моделФундаментальные свойства отношений (11)Отсутствие упорядоченности атрибутов (2)Если, например, на языке C определена структурная переменнаяSTRUCT {integer a; char b; integer c} d;то в стандарте языка решительно не рекомендуется использоватьдля доступу к символьному полю b конструкцию *(&d +sizeof(integer))Это объясняется тем, что при реальном расположении в памятиполей этой структурной переменной в том порядке, как ониопределены, во многих компьютерах потребуется выровнять поле cпо байту с четным адресомПоэтому один байт просто пропадетПри расположении структурной переменной в памяти экономныйкомпилятор (вернее, оптимизатор) переставит местами поля b и c,и указанная выше конструкция не обеспечит доступа к полю bДля корректного обращения к полю b переменной d нужноиспользовать конструкции d.b или &d → b, т.е.
явно указывать имяполя25.09.2009С.Д. Кузнецов. Базы данных.31 Реляционная моделФундаментальные свойства отношений (12)Отсутствие упорядоченности атрибутов (3)Аналогичными практическими соображениямиоправдывается и отсутствие упорядоченности атрибутов взаголовке отношенияВ этом случае СУБД сама принимает решение о том, в какомфизическом порядке следует хранить значения атрибутовкортежей (хотя обычно один и тот же физический порядокподдерживается для всех кортежей каждого отношения)Кроме того, это свойство облегчает выполнение операциимодификации схем существующих отношений не толькопутем добавления новых атрибутов, но и путем удалениясуществующих атрибутов25.09.2009С.Д.
Кузнецов. Базы данных.32 Реляционная моделФундаментальные свойства отношений (13)Первая нормальная форма (1)Эдгар Кодд справедливо утверждал, что для моделированиябольшинства предметных областей можно обойтисьотношениями, атрибуты которых определены на простыхдоменах, элементы которых являются атомарными, недекомпозируемымиОн, в частности, говорил следующее:«Отношение, все домены которого являются простыми,может быть представлено двухмерным массивом … соднородными столбцами. Для отношения с одним или болеенепростыми доменами требуются несколько более сложныеструктуры данных.»Более того, он предлагал простую процедуру нормализации,приводящую отношение, значениями одного из атрибутовкоторых являются отношения, к нескольким отношениям надпростыми доменами25.09.2009С.Д.