Академический Документы
Профессиональный Документы
Культура Документы
Процедура нормализации
Как уже говорилось, нормализация - это разбиение таблицы на
несколько, обладающих лучшими свойствами при обновлении,
включении и удалении данных. Теперь можно дать и другое
определение: нормализация -это процесс последовательной
замены таблицы ее полными декомпозициями до тех пор, пока все
они не будут находиться в 5НФ. На практике же достаточно
привести таблицы к НФБК и с большой гарантией считать, что они
находятся в 5НФ. Разумеется, этот факт нуждается в проверке,
однако пока.не существует эффективного алгоритма такой
проверки. Поэтому остановимся лишь на процедуре приведения
таблиц к НФБК.
44. Использование индексов в Visual FoxPro 5.0. Типы ЗО.Проектирование БД. Этап «Проектирование
35.Реляционная полнота SQL. Порядок выполнения команды
индексов. Поиск данных в индексированных и неиндекс фай. реализации».
SELECT.
Команда, создающая индексный файл: INDEX ON <expr> TO Проектирование БД
Порядок выполнения оператора SELECT
<ind_file> [FOR <exprL>] [UNIQUE] Здесь: <expr - ключ Методология поэтапного проектирования БД может быть
Для того чтобы понять, как получается результат выполнения
индексирования, т.е. выражение с числовыми или с определена как построение структуры БД на основе
оператора SELECT, рассмотрим концептуальную схему его
символьными переменными или с датами но не с логическими информационных и процедурных требований пользователей.
выполнения. Эта схема является именно концептуальной, т.к.
переменными и не с memo-полями!); <ind_fle> - имя индексного В настоящее время существуют следующие этапы построения БД:
гарантируется, что результат будет таким, как если бы он
файла без расширения (по умолчанию Visual FoxPro 5.0 присвоит 1 Этап- Анализ требований.
выполнялся шаг за шагом в соответствии с этой схемой. На самом
деле, реально результат получается более изощренными
расширение .idx). 2 Этап- Концептуальное (логическое)
FOR <exprL> - опция, позволяющая эффективно сочетать I проектирование. I 3 Этап- Проектирование реализации.
алгоритмами, которыми "владеет" конкретная СУБД. Стадия 1.
индексирование и фильтрацию данных: в индексном файле будут | ! 4 Этап- Физическое проектирование. | : 5 Этап- Машинное
Выполнение одиночного оператора SELECT
упорядочены записи, для которых соблюдается логическое проектирование. | Каждый этап проектирования характеризуется
Если в операторе присутствуют ключевые слова UNION, EXCEPT условие <exprL>. набором методов
и INTERSECT, то запрос разбивается на несколько независимых 1. Поиск записей в индексированных файлах проектирования и критериями оценки альтернативных вариантов.
запросов, каждый из которых выполняется отдельно: I Осуществляется с помощью совокупности команд открытия Выбор критериев оценки альтернативных вариантов является
| индексированных файлов и одной из команд поиска (FIND или слабым звеном в проектировании БД. Это обусловлено
Шаг 1 (FROM). Вычисляется прямое декартовое произведение всех SEEK), в которых должно быть задано значение ключа. Если Вы не следующими факторами:
таблиц, указанных в обязательном разделе FROM. В результате хотите указать значение ключа точно (например, не хотите или не 1 )Многовариантность решения задачи проектирования.
шага 1 получаем таблицу А. помните точно искомой фамилии и ищете запись только по первой 2)Сложность оценки альтернативных вариантов. Большинство из
букве либо по нескольким первым буквам), следует использовать критериев не имеет количественной оценки, их важность
Шаг 2 (WHERE). Если в операторе SELECT присутствует раздел конфигурацию виртуальной машины Visual FoxPro 5.0 командой из
WHERE, то сканируется таблица А, полученная при выполнении изменяется во времени, время действия различных критериев не
группы SET: SET EXACT ON и SET одинакова.
шага 1. При этом для каждой строки из таблицы А вычисляется I EXACT OFF Команды поиска FIND имеют
условное выражение, приведенное в разделе WHERE. Только те В качестве критериев оценки эффективности проектирования БД
форму: FIND <значение ключа используются следующие:
строки, для которых условное выражение возвращает значение
TRUE, включаются в результат. Если раздел WHERE опущен, то
индексирования> SEEK <значение ключа 1. Количественная - время отклика на запрос,
индексирования> размеры и стоимость памяти, время и стоимость разработки,
сразу переходим к шагу 3. Если в условном выражении участвуют По любой из этих команд будет найдена запись, в которой
вложенные подзапросы, то они вычисляются в соответствии с стоимость обновления и некоторые другие.
данной концептуальной схемой. В результате шага 2 получаем
значение ключа точно (если SET EXACT ON) или 2. Качественные - гибкость, адаптивность,
приблизительно (если SET EXACT OFF) совпадает с заданным в программная и информационная совместимость с другими
таблицу В. команде <значением ключа индексирования>. Если ключ системами.
Шаг 3 (GROUP BY). Если в операторе SELECT присутствует -числовой, то совпадение требуется точное, если включен режим I Возможность изменения структуры БД, удобство
раздел GROUP BY, то строки таблицы В, полученной на втором SET NEAR OFF, либо приблизительное, с округлением - если пользовательского интерфейса и т.д.
шаге, группируются в соответствии со списком группировки, j SET NEAR ON По умолчанию в Visual FoxPro 5.0
приведенным в разделе GROUP BY. Если раздел GROUP BY установлено:SET EXACT OFF; SET NEAR OFF
опущен, то сразу переходим к шагу 4. В результате шага 3 Если в файле имеется несколько записей с одинаковым значением
получаем таблицу С. ключа, то по команде FIND файловый указатель остановится на
«первой встреченной», функция RECNO(), возвращает номер
Шаг 4 (HAVING). Если в операторе SELECT присутствует раздел записи: ?RECNO()
HAVING, то группы, не удовлетворяющие условному выражению, 2. Поиск записей в неиндексированном файле.
приведенному в разделе HAVING, исключаются. Если раздел Если база данных невелика (менее 100 записей, менее 10 полей),
HAVING опущен, то сразу переходим к шагу 5. В результате шага индексирование не даст заметного выигрыша во времени по ЗЗ.Понятие языка данных. Язык запросов SQL. Команды DDL,
4 получаем таблицу D. сравнению с «прямым», переборным поиском. Этот поиск DML, DCD.
осуществляется совокупностью команд:
Шаг 5 (SELECT). Каждая группа, полученная на шаге 4, генерирует LOCATE [<scope>] [FOR <exprL>][WHILE <exprl>] Фактически стандартным языком доступа к базам данных в
одну строку результата следующим образом. Вычисляются все <серия команд FoxPro2.0> настоящее время стал язык SQL (Structured Query Language).
скалярные выражения, указанные в разделе SELECT. По правилам [CONTINUE]
использования раздела GROUP BY, такие скалярные выражения Здесь: <scope> - группа записей (все, ALL; Язык SQL оперирует терминами, несколько отличающимися от
должны быть одинаковыми для всех строк внутри каждой группы. насколько следующих NEXT<число>; оставшиеся до конца файла терминов реляционной теории, например, вместо "отношений"
Для каждой группы вычисляются значения агрегатных функций, REST); (по умолчанию поиск ведется по всей базе данных). используются "таблицы", вместо "кортежей" - "строки", вместо
приведенных в разделе SELECT. Если раздел GROUP BY FOR... WHILE - необязательная часть команды, "атрибутов" - "колонки" или "столбцы".
отсутствовал, но в разделе SELECT есть агрегатные функции, то задающая условие поиска:
считается, что имеется всего одна группа. Если нет ни раздела Стандарт языка SQL, хотя и основан на реляционной теории, но во
запись найдена, если логическое условие <exprL> истинно. FOR
GROUP BY, ни агрегатных функций, то считается, что имеется многих местах отходит он нее.
устанавливает условия для всех записей файла; WHILE действует
столько групп, сколько строк отобрано к данному моменту. В до тех пор, пока не будет «встречена» первая запись, не Основу языка SQL составляют операторы, условно разбитые не
результате шага 5 получаем таблицу Е, содержащую столько удовлетворяющая условию <exprL>. несколько групп по выполняемым функциям:
колонок, сколько элементов приведено в разделе SELECT и По команде LOCATE файловый указатель
столько строк, сколько отобрано групп. останавливается на «первой встреченной» записи, для которой Операторы DDL (Data Definition Language) - операторы
соблюдается условие поиска FOR... или WHILE. определения объектов базы данных.
Стадия 2. Выполнение операций UNION, EXCEPT,
Затем может быть выполнена серия команд
INTERSECT Операторы DML (Data Manipulation Language) - операторы
(например, просмотра базы данных и/или определения номера
записи, на которой остановился указатель). манипулирования данными.
Если в операторе SELECT присутствовали ключевые слова
UNION, EXCEPT и INTERSECT, то таблицы, полученные в Затем поиск может быть продолжен Операторы защиты и управления данными, и др.
результате выполнения 1-й стадии, объединяются, вычитаются или необязательная опция CONTINUE для нахождения записей,
пересекаются. Стадия 3. Упорядочение результата возможно, также удовлетворяющих условию поиска - до конца Одним из основных операторов DML является оператор SELECT,
файла (когда функция EOF() возвратит .Т. («истина»)). позволяющий извлекать данные из таблиц и получать ответы на
Если в операторе SELECT присутствует раздел ORDER BY, то различные запросы. Оператор SELECT содержит в себе все
строки полученной на предыдущих шагах таблицы возможности реляционной алгебры. Это означает, что любой
упорядочиваются в соответствии со списком упорядочения, оператор реляционной алгебры может быть выражен при помощи
приведенном в разделе ORDER BY. подходящего оператора SELECT. Этим доказывается реляционная
полнота языка SQL.