Введение в системы БД (542480), страница 233
Текст из файла (страница 233)
Обратите внимание, что маркер настояшего момента в действительности представляе~ собой некоторую пераненную. Следовательно, предлагается странное — мы бы сказали, логически неоправданное — понятие зяаченкй, содержащих перененные. Вот несколько вопросов, возникаюших при введении подобного понятия, над которыми полезно поразмышлять. ° Что произойдет с интервалом [лон, г]14] в полночь дня 14? ° Что собой представляет значение Еа0( ] г(04,лон] ) на день 14? Это г]1 4 или лов? Мы считаем, что дать разумный ответ на такого рода вопросы сложно.
Поэтому, по нашему мнению, необходимо найти подход, который не противоречит обшепринятым понятиям. Иногда "атрибут РСК1йС" будет использоваться для записи данных относительно будушего и относительно прошлого (или вместо него). Например, пусть требуется записать дату истечения срока договора с поставщиком или дату его возобновления в будущем. В 887 Глава 22. Хронологические базы данных таком случае можно было бы использовать вариант отношения Я 00В1Н6, представленный на рис. 22.4.
Однако этот подход, очевидно, применим не всегда (в частности, если атрибут 00В1Н6 интерпретируется как время транзакции (см, раздел 22.2), поскольку время транзакции не может быть будущим). Основная проблема заключается в том, что имеется сушественное различие между историческими данными и данными относительно текушего состояния дел. Для исторических данных известно начальное и конечное время, а для текуших данных обычно известно только начальное время. Отсюда неизбежно следует вывод, что необходимы две различные переменные-отношения: одна — для отражения текушего состояния дел, другая — для исторических данных (в конце концов, они соответствуют двум, определенно, разным предикатам). В случае отношения поставщиков "текушая" переменная- отношение — это Я Я1НСЕ, показанная на рис.
22.2, а "историческая" — Я 00В1Н6, представленная на рис. 22.4, за исключением кортежей, в значениях атрибута РОВ1М6 которых конечное время интервала не равно Ж 0 (соответствуюшие данные записываются в переменную-отношение Б Б1НСЕ). Этим примером иллюстрируется горизонтальная декомпозиция: переменная- отношение с точечным значением атрибута "начиная с" для текущего состояния и переменная-отношение с интервальным значением атрибута "на период" лля исторических данных.
Отметим, кстати, что для пополнения данными исторической переменной- отношения могут использоваться триггерные процедуры. Например, удаление кортежа из переменной-отношения Я Я1НСЕ может "автоматически" запускать вставку соответствуюшего кортежа в переменную-отношение Я 00В1Н6. Для объединения исторических и текуших данных в одном отношении может использоваться реляционный оператор ОН1ОН, как, например, показано ниже. Я 00В1М6 0М1ОН ( ЕХТЕН0 Я Я1МСЕ й00 1НТЕВЦВЬ ( Б1МСЕ, 700йУ() йЯ 00В1Н6 ) ( йЕЬ ЯОТ Я1НСЕ ) Недостатки горизонтальной декомпозиции проявляются, если значения атрибута 00В1М6 интерпретируются как допустимое время, а не как время транзакции. В этом случае исторические данные обновляемы! Здесь могли бы использоваться операторы обновления, описанные в разделе 22.10, но может случиться так, что исправления должны вноситься в обе переменные-отношения.
Предположим, например, что обнаружена ошибка в последнем изменении статуса некоторого поставщика. Тогда может потребоваться не только удалить кортеж из переменной-отношения Я 00В1М6, но и обновить соответствуюший кортеж в переменной-отношении Я Б1НСЕ. Или другой пример, когда последнее изменение статуса было корректным, но был указан ошибочный день; и в этом случае необходимо внести обновления в обе переменные-отношения. Если переменная-отношение ЯР 00В1Н6 подобным образом может быть подвергнута декомпозиции на переменные-отношения ЯР Б1НСЕ и ЯР 00В1Н6, то дополнительно необходимо пересмотреть ограничение внешнего ключа. Для переменной-отношения ЯР 00В1М6, как мы уже убедились в разделе 22.9, определение может включать следующее предложение. РОВЕ16Н 1 КЕУ ( Я(), 00В1Н6 ОНРОЬОЕО ) ВЕРЕВЕНСЕЯ Я 00В1Н6 888 Часть К Дополнительные аспекты Как указывалось в разделе 22.9, это уточнение служит для того, чтобы в случае, когда согласно данным переменной-отношения ЯР 00В1И6 поставщик с номером 'Ях' может поставлять некоторую деталь в течение времени 1, в переменной-отношении Б 00В1Н6 отражалось, что с поставщиком с номером 'Ях' заключен договор, действительный и на время 1.
Там же говорилось, что ключ (Я(),00В1И6) в переменной-отношении ЯР 00В1И6 может рассматриваться как хронологический внешний ключ. Однако для переменной-отношения ЯР Я1НСЕ соответствующий внешний ключ является лишь "полухронологическим". Поэтому мы по-прежнему вынуждены использовать громоздкие выражения для формулирования ограничений, как было показано в разделе 22.3. СОИЯзВА1НТ А06 ЯР РО Я РК 1Б еиР11 ( ( ( я Б1Йсе ВенАме Б1нсе Ая Бя ) 001И ( БР Я1НСЕ ВЕНАИЕ Я1ИСЕ АЯ ЯРЯ ) ) ИНЕВЕ ЯРЯ < ЯЯ ) Таким образом, горизонтальная декомпозиция неизбежно приводит к определенным проблемам — к проблеме громоздких ограничений и к необходимости одновременного обновления переменных-отношений с текущими и историческими данными.
На время написания этой книги не существовало каких-либо конкретных предложений относительно введения сокрашений для решения указанных проблем. Возможно, необходимы дальнейшие исследования. Отметим, что эти проблемы не возникают, если разрешить переменной-отношению типа "на период*' включать информацию о будущем, прошлом и настоящем (поскольку переменная-отношение типа "с момента" тогда не нужна).
Однако при таком подходе будущее считается конечным промежутком времени. Указанные проблемы также не возникают при использовании подхода, предлагаемого в (22.4). Вертикальная декомпозиция Еше до того, как были проведены исследования особенностей хронологических данных (и до того, как для их обработки были разработаны операторы языка БОЦ, некоторые авторы настаивали на необходимости максимальной декомпозиции переменных- отношений, "насколько она возможна", вместо декомпозиции, предусматриваемой правилами классической нормализации.
Некоторые из этих авторов, к сожалению, навредили себе, предлагая проекты баз данных, содержащих лишь бинарные переменные- отношения. Одно из критических замечаний относительно этой идеи состояло в том, что иногда необходимы и унарные переменные-отношения. Суть другого замечания заключалась в следующем: некоторые переменные-отношения степени 3 и более на самом деле невозможно подвергнуть декомпозиции (например, переменная-отношение ЯРЛ из базы данных поставщиков, деталей и проектов). С другой стороны, наша обычная (не хронологическая) переменная-отношение Я, безусловно, может быть подвергнута дополнительной декомпозиции. Если заданы истинные высказывания "Имя поставщика с номером 'Я1' — 'Бв11)г'", "Статус поставщика с номером 'Я1' — 20", "Поставщик с номером 'Я!' находится в городе 'Ьопбоп'", то можно с уверенностью сделать вывод об истинности высказывания, которое следует из значения первого кортежа для поставщика с номером 'Я1' в базе З89 Глава 22.
Хронологические базы Данных данных, представленной на рис. 22З. Значит, переменную-отношение Я можно разбить на три бинарные переменные-отношения, каждая из которых будет иметь в качестве первичного ключа атрибут Я$. Идея декомпозиции до максимальных пределов мотивируется желанием получить максимально простые элементы. Возможно, для декомпозиции переменной-отношения Я это не очень веская причина, однако ее значение существенно возрастает в случае переменной-отношения Б ОБЕ1М6.
Имя поставщика, его статус и город нахождения изменяются во времени независимо друг от друга. Более того, они могут изменяться с разной частотой. Например, вряд ли имя поставщика меняется со временем, тогда как место его нахождения иногда изменяется, а его статус может меняться достаточно часто. Но повторение имени и места нахождения поставщика при каждом изменении его статуса может представлять некоторые неудобства. Кроме того, исторические сведения об изменении имени, статуса и места нахождения поставщика, возможно, более интересны и просты, чем история сочетания "имя — статус — город". Поэтому предлагается выполнить декомпозицию переменной-отношения Я ООЕ1М6 на три исторические переменные- отношения, которые могут быть описаны приблизительно так.