|
Программирование >> Хронологические базы данных
8.5. Мы предлагаем в качестве чернового следующий перечень ответов (см. замечание в конце ответов к этому упражнению). а) Любая операция выборки из переменной-отнощения А наследует все потенциальные ключи этой переменной-отношения. б) Если операция проекции включает любой потенциальный ключ К переменной-отношения А, то К будет потенциальным ключом и для результирующего отношения. В противном случае единственный потенциальный ключ результирующего отношения - это комбинация из всех атрибутов данной проекции (в общем случае). в) Любое сочетание К потенциального ключа КА переменной-отношения А и потенциального ключа KB переменной-отношения В будет потенциальным ключом для декартова произведения А TIMES В. г) Единственный потенциальный ключ объединения А UNION В - это комбинация из всех атрибутов (в общем случае). д) Оставляем этот вариант в качестве упражнения для читателя (пересечение - это не примитивная операция). е) Каждый потенциальный ключ переменной-отношения А является потенциальным ключом для результата вычитания А MINUS В. ж) Общий случай этого варианта оставляем в качестве упражнения для читателя (естественное соединение - не примитивная операция). Однако заметим, что в частном случае, когда соединяющий атрибут в переменной-отношении А является ее потенциальным ключом, каждый потенциальный ключ переменной-отношения В будет потенциальным ключом результата соединения. з) Потенциальные ключи переменной-отношения А являются потенциальными ключами и для произвольного расширения переменной-отношения А. и) Потенциальными ключами для произвольной обобщающей операции в переменной-отношении А по переменной-отношению В являются потенциальные ключи переменной-отношения В. к) Каждый потенциальный ключ переменной-отношения А является потенциальным ключом для результата выполнения операции полусоединения А SEMIJOIN В. л) Каждый потенциальный ключ переменной-отношения А является потенциальным ключом для результата выполнения операции полувычитания А SEMIMINUS В. Однако большинство упомянутых операторов в определенных ситуациях можно некоторым образом усовершенствовать, как, например, показано ниже. Сочетание атрибутов {S#, Р#, Л} не является потенциальным ключом для результата выполнения операции выборки SPJ WHERE St = Si (SI). Потенциальным ключом в этом случае является сочетание атрибутов {Pi, Ji}. Если переменная-отношение А, имеющая заголовок {X, Y, Z} и единственный потенциальный ключ X, удовлетворяет функциональной зависимости Y -> Z (глава 10), то атрибут Y является потенциальным ключом проекции переменной-отношения А по атрибутам Y и Z. Если переменные-отношения А и В одновременно являются результатами выполнения операции выборки из переменной-отношения С, то каждый потенциальный ключ переменной-отношения С является потенциальным ключом объединения А UNION В. И т.д. Вопрос о наследовании потенциальных ключей подробно обсуждается в [10.6]. 8.6. Пусть m- наименьшее целое число, большее либо равное п/2. Переменная-отношение R будет иметь максимально возможное количество потенциальных ключей, если все возможные множества из m атрибутов являются потенциальными ключами либо если п- нечетное число и все возможные множества из т-1 атрибутов являются потенциальными ключами. В обоих случаях максимальное количество потенциальных ключей равно п! / (m! * (n-m)!). Замечание. Переменные-отношения ELEMENT и MARRIAGE в разделе 8.8 могут служить примером переменных-отношений с максимально возможным количеством потенциальных ключей. 8.7. Переменная-отношение R имеет в точности один потенциальный ключ, а именно - пустое множество атрибутов {} (иногда обозначаемое как 0). Замечание. Понятие пустого (или нульарного) потенциального ключа требует некоторого уточнения. Такая переменная-отношение, как R, единственные допустимые значения которой есть отношения DEE и DUM, не должна иметь атрибутов, и поэтому очевидно , что ее единственный потенциальный ключ тоже не имеет атрибутов. Однако не только переменные-отношения без атрибутов могут иметь подобный потенциальный ключ. Отметим, что если пустое множество 0 является потенциальным ключом некоторой переменной-отношения R, то должны быть выполнены следующие условия. Этот потенциальный ключ должен быть единственным потенциальным ключом переменной-отношения R, так как любое другое множество атрибутов этой переменной-отношения можно рассматривать как правильное надмножество пустого множества, что нарушало бы требование неизбыточности потенциальных ключей. (Следовательно, этот потенциальный ключ будет также первичным, если первичный ключ обязательно должен быть выбран.) В переменной-отношении R не может содержаться более одного кортежа, потому что в пустом множестве атрибутов любой кортеж имеет одно и то же значение. Заметим, что наш синтаксис позволяет определить такую переменную-отношение, как, например, показано ниже. VAR R BASE RELATION { ... } PRIMARY KEY { } ; Также можно определить переменную-отношение без атрибутов, т.е. переменную-отношение, которая может принимать только два значения: DEE и DUM. VAR R BASE RELATION { } PRIMARY KEY { } ; Возвращаясь к вопросу о пустом потенциальном ключе, отметим, что если потенциальный ключ может быть пустым, то, конечно, может быть пустым и соответствующий ему внешний ключ. В [5.5] эти возможности обсуждаются более подробно. 8.8. Для внешних ключей правило вставки в явном виде не существует, поскольку операции вставки (INSERT) для ссылающейся переменной-отношения (а также операции обновления (UPDATE) для внешнего ключа в ссылающейся переменной-отношении) контролируются с помощью самого правила ссылочной целостности, т.е. в соответствии с требованием, гласящим, что не должно быть несогласованных значений внешнего ключа. Поясним это другими словами на конкретном примере базы данных поставщиков и деталей. Попытка вставить кортеж поставки (в переменную-отношение SP) будет успешной, только если номер поставщика в этом кортеже существует как номер поставщика в переменной-отношении S и номер детали в этом кортеже существует как номер детали в переменной-отношении Р. Попытка обновить кортеж поставки будет успешной, если в обновленном кортеже номер поставщика существует как номер поставщика в переменной-отношении S и номер детали существует как номер детали в переменной-отношении Р. Обратите особое внимание на то, что предыдущие замечания относятся к ссылающейся переменной-отношению, тогда как правила удаления и обновления (явные) применяются к ссылочной переменной-отношению. Поэтому правило вставки нельзя рассматривать как правило, подобное правилам удаления и обновления. Это еще одна причина, по которой в конкретный синтаксис не включено никакое явное правило вставки . 8.9. а) Операция допустима. б) Операция недопустима (нарушение уникальности потенциального ключа). в) Операция недопустима (нарушение правила обновления с установленной опцией RESTRICTED). г) Операция допустима (удаляется кортеж поставщика с номером S3 и соответствующие кортежи его поставок). д) Операция недопустима (нарушение правила обновления с установленной опцией RESTRICTED). е) Операция допустима (удаляется кортеж проекта под номером J4 и соответствующие кортежи поставок для этого проекта). ж) Операция допустима. з) Операция недопустима (нарушение уникальности потенциального ключа). и) Операция недопустима (нарушение ссылочной целостности), к) Операция допустима. л) Операция недопустима (нарушение ссылочной целостности), м) Операция недопустима (нарушение ссылочной целостности- номер проекта по умолчанию ( j j j) не существует в переменной-отношении J). 8.10. Ссылочная диаграмма показана на рис. 8.1. Возможный вариант определения базы данных представлен ниже. Для упрощения никакие ограничения типов не определяются, если не считать того, что спецификация POSSREP для данного определения типа, безусловно, может априори пониматься, как его ограничение.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |