Программирование >>  Хронологические базы данных 

1 ... 49 50 51 [ 52 ] 53 54 55 ... 348


таты из предыдущего издания этой книги в разделе 5.3 этой главы.) Обратите внимание на то, что отношение пг не нормализовано (оно не содержит ровно по одному значению каждого атрибута в каждом кортеже). В действительности пг вовсе не является отношением в контексте релящ1онной модели. Как бы то ни было, в данной работе рассматривается один из вариантов идеи NF~. В частности, автор определяет для NF-отношений исчисление и алгебру (см. главы 6 и 7) и доказывает их эквивалентность. Он также ссылается на другие работы, посвященные этой теме. *

Ответы к некоторым упражнениям

5.1.

а) Очевидные изменения суммированы и даны ниже.

TABLE заменяется на RELVAR

COLUMN ATTRIBUTE

TABNAME RVNAME

COLCOUNT DEGREE

ROWCOUNT CARDINALITY (сокращенно - CARD)

COLNAME ATTRNAME

Обратите внимание, что переменная-отношение TABLE (теперь уже RELVAR) должна иметь еще один атрибут (RVKIND), значения которого указывают ее тип (базовая переменная-отношение или представление). Структура каталога будет выглядеть таким образом.

RELVAR

RVNAME DEGREE CARD RVKIND

ATTRIBUTE

RVNAME

ATTRNAME

6) Нужна новая переменная-отношение каталога (TYPE), содержащая элемент для каждого типа, а также новый атрибут (TYPENAME) в переменной-отношении ATTRIBUTE, представляющий тип каждого атрибута каждой переменной-отношения. Структура каталога будет подобна следующей. TYPE

TYPENAME

RELVAR RVNAME DEGREE CARD RVKIND

ATTRIBUTE RVNAME ATTRNAME TYPENAME

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

в) (ATTRIBUTE WHERE TYPENAME = NAME(EMPi)) {RVNAME}

Здесь обратите внимание на вызов оператора выбора NAME (см. ответ к упр. 5.2).

г) Если системой не поддерживаются типы, определенные пользователем, то очевидно, что невозможно написать запрос к каталогу относительно этих типов! Можно только написать запрос относительно атрибутов. Вообще говоря, ре-Глава 5. Домены, отношения и базовые переменные-отношения 185



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

TYPENAME определен на домене NAME

RVNAME NAME

ATTRNAME NAME

DEGREE NONNEG INTEGER

CARD NONNEG INTEGER

RVKIND RVKIND

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

NAME - это множество всех допустимых имен.

NONNEG INTEGER - множество неотрицательных целых чисел, не превышающих некоторый верхний предел.

RVKIND - это, грубо говоря, множество { Base , View }.

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

5.3.

а) TYPE Pi POSSREP ( CHAR ) ; TYPE QTY POSSREP ( INTEGER ) ;

VAR PART STRUCTURE BASE RELATION { MAJOR Pi Pi,

MINORPi PI,

QTY QTY } PRIMARY KEY { MAJOR Pi, MINORJI } ;

б) Ha рис. 5.4 показаны только новые элементы каталога. Обратите внимание, что элемент CARD в переменной-отношении RELVAR должен быть увеличен на единицу и для самой переменной-отношения RELVAR. Также кардинальность переменной-отношения PART STRUCTURE показана равной О, а не 7 (несмотря на то, что на рис. 4.6 она содержит семь кортежей), поскольку отношение, конечно же, будет пустым, если оно только что создано.

в) DROP VAR PART STRUCTURE ; DROP TYPE QTY ;

DROP TYPE PI :



TYPE

RELVAR

ATTRIBUTE

TYPENAME

P# QTY

RVNAME

DEGREE

CARD

RVKIND

PART STRUCTURE

Base

RVNAME

ATTRNAME

TYPENAME

PART STRUCTURE PART STRUCTURE PART STRUCTURE

MAJOR P# MINOR P# QTY

P# P# QTY

Рис. 5.4. Элементы каталога для переменной-отношения PART STRUCTURE

5.4. TYPE Si POSSREP ( CHAR )

POSSREP( CHAR )

POSSREP( CHAR )

POSSREP( CHAR )

TYPE Si TYPE NAME TYPE PI TYPE COLOR TYPE WEIGHT TYPE Jl TYPE QTY

POSSREP( RATIONAL POSSREP( CHAR ) ; POSSREP( INTEGER

VAR S BASE RELATION { SI SI,

SNAME NAME, STATUS INTEGER, CITY CHAR } PRIMARY KEY {SI},

VAR P BASE RELATION

{ Pt PNAME COLOR WEIGHT CITY

NAME, COLOR, WEIGHT, CHAR }

PRIMARY KEY { Pi }

VAR J BASE RELATION { Jl Jl, JNAME NAME, CITY CHAR } PRIMARY KEY { J }

VAR SPJ BASE RELATION { Si Si, PI Pi, Jl Jl, QTY QTY }



1 ... 49 50 51 [ 52 ] 53 54 55 ... 348

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика