русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Условия целостности данных


Дата добавления: 2013-12-23; просмотров: 1770; Нарушение авторских прав


Индексы

Ранее мы рассмотрели понятие ключей таблиц базы данных. В большинстве реляционных СУБД ключи реализуются с помощью объектов, называемых индексами. Индекс представляет собой указатель на данные, размещенные в реляционной таб­лице. Можно провести аналогию индекса таблицы базы данных с алфавитным указателем, обычно помещаемым в конце книги. Чтобы найти в книге страницы, от­носящиеся к некоторой теме, проще всего обратиться к указателю, в котором устанавливается соответствие между перечисленными в алфавитном порядке темами и номерами страниц, и сразу определить требуемые страницы. Чтобы без указателя найти все страницы, относящиеся к нужной теме, пришлось бы просмат­ривать всю книгу. Индекс базы данных предназначен для аналогичных целей — чтобы ускорить поиск информации в таблице базы данных. Индекс предоставляет информацию о точном физическом расположении данных в таблице.

При создании индекса в нем сохраняется информация о местонахождении запи­сей, относящихся к индексируемому столбцу таблицы. При добавлении в таблицу новых записей или удалении существующих индекс также модифицируется.

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

Рассмотрим пример индекса. На рис. 8 показан фрагмент таблицы СТУДЕНТЫ и индекса, построенного по полю Имя данной таблицы. При выполнении поис­ка по имени студента, просматривая индекс, можно сразу определить порядко­вый номер записи, содержащей необходимую информацию, и затем быстро най­ти в таблице сами данные. Если бы у таблицы отсутствовал индекс по полю Имя, то выполнение поиска по имени студента потребовало бы просмотра всей таблицы. Таким образом, использование индексов сокращает время выборки данных.



Чтобы информация, хранящаяся в базе данных, была однозначной и непротиворе­чивой, в реляционной модели устанавливаются некоторые ограничительные усло­вия. Ограничительные условия — это правила, определяющие возможные значе­ния данных. Они обеспечивают логическую основу для поддержания корректных значений данных в базе. Такие ограничения целостностипозволяют свести к минимуму ошибки, возникающие при обновлении и обработке данных. Важнейшими ограничениями целостности данных являются:

- категорийная целостность;

- ссылочная целостность.

 

Имя Расположение   Расположение Имя Курс
Алексеев 1     Алексеев    
Афанасьев 4     Яковлев      
Кузнецов 5     Михайлов      
Михайлов     Афанасьев      
Смирнов     Кузнецов      
    ….   ….      
Яковлев     Смирнов      

Таблица
 
 
Индекс

 

 


Рисунок 8. Таблица с индексами

Ограничение категорийной целостности заключается в следующем. Кортежи от­ношения представляют в базе данных элементы определенных объектов реального мира или, в соответствии с терминологией реляционных СУБД, категорий. На­пример, строка таблицы СТУДЕНТЫ представляет конкретного студента. Первичный ключ таблицы однозначно определяет каждую строку и, следовательно, каждый элемент категории СТУДЕНТЫ. Таким образом, для извлечения данных, содержащихся в строке таблицы, или для манипулирования этими данными необходимо знать значение ключа для этой строки. Поэтому строка не может быть занесена в базу данных до тех пор, пока не будут определены все атрибуты ее первичного ключа. Это правило на­зывается правилом категорийной целостности и кратко формулируется следующим образом: никакой атрибут первичного ключа строки не может быть пустым.

Рассмотрим теперь понятие ссылочной целостности. Если две таблицы связаны между собой, то внешний ключ таблицы должен содер­жать только значения, уже имеющиеся среди значений ключа, по которому осуще­ствляется связь. Если корректность значений внешних ключей не контролируется СУБД, то может нарушиться ссылочная целостность данных. Это можно пояснить на рассматриваемом примере следующим образом. Если удалить из таблицы СТУ­ДЕНТЫ строку (например, при отчислении студента), имеющую хотя бы одну свя­занную с ней строку в таблице УСПЕВАЕМОСТЬ, то это приведет к тому, что в таблице УСПЕВАЕМОСТЬ останутся записи об успеваемости студента, который уже отчислен. Такая же ситуация будет наблюдаться и в том случае, если внешнему ключу таб­лицы УСПЕВАЕМОСТЬ ошибочно будет присвоено значение, отсутствующее в значе­ниях ключа связанной таблицы.

Ограничения категорийной и ссылочной целостности должны поддерживаться СУБД. Для соблюдения категорийной целостности достаточно гарантировать отсут­ствие в любом отношении кортежей с одним и тем же значением первичного клю­ча. Что же касается ссылочной целостности, то здесь обеспечение целостности выглядит несколько сложнее. При обновлении ссылающегося отношения (при вставке новых кортежей или модификации значения внешнего ключа в существу­ющих кортежах) достаточно следить за тем, чтобы не появлялись некорректные значения внешнего ключа. А вот при удалении кортежа из отношения, на которое ведет ссылка, можно использовать следующий подход, обеспечивающий ссы­лочную целостность: при удалении кортежа из отношения, на которое ведет ссылка, из ссылающего­ся отношения должны автоматически удаляться все ссылающиеся кортежи (каскадное удаление). Например,если студента отчисляют из института, и удаляют информацию о нем из таблицы СТУДЕНТЫ, то из таблицы УСПЕВАЕМОСТЬ надо удалить все строки, в которых значение атрибута №_студенческого_билета совпадает со значением №_студенческого_билета для удаляемого студента.



<== предыдущая лекция | следующая лекция ==>
Связи между отношениями | Основные объекты СУБД Access


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.