Система обозначений для описания синтаксиса языка SQL
ОГЛАВЛЕНИЕ введение. 5 Глава 1. Организация хранения данных. 6 Глава 2. Реляционные базы данных. 8 2.1. Основные принципы построения реляционных баз данных. 8 2.2. Реляционная модель данных. 9 2.3. Табличное представление данных; нормализация отношений. 13 2.4. Нереляционные операции с данными в базе. 20 Глава 3. Основы языка SQL. 21 3.1. Унификация доступа к данным.. 22 3.2. Язык управления доступом к данным.. 23 3.3. Язык определения данных. 24 3.4. Язык управления порядком доступа к данным.. 24 3.5. Данные и метаданные. 25 3.6. Уровни реализации языка SQL.. 25 Глава 4. Управление доступом в SQL. 26 4.1. Выборка данных. Команда Select 26 4.2. Добавление данных. Команда INSERT. 34 4.3. Обновление данных. Команда Update. 35 4.4. Удаление данных. Команда Delete. 36 4.5. Дополнительные возможности команд изменения данных. 36 4.6. Работа с DML в Oracle. 37 4.7. Встроенные функции. 40 Глава 5. Описание данных на основе SQL. 44 5.1. Организация данных в InterBase. Типы данных. 44 5.2. Домены.. 46 5.3. Таблицы.. 49 5.4. Индексы.. 53 5.5. Исключения. 56 Глава 6. Средства обработки данных внутри базы данных. 57 6.1. Триггеры и их назначение. 57 6.2. Хранимые процедуры и функции и их назначение. 58 6.3. SQL для триггеров, функций и хранимых процедур в InterBase. 59 6.4. SQL для триггеров, функций и хранимых процедур в Oracle (PL/SQL) 75 6.5. Команды создания, удаления, модификации триггеров и работа с ними в InterBase. 88 6.6. Команды создания, удаления, модификации триггеров и работа с ними в Oracle. 92 6.7. Команды создания, удаления, модификации хранимых процедур; работа с ними в InterBase 94 6.8. Команды создания, удаления, модификации хранимых процедур; работа с ними в Oracle 99 6.9. Команды создания, удаления, модификации пользовательских функций; работа с ними в InterBase. 99 6.10. Команды создания, удаления, модификации функций; работа с ними в Oracle. 103 Глава 7. Расширенные возможности для работы с базой. 104 7.1. Обзоры (представления) 104 7.2. Триггеры для обзоров (представлений) 107 7.3. Работа с обзорами (представлениями) в Oracle. 110 7.4. Данные BLOB.. 111 7.5. Функции пользователя (UDF) 112 7.6. Модули (пакеты) package. 115 7.7. Динамическое формирование операторов SQL на этапе выполнения. 121 Глава 8. Организация хранения метаданных. 125 8.1. Назначение и порядок использования метаданных. 125 8.2. Системные таблицы.. 126 Глава 9. Администрирование базы данных. 126 9.1. Управление доступом к данным.. 126 9.2. Копирование и восстановление базы данных. 129 Глава 10. Транзакции. Механизм транзакций. 130 10.1. Понятие транзакции. Назначение транзакций. 130 10.2. Реализация механизма транзакций в InterBase. 136 Глава 11. Разработка приложений для работы с базами данных. 140 11.1. Разработка приложений на C++ Builder и Delphi 141 11.1. Настройка BDE.. 141 11.2. Организация доступа к объектам базы данных. 145 11.3. Разработка клиент – серверных приложений. 147 Глава 12. Обработка агрегатных данных. OLAP технология. 149 12.1. Формальная модель данных. 149 12.2. Назначение и структура хранилища данных. 152 12.3. Создание и поддержка актуальности хранилища данных. 161 12.4. Программные комплексы для реализации хранилищ данных. 167 12.5. Виртуальные и «самодельные» хранилища данных. 173 Приложение. Описание структуры базы данных примеров (TESTBASE) 175 Введение Предлагаемое учебное пособие посвящено вопросам технологии обработки данных и построения прикладных систем обработки информации на основе систем управления базами данных, базирующихся на SQL серверах. В настоящее время большинство информационно – управляющих систем в самых разнообразных областях базируются именно на SQL серверных технологиях. Унификация языковых средств общения с базами данных, методов их проектирования позволяет относительно безболезненно и с минимальными затратами переходить с одной программной платформы на другую. Особое значение пробретают также средства оперативного анализа накопленных данных для принятия управленческих решений. Излагаемый курс можно условно разделить на четыре части. В первой части (главы 1-2) рассматриваются общие принципы построения баз данных, прежде всего реляционных, и основы реляционной алгебры. Вторая часть (главы 3-8) посвящена языку работы с базами данных – SQL. В третьей части (главы 9-11) излагается механизмы функционирования SQL серверов и основные подходы построения приложений для работы с ними. В четвертой части (глава 12) рассматриваются задачи автоматизации анализа данных, основанные на применении OLAP технологий. В качестве базового SQL сервера, если не оговаривается иное, в книге используется InterBase, кроме того рассматриваются возможности работы в среде Oracle. В приложении приведена структура и состав учебной базы. Все примеры в книге протестированы в среде Firebird 2.5, 3.0. Предлагаемое учебное пособие адресовано в первую очередь студентам, обучающимся по направлению «Инвормационные технологии», но может быть полезно и для студентов других специальностей, специализирующихся или интересующихся проблемами разработки систем переработки и анализа информации.
Глава 1. Организация хранения данных Для обеспечения эффективного хранения данных, а это означает быстрый поиск, обновление данных, защиту от ошибочных вводов, обеспечение конфиденциальности информации и многое другое, необходима соответствующая их организация. Для быстрого поиска необходимо упорядочение хранимых данных, поддержание связей между ними, контроль на непротиворечивость, обеспечение однократного ввода или изменения при многократном последующем использовании. Ключевую роль при этом играют методы поддержания логических связей между данными. По способам организации хранения связей выделяются такие модели данных, как иерархические, сетевые и реляционные. Иерархическая модель Первые иерархические и сетевые СУБД были созданы в начале 60-х годов, что было вызвано необходимостью управления миллионами связанных друг с другом записей. Наибольшую известность из них получила система IMS (Information Management System компании IBM). Информация в иерархической модели данных представляется в виде совокупностей ориентированных деревьев. Движение по дереву осуществляется по дугам от вершины - корня, причем в каждую вершину, кроме корня, входит в точности одна дуга, а исходит несколько (возможно, ни одной). Таким образом, в иерархической модели реализуются связи один ко многим. В базах данных точкам соответствуют типы данных, а дугам – связи между данными разных типов. Достоинства иерархической модели данных: 1. относительная простота организации данных; 2. высокая скорость доступа, как по поиску, так и по обновлению данных, имеющих по своей сути иерархическую структуру. Ограничения иерархической модели: 3. отсутствие явного разделения логических и физических характеристик модели; 4. для представления неиерархических отношений данных требуются дополнительные манипуляции; 5. непредвиденные запросы могут требовать ее реорганизации. Сетевая модель Сети – естественный способ представления отношений между объектами. Сети обычно могут быть представлены ориентированным графом общего вида. В графе общего вида в каждую вершину может входить и выходить любое количество дуг. В контексте моделей данных узлы можно представлять как типы записей данных, а ребра представляют отношения один к одному или один ко многим. Структура графа делает возможным создание как простых представлений иерархических отношений (например, генеалогических данных), так и более сложных, в том числе рекурсивных. Сетевая модель данных – это представление данных сетевыми структурами. Разработанные в 1971 году CODASYL (Conference on Data Systems Languages) DTBG (Database Task Group) стандарты систем управления базами данных остаются основной формулировкой сетевой модели. На основе этой модели разработан ряд сетевых систем управления базами данных, в том числе такие известные коммерческие реализации, как IDS (Honeywell) и IDMS (Computer Associates). В сетевой модели существует две основные структуры данных: типы записей и наборы. • Тип записей. Совокупность логически связанных элементов данных. • Набор. В модели DTBG отношение один ко многим между двумя типами записей. • Простая сеть. Структура данных, в которой все бинарные отношения имеют мощность один ко многим. • Сложная сеть. Структура данных, в которой бинарные отношения могут иметь мощность многие ко многим. • Тип записи связи. Формальная запись, созданная для того, чтобы преобразовать сложную сеть в эквивалентную ей простую. В модели DBTG возможны только простые сети. Все отношения имеют мощность один к одному или один ко многим, тем не менее, введением искусственных записей, состоящих только из полей связей, на базе простых сетей реализуются и сложные. Достоинства сетевой модели данных: 6. гибкая организации данных и, соответственно, возможность представления в базе самых разнообразных данных; 7. возможность обеспечения исключительно высокой скорости поиска. Ограничения сетевой модели: 8. сложность процедур обновления данных, связанная с необходимостью перестроения системы связей; 9. трудность поддержания логической целостности данных, высокий уровень риска при возникновении сбойных ситуаций. Реляционная модель В 1970–1971 годах Е.Ф.Кодд ввел реляционную модель данных и реляционные языки обработки данных – реляционную алгебру и реляционное исчисление [1, 2]. • Реляционная алгебра – процедурный язык обработки реляционных таблиц. • Реляционное исчисление – непроцедурный язык создания запросов. Все существующие к тому времени подходы к связыванию записей из разных файлов использовали физические указатели или адреса на диске, которые меняются при реорганизации данных. Реляционная модель, основанная на логических отношениях данных, естественно преодолевает эти проблемы. Существует два подхода к проектированию реляционной базы данных. • Первый подход заключается в том, что на этапе концептуального проектирования создается не концептуальная модель данных, а непосредственно реляционная схема базы данных, состоящая из определений реляционных таблиц, подвергающихся нормализации. • Второй подход основан на механическом преобразовании функциональной модели, созданной ранее, в нормализованную реляционную модель. Этот подход чаще всего используется при проектировании больших сложных схем баз данных, необходимых для корпоративных информационных систем. Глава 2. Реляционные базы данных 2.1. Основные принципы построения реляционных баз данных Большинство современных СУБД относятся к реляционным системам. В них реализовано не только большинство реляционных операций, но и операции для ускорения поиска данных, контроля целостности данных. Обеспечивается также первичная обработка информации средствами СУБД и поддерживается конфиденциальность хранимых данных. Классическая реляционная модель данных предполагает, что данные хранились в так называемых плоских таблицах. Фактически данные могут быть организованы и иначе, но пользователи и приложения, обращающиеся к данным, должны работать с данными так, как если бы они размещались в таких таблицах. В упрощенном виде плоская таблица – это таблица, каждая ячейка которой может быть однозначно идентифицирована указанием строки и столбца таблицы. Кроме того, в одном столбце все ячейки должны содержать данные одного простого типа. Точное определение понятия «плоская таблица» дается в реляционной модели данных. 2.2. Реляционная модель данных Реляционная модель основана на теории множеств и математической логике. Такой фундамент обеспечивает математическую строгость реляционной модели данных. Отношения и кортежи Подмножество R = {(a1, a2,…,an) | aiÎAi} декартового произведения множеств A1´A2´…´An называется отношением степени n (n-арным отношением). Элементы множества r Î R (r = (a1, a2,…,an)) называются кортежами. Мощность множества кортежей, входящих в отношение R, называют мощностью отношения R. Если множество R конечное, а при работе с базами данных это всегда так, то мощность – это просто число кортежей в отношении. Понятие отношения фактически лежит в основе всей реляционной теории баз данных. Отношения являются математическим аналогом таблиц. В самом деле, множество i-ых элементов ai кортежей можно трактовать как i-ый столбец таблицы, а сам кортеж – как ее строку. При этом природа отдельных элементов кортежей не имеет значения. Важно только то, что все они однотипны (принадлежат одному множеству Ai). Сам термин «реляционное представление данных», впервые введенный Коддом, происходит от термина relation, понимаемом именно в смысле этого определения. Поскольку любое подмножество можно рассматривать как декартовое произведение степени 1, то его можно считать отношением степени 1. Это свидетельствующий лишь о том, что термины «отношение степени 1» и «подмножество» являются синонимами. Нетривиальность понятия отношения проявляется, когда степень отношения больше 1. Ключевыми здесь являются два момента: во-первых, все элементы отношения есть однотипные кортежи; во-вторых, за исключением крайнего случая, когда отношение есть само декартово произведение A1 ´A2 ´… ´An, отношение включает в себя не все возможные кортежи из декартового произведения. Это значит, что отношение задает критерий, позволяющий определить, какие элементы декартова произведения A1 ´A2 ´… ´An удовлетворяют ему, а какие – нет. Этот критерий, по существу, и определяет смысл (семантику) отношения. Однотипность кортежей позволяет считать их аналогами строк в простой таблице, т.е. в такой таблице, в которой все строки состоят из одинакового числа ячеек и в соответствующих ячейках содержатся одинаковые типы данных. Например, отношение, состоящее из трех следующих кортежей {(1, "Иванов", 32), (2, "Петров", 41), (3, "Сидоров", 64)} можно считать таблицей, содержащей данные о сотрудниках и их возрасте и состоящей из трех строк и трех колонок, причем в каждой колонке содержатся данные одного типа. С практической точки зрения такая таблица, если это сведения о сотрудниках, плоха, поскольку данные в ней придется периодически обновлять, лучше указать год рождения; если же это данные о медицинском обследовании, то она оптимальна, иначе необходимо было бы давать и год рождения, и год обследования. С точки зрения анализа отношений, это не имеет значения, а вот наличие первого столбца существенно. Если в таблицу будут добавляться строки, то нет гарантии, что не появится Иванов "Второй". Для таблицы это несущественно, но все элементы множества, должны быть различимы, а значит, в нашем отношении не может быть двух одинаковых кортежей. Наличие же первого столбца с номером позволит нам отличить Иванова "Первого" от Иванова "Второго". Операции с отношениями Простое введение понятия отношения само по себе мало что дает. Необходимо определить, как с ним можно работать. Традиционно, вслед за Коддом, для отношений определяют восемь реляционных операторов, объединенных в две группы. Теоретико-множественные операторы: объединение, пересечение, вычитание, декартово произведение. Специальные реляционные операторы: выборка, проекция, соединение, деление. Не все они являются независимыми, т.е. некоторые из этих операторов могут быть выражены через другие. Оператор объединения Пусть R1, R2 Ì A1 ´A2 ´… ´An, ai Î Ai, тогда отношение R = {rt = (a1t, a2t,…,ant) | rt ÎR1 или rt ÎR2}. Оператор пересечения Пусть R1, R2 Ì A1´A2´…´An, ai Î Ai, тогда отношение Оператор вычитания Пусть R1, R2 Ì A1 ´ A2 ´… ´An, ai Î Ai, тогда отношение R = R1 \ R2 называется вычитанием R1, R2, то есть R = {rt = (a1t, a2t,…,ant) | rt ÎR1 и rt ÏR2}. Оператор декартового произведения Пусть R1 Ì A1 ´ A2 ´… ´ An, R2 Ì B1 ´ B2 ´… ´Bm, ai Î Ai, bi Î Bi, тогда отношение R = R1 ´ R2 называется декартовым произведением R1, R2, то есть R = {rt = (a1t, a2t,…,ant, b1t, b2t,…,bmt) | (a1t, a2t,…,ant) ÎR1 и (b1t, b2t,…,bmt) ÎR2}. Оператор выборки Пусть R1 Ì A1´A2´…´An, ai Î Ai, P – предикат на A1´A2´…´An, тогда отношение R = (R1,P)= {rt = (a1t, a2t,…,ant) | rt ÎR1 и P(rt) = истина} называется выборкой (селекцией) R1 по P. Оператор проекции Пусть R1 Ì A1 ´ A2 ´… ´ An, ai Î Ai, тогда отношение R = R1[ k1, k2,..., km] = называется проекцией R1 по (k1, k2,…,km). Отметим, что, если говорить в терминах таблиц, то действие оператора проекции сводится к получению новой таблицы из исходной путем выбора некоторого множества столбцов и последующего удаления повторяющихся строк. Оператор соединения Оператор соединения определяется через операторы декартового произведения и выборки: R = ((S ´ T), P) Для оператора естественного соединения добавляется оператор проекции, то есть R = ((S ´ T), P) [k1, k2, . . . , km] Удобнее его обозначать по-другому. Пусть S={s}, T={t} отношения на множествах столбцов (X,U) и (X,V) соответственно, то есть s=(x1, x2,…,xf,u1, u2,…,ug), t=(x1, x2,…,xf, v1, v2,…,vh), тогда R = S ÄX T = { rn = (x1n, x2n,…,xfn,u1n, u2n,…,ugn, v1n, v2n,…,vhn) | для "n $sk, tm, что для i Î (1, f) xin=xik=xim (xin Î rn, xik Î sk, xim Î tm)}. Оператор деления Пусть R1 Ì A1 ´ A2 ´… ´ An ´ B1 ´ B2 ´… ´Bm, R2 Ì B1 ´B2 ´… ´Bm, тогда делением отношений R1 и R2 будем называть отношение R Ì A1 ´A2 ´… ´ An , R = R1/R2 такое, что R ´ R2 Ì R1 и для " R3, такого, что R Ì R3 и R3 ¹ R, R3 ´ R2 Ë R1. Отношение R1 выступает в роли делимого, отношение R2 в роли делителя, отношение R в роли частного от деления. Деление отношений в определенном смысле аналогично делению с остатком для чисел. Как уже отмечалось, перечисленные операторы являются, вообще говоря, зависимыми. Однако из них можно выделить группу независимых операторов. Например, группа: объединение, вычитание, декартово произведение, выборка, проекция или объединение, пересечение. Операторы такой группы называют примитивными.Состав таких операторов зависит от выбора базовой группы (либо первая, либо вторая). 2.3. Табличное представление данных; нормализация отношений Построение базы данных как системы взаимосвязанных таблиц является непростой задачей [3, 4, 5] основное требование состоит в том, чтобы при построении базы данных избежать дублирования данных. При этом дело состоит не столько в росте объемов хранимой информации, сколько в трудности обеспечения их согласованности. Если данные о технических характеристиках оборудования будут храниться в нескольких таблицах, например таблицах, содержащих сведения об установленном оборудовании, таблицах наличия оборудования на складах, таблицах списанного оборудования, то изменения сведений об отдельном узле потребуется вносить во множество строк в нескольких таблицах. При этом трудно гарантировать полноту внесения изменений, что может привести к противоречиям при выборке и обработке данных, а это уже совсем недопустимо. Последнее означает, что все данные должны быть нормализованы с целью исключения дублирования и, соответственно, однократности ввода или изменения при многократности использования данных. На практике, конечно, для ускорения поиска данных определенное дублирование допускается. Важно лишь, чтобы оно было заранее известно и контролировалось. Обычно это относится к агрегированным данным или данным, полученным в результате специальной обработки. Внешне таблицы, у которых изменен порядок расположения строк и столбцов, являются различными. С точки зрения обеспечения организации хранения данных это недопустимо. Поэтому в таблицах с каждым столбцом связывается его имя. Порядок строк в таблице не фиксируется. Таким образом, таблица определяется составом поименованных столбцов вне зависимости от порядка их записи, а также составом строк вне зависимости от порядка их следования. Рассмотрим подробнее процедуры нормализации. Первая нормальная форма Таблица находится в Первой Нормальной Форме (1НФ), если она представляет собой отображение отношения. Это означает, что: • все данные в каждом из ее столбцов однотипны; • данные каждого столбца элементарны (атомарны), то есть с точки зрения данного приложения не имеют внутренней структуры и должны обрабатываться как единое целое; • все строки таблицы различны. Перечисленные требования, по существу, тривиальны, тем не менее, они очень важны. Нарушение их практически делает неконтролируемой логическую целостность хранимых данных. Все более высокие формы нормализации таблиц базируются на 1НФ. Отношение представляет собой множество кортежей, поэтому отношения не могут содержать одинаковые кортежи. Это значит, что каждый кортеж должен обладать свойством уникальности. На самом деле свойством уникальности в пределах отношения могут обладать отдельные столбцы (атрибуты) кортежей или их группы. Такие уникальные атрибуты удобно использовать для идентификации кортежей. Подмножество атрибутов K отношения R будем называть потенциальным ключом, если K обладает следующими свойствами: 10. свойством уникальности – в отношении не может быть двух различных кортежей с одинаковым значением K; 11. свойством неизбыточности – никакое собственное подмножество в K не обладает свойством уникальности. Любое отношение имеет, по крайней мере, один потенциальный ключ. Действительно, если никакой атрибут или их группа не являются потенциальным ключом, то в силу уникальности кортежей все атрибуты вместе образуют потенциальный ключ. Потенциальный ключ, состоящий из одного атрибута, называется простым. Потенциальный ключ, состоящий из нескольких атрибутов, называется составным. Отношение может иметь несколько потенциальных ключей. Традиционно один из потенциальных ключей объявляется первичным, а остальные – альтернативными. Различия между первичным и альтернативными ключами могут быть важны в конкретной реализации реляционной СУБД, но с точки зрения реляционной модели данных, нет оснований выделять таким образом один из потенциальных ключей. Понятие потенциального ключа является семантическим понятием и отражает некоторый смысл (трактовку) понятий из конкретной предметной области. Последнее особенно важно в условиях, когда таблица будет в дальнейшем модифицироваться, поэтому самого факта, что на данный момент данная группа атрибутов (столбцов) годится в качестве потенциального ключа, недостаточно. Необходимо, чтобы можно было гарантировать эту уникальность и в дальнейшем. Потенциальные ключи служат средством идентификации кортежей в отношении. Объекты предметной области, описываемые кортежами, должны быть различимы. При этом нужно помнить, что потенциальные ключи служат единственным средством адресации на уровне кортежей в отношении. Точно указать какой-нибудь кортеж можно, только зная значение его потенциального ключа. Вторая Нормальная Форма Отношение R находится во второй нормальной форме (2НФ) тогда и только тогда, когда отношение находится в 1НФ и нет неключевых атрибутов, зависящих от части сложного ключа. (Неключевой атрибут – это атрибут, не входящий в состав никакого потенциального ключа). Если некоторое множество атрибутов зависит от другого множества атрибутов, то первое множество будем называть зависимой частью функциональной зависимости, а второе – его детерминантом. Отметим, что, если потенциальный ключ отношения является простым, то отношение автоматически находится в 2НФ. Третья Нормальная Форма Атрибуты называются взаимно независимыми, если ни один из них не является функционально зависимым от другого. Отношение R находится в третьей нормальной форме (3НФ) тогда и только тогда, когда отношение находится в 2НФ и все неключевые атрибуты взаимно независимы. Для того чтобы устранить зависимость неключевых атрибутов, нужно произвести декомпозицию отношения на несколько отношений. При этом те неключевые атрибуты, которые являются зависимыми, выносятся в отдельное отношение. Нормальные формы высоких порядков В большинстве случаев нормализации до уровня третьей нормальной формы (3НФ) вполне достаточно, чтобы разрабатывать вполне работоспособные базы данных. В то же время в некоторых случаях этого уровня оказывается недостаточно из-за трудностей с поддержанием логической целостности данных при обновлении информации. Связано это с тем, что в 3НФ могут сохраняться некоторые функциональные зависимости. НФБК (Нормальная Форма Бойса–Кодда) При приведении отношений с помощью алгоритма нормализации к отношениям в 3НФ неявно предполагалось, что все отношения содержат один потенциальный ключ. Это не всегда верно. Пусть отношение содержит два составных потенциальных ключа A+B и A+C и набор неключевых атрибутов D. C и B находятся в прямой зависимости друг от друга, тогда во всех кортежах, где встречается B, встречается и C. Налицо избыточность. В то же время данное отношение находится в 3НФ, поскольку не содержит неключевых атрибутов, зависящих от части сложного ключа и не содержит зависимых друг от друга неключевых атрибутов. В то же время легко можно, разбив данное отношение на 2 (B, C) и (A, B, D) или (A, C, D), устранить избыточность. При таком действии устраняется зависимость между частями потенциального ключа. Отношение R находится в нормальной форме Бойса–Кодда (НФБК) тогда и только тогда, когда детерминанты всех функциональных зависимостей являются потенциальными ключами. 4НФ и 5НФ (4-ая и 5-ая нормальные формы) В ряде случаев зависимость между атрибутами может присутствовать, но при этом не быть однозначной. Например, если отношение (A, B, C) даже находится в нормальной форме Бойса–Кодда (НФБК), то это еще не означает, что его нельзя представить в виде эквивалентной пары отношений (A, B) и (A, C). В последнем случае говорят, что атрибуты (или группы атрибутов) B и C находятся в многозначной зависимости от A. Если такой зависимости не существует, а значит нельзя провести и эквивалентное разбиение отношения, то отношение находится в четвертой нормальной форме (4НФ). Эквивалентность группы отношений данному отношению означает, что соединение отношений этой группы совпадает с данным отношением. Невозможность разбиения отношения на эквивалентную пару отношений опять же еще не означает отсутствие зависимостей внутри отношения. Пусть отношение образуют атрибуты (группы атрибутов) A, B, C, и отношение (A, B, C) находится в 4НФ. Однако может существовать разбиение отношения на группу из трех отношений (A, B), (A, C), (B,C), эквивалентных данному отношению. Если не существует разбиения данного отношения ни на какую группу отношений, эквивалентную данному, то отношение находится в пятой нормальной форме (5НФ). Отметим, что нормализация к 4НФ и 5НФ возможна только в отношениях, не содержащих зависимых столбцов. Их следует рассматривать, как таблицы допустимых комбинаций составляющих их атрибутов, что можно использовать для входного контроля данных. Связи между данными, логическая целостность данных Хранимые в базе данные таблицы логически связаны между собой. В частности, одним из результатов процедур нормализации данных является появление множества логически связанных таблиц. В общем случае можно говорить о наличии прямой связи между таблицами, если таблица A содержит первичный или уникальный ключ таблицы B. С другой стороны, сам по себе факт, что данные таблицы A детализируют данные таблицы B, никак не может помешать нам добавить в таблицу A новые строки, для которых не будет соответствующих строк в таблице В. Например, если таблица B содержит перечень подразделений, а таблица A – список сотрудников, то нельзя гарантировать, что у нас не появятся сотрудники «никакого» подразделения, то есть не описанного в таблице B, подразделения. В подобных случаях результаты работы программ могут оказаться неожиданными. Такая же проблема возникает и при попытке добавить в таблицу строку с тем же первичным или уникальным ключом, что и у существующей. Ряд полей (столбцов) могут принимать по своему смыслу не все значения, которые допустимы в соответствии с заданным для них типом, а должны принадлежать к определенному диапазону или перечню. Такие ограничения могут распространяться и на отдельное поле и на группу полей. Кроме того, между полями одной строки таблицы или данными разных таблиц могут существовать и более тонкие зависимости. При файловой системе хранения данных функции контроля логической целостности данных возлагаются на прикладное программное обеспечение. Такой контроль осуществляется либо непосредственно, либо через соответствующие описания. В любом слу
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (236)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |