Нарушение хотя бы одной такой связи делает информацию в БД недостоверной. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Нарушение хотя бы одной такой связи делает информацию в БД недостоверной.



Базы Данных

Это электронные хранилища информации, доступ к которым осуществляется с помощью одного или нескольких компьютеров. Обычно БД создаются для хранения и доступа к данным, содержащей сведения о некоторой предметной области, то есть некоторой области человеческой деятельности или части реального мира.

СУБД – это программные средства для создания, наполнения, обновления и удаления БД.

Единицей хранящейся в БД информации является таблица. Каждая таблица представляет собой совокупность строк и столбцов, где строки соответствуют экземпляру объекта, конкретному событию или явлению, а столбцы – атрибутам (признакам, характеристикам, параметрам) объекта, события или явления. Каждая строка содержит сведения о конкретном событии.

В терминах БД столбцы таблицы называются полями, а её строки – записями.

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

Связанные отношениями таблицы взаимодействуют по принципу главная-подчиненная. Одна и та же таблица может быть главной к одной таблице БД и дочерней к другой.

Понятия:

Объект – это нечто существующее и различимое, обладающее набором свойств. Отличие одного объекта от другого объекта определяется конкретными значениями свойств.

Сущность – отражение объекта в памяти человека или компьютера.

Атрибут – конкретное значение любого из свойств сущности.

Поле – это один элемент записи, в котором хранится конкретное значение атрибута.

Поле связи это поле, по которому две таблицы связаны.

 

Первичные и вторичные ключи

В каждой таблице БД может существовать первичный ключ – это поле или табор полей, однозначно идентифицирующий запись.

Значение первичного ключа в таблице БД должно быть уникальным, то есть в таблице не должно существовать двух ил более записей с одинаковым значением первичного ключа.

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

Если в таблице нет полей, значения в которых уникально, для создания первичного ключа в неё обычно вводят дополнительное числовое поле, значениями которого СУБД может распоряжаться по своему усмотрению.

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

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

 

Реляционные отношения между таблицами

Один-к-одному. Отношение один-к-одному имеет место, когда одной записи в родительской таблице соответствует одна запись в дочерней таблице.

 

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

Подобно связи один-ко-многим, связь один-к-одному может быть жесткой и нежесткой.

Реляционные отношения между таблицами

Отношение один-ко-многим. Одной записи в родительской таблице соответствует несколько записей в дочерней таблице.

Различают две разновидности связи один-ко-многим:

- в первом случае выдвигается жесткое требование, согласно которому всякой записи в родительской таблице должны соответствовать записи в дочерней таблице.

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

Связь один-ко-многим является самой распространенной для реляционных БД. Как можно заметить, она позволяет моделировать иерархические структуры данных.

 

Реляционные отношения между таблицами

Отношение многие-ко-многим. Примером таблиц, состоящих в отношение многие-ко-многим, может служить: каждой учебной группе соответствует несколько преподавателей, каждый преподаватель может вести, во-первых, несколько разных предметов, во вторых, преподавать в нескольких разных группах.

Некоторые СУБД не поддерживают связь многие-ко-многим на уровне индексов и ссылочных целостностей.

Считается, что БД может быть перестроена так, чтобы любая связь многие-ко-многим была заменена на одну или более связей один-ко-многим.

 

Реляционные отношения между таблицами

Связи между записями одной таблицы. Между записями одной таблицы может существовать связи, то есть одни записи могут ссылаться на другие.

Пусть в реляционной БД необходимо хранить древовидную структуру произвольного уровня, например структуру организации.

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

 

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

Рассмотрим наиболее часто встречающуюся в БД связь 1-ко-многим. Пусть родительская и дочерняя таблицы связаны между собой по общему полю. Это поле является полем связи.

Возможны 2 вида изменений, которые приведут к утере связи между записями в родительской и дочерней таблицах:

1. изменение значения поля связи в записи родительской таблицы без изменений значений полей связи в соответствующих записях дочерней таблицы.

2. Изменение значения поля связи в одной из записей дочерней таблицы без соответствующего изменения значения полей связи в родительской и дочерней таблицах.

И в первом и во втором случаях мы наблюдаем нарушение целостности БД, это означает, что хранящаяся в ней информация становится недостоверной.

СУБД обычно блокирует действия, которые нарушают целостность связей между отдельными таблицами, т.е. нарушают ссылочную целостность.

Когда говорят о ссылочной целостности, имеют в виду совокупность связей между таблицами во всей БД.

ИНДЕКСЫ

По определениям ключей СУБД автоматически строит индексы, которые представляют собой механизмы быстрого доступа к хранящимся в таблицах данным.

Сущность индексов состоит в том, что они хранят отсортированные значения индексных полей (т.е. полей, по которым будет осуществляться поиск и по которым построен индекс) и указатель на запись в таблице.

Значения полей в индексе сортируются по возрастанию, что существенно ускоряет поиск нужных значений.

Если, например, нужно выбрать все записи с наименованием товара «свекла», нет нужды просматривать всю таблицу. Достаточно найти в индексе, построенном по столбцу наименование товара, первый указатель на запись, содержащую товар – свекла, и считать из таблицы эту запись, а затем повторить то же самое для всех иных указателей в индексе на записи с товаром «свекла».

Поскольку значения полей отсортированы, поиск первого указателя осуществляется специальными методами быстрого поиска и реализуется значительно быстрее, чем если бы поиск шёл по неотсортированным полям таблицы.

Такой метод доступа к записям таблицы называют индексно - последовательным, потому что:

  • Поиск ведётся по индексу, а не по таблице.
  • Доступ начинается с первой строки, удовлетворяющей условию запроса или его части.
  • Строки в индексе, начиная с первой найденной записи, просматриваются последовательно.

В том случае, если в условия запроса входят поля, по которым не построено индексов, ищется иной пригодный индекс, а если такого индекса нет, производится последовательный перебор записей таблицы БД.

 

Нормализация таблиц БД

При проектировании структуры новой БД, определяют сущности (объекты, события, явления) предметной области, которые должны найти своё отражение в БД. Анализ предметной области обычно осуществляется на основании известных сведений о ней с учетом цели проектирования программной системы. В результате анализа создается проект БД. Существует специальные программные комплексы (называемые CASE-средствами), которые в значительной мере автоматизируют процесс создания проекта БД.

Процесс проектирования БД в немалой степени зависит от опыта и интуиции разработчика, то есть является творческим. Однако некоторые его моменты можно формализовать. Одной из таких формализаций является требование, согласно которому реляционная БД должна быть нормализована.

Процесс нормализации имеет своей целью устранение избыточных данных и заключается в приведению к 3-ей нормальной форме.

Первая нормальная форма

Для таблицы будут выполнены условия первой нормальной фор­мы, если:

• каждое поле (концептуальное требование) неделимо;

• отсутствуют повторяющиеся поля или группы полей.

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

Вторая нормальная форма

Условия второй нормальной формы:

• выполняются условия первой нормальной формы;

• первичный ключ однозначно определяет всю запись;

• все поля зависят от первичного ключа;

• первичный ключ не должен быть избыточным.

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

Третья нормальная форма

Условия третьей нормальной формы:

• выполняются условия второй нормальной формы;

• каждое не ключевое поле не должно зависеть от другого не ключевого поля.

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

 

Транзакции

Под транзакцией понимается воздействие на базу данных, переводящее её из одного целостного состояния в другие. Воздействие выражается в изменении данных в таблицах БД.

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

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

 

СУБД

СУБД – это программные средства для создания, наполнения, обновления и удаления БД. Разновидности СУБД:

  1. Access. Доступна для пользователей с низкой квалификацией, средства по созданию отчетов различной степени сложности.
  2. Visual C++. Самая скоростная среда программирования, обеспечивающая выполнение расчетов и обработки данных любой сложности. Совместима практически со всеми известными приложениями.
  3. Visual FoxPro. Для создания приложений БД объема предприятия, обладает хорошим быстродействием и устанавливается на различные платформы.
  4. SQL – Server. Обеспечивает высокую степень защиты данных от случайных потерь, несанкционированного доступа. Развиты средства обработки данных, хорошее быстродействие. Для хранения большого объема данных.
  5. Visual Basic. Продукт фирмы Microsoft, легко интегрируется со всеми приложениями Microsoft Office и интегрированными в Windows. Для создания набольших приложений, в которых не требуется большие вычисления и серьезная обработка данных.

 

Visual Fox Pro. Типы полей. Ограничения. Типы полей

Дистрибутивный пакет FoxPro содержит 2 версии – стандартную и расширенную.

Для функционирования стандартной версии FoxPro 2.6 достаточно обычных 640 Кбайт памяти ПЭВМ и около 20 Мбайт дисковой памяти при полной инсталляции или 2 Мбайт – при минимальной.

Совершенно обязательными являются только файлы FoxPro.exe/.ovl или FoxProX.exe, хотя обычно всегда присутствуют FoxPro.int, Config.fp, FoxUser.* и FoxHelp.*, а также генераторы меню и экранов (GenMenu.prg и GenScrn.prg). Большую часть остальных файлов/директорий после изучения можно удалить.

 

· Поля – максимальный размер символьного поля составляет 254.

· Максимальное число символов в имени поля свободной таблицы (не содержащей в определенной БД) составляет 10.

· Максимальное число символов в имени поля таблицы, содержащейся в определенной БД, составляет 128.

· Записи – максимальное число записей, содержащихся в одном табличном файле, составляет 1Млрд.

· Максимальное число символов в записи 65000 символов.

· Максимальное число полей в записи 255.

· Таблицы – максимальный размер табличного файла – 2Гбайта.

· Максимальное число одновременно открытых таблиц – 2551

· Максимальное число символов в поле таблицы – 254.

· Максимальное число таблиц, между которыми могут быть установлены связи не ограничено.

 

Character (символьный). Он позволяет заносить в поля данного типа для хранения всё, что состоит из букв, знаков, цифр, то есть любые символы. Самый используемый тип поля.

Currency (денежный). Поля денежного типа используются для хранения денежных величин. VFP автоматически включает денежный знак в вычислениях и отчетах. Поля этого типа позволяет вводить значения от -922 337 203 685 477.5808 до +922 337 203 685 477.5807.

Numeric (числовой). Поля числового типа содержат целые числа или дроби. Эти значения используются в вычислениях. Числовые поля можно также использовать для хранения денежных значений, хотя VFP не будет включать денежный знак, когда это значение отобразится в отчетах. Поля этого типа могут содержать числа от -0.999 999 9999е+19 до +0.999 999 9999е+20.

Float (числовой с плавающий точкой). Числовые поля с плавающей точкой содержит теже самые значения, что и поля числового типа. Располагая таким типом, VFP может легко преобразовывать данные из других БД.

Date (дата). Поля дат используются для хранения значений дат. Они могут быть в вычислениях со значениями дат. Диапазон: 01/01/100 – 12/31/9999.

Datetime (дата/время). Это поле содержит значение даты и времени из поля такого вычисления. По этому есть возможность длину временного интервала. Эти поля содержат значения дат от 01/01/100 – 12/31/9999 и времени от 00:00:00 a.m. до 11:59:59 p.m.

Double. Поля этого типа содержат очень большие или очень маленькие значения, точность которых превышает 16 десятичных знаков. Этот тип данных не используется до тех пор, пока не появиться надобность проводить вычисления с числами от +/-4.940 656.458.412.47е-324 до +/-8.988 446 567 431 15е+307.

Integer (целый). Поля этого типа содержат целые числа. В такое поле нельзя поместить десятичное число, но в такое поле можно ввести большое или маленькое число диапазоном: -2 147 483 647 до +2 147 483 646.

Logical (логический). Этот тип используется когда только два значения (истина или ложь) должны храниться в поле.

Memo (примечания). Используется это поле для ввода большого фрагмента текста. Фактически текст хранится на винчестере. Значения поля – это ссылка на то место, где хранится текст. Поля этого типа дают возможность добавить в БД записную книжку.

General (общий). Поля этого типа зарезервированы для хранения ссылок на объект OLE (связывание и внедрения объектов), а объектом может быть электронная таблица, документ Word и практически всё, что было создано другими программами для Windows. Эти объекты непосредственно включаются в БД VFP.

Character (Binary) и Memo (Binary). Они содержат теже типы данных, что и символьные и Memo-поля, однако данные хранятся в двоичном виде, что позволяет предотвращать изменения данных этого типа на языке написанном в VFP.

Временные переменные

Просмотр переменных

В любой момент при отладке программ может понадобиться просмотр переменных памяти. Использование команды "?" слишком трудоемко при просмотре большого количества переменных. Следующая команда предъявляет сразу все нужные переменные памяти:

  • DISPLAY MEMORY [LIKE <маска>]

[ТО PRINTER/FILE <файл>]

Команда показывает с паузами после выдачи каждых 20 строк все активные переменные и массивы, их статус (PUBLIC или PRIVATE), тип и значения. Кроме того, она показывает размер I памяти, занятой под переменные, окна и меню. Если нужно просмотреть только все пользовательские переменные, введите команду DISPLAY MEMORY LIKE *. Аналогичные функции, но безостановок, выполняет команда LIST MEMORY.

Все вышеперечисленные команды, кроме команд просмотра, не распространяются на системные переменные FoxPro.

 

Структура команд FoxPro. Правила записи

1. Команда может иметь длину до 2048 символов.

2. Для переноса в тексте программы части команды на следующую строку в конце текущей ставят точку с запятой.

3. Ключевые слова и имена записываются как прописными, так и строчными буквами.

 

Команды FoxPro, ориентированы на обработку файлов базы данных, а самом общем виде имеют следующий синтаксис:

НАЗВАНИЕ [<границы>] [<список выр.>] [For <условие>] [While <условие>], где

НАЗВАНИЕ – имя команды;

<границы> - границы действия команды, которые могут иметь одно из следующих значений:

· All – все записи базы данных;

· Rest – все записи начиная с текущей;

· Next <N> -следующие N записей;

· Record <N> - запись номер N;

For <условие> - выполнение команды только для записей, отвечающих условие;

While <условие> - выполнение команды только до тех пор пока не перестанет выполнятся <условие>.

Слова While и For могут присутствовать в команде одновременно. В этом случае While-условие имеет приоритет перед For-условием.

Пример: ListRestField fam, tab, dtrFor fam=”П”

название границы выражение For-условие

Порядок следования элементов команды (за исключением «НАЗВАНИЯ», которое всегда на первом месте) практически произвольный. По умолчанию, если отсутствуют <границы> или <условия>, сферой действия команды является одна только текущая запись (NEXT 1) или, наоборот, вся БД (All). Эти сведения содержатся в описании команды.

Поясним применение команд с условием. For-условие обеспечивает выполнение команды для всех записей файла БД или внутри границ, если они указаны. While-условие означает выполнение команды только ля тех пор пока условие истинно. При встрече первой же записи, у которой окно (While-условие) не удовлетворяется, дополнение команды прекращается, несмотря на то, что нижняя граница ещё не достигнута и далее имеются записи с нужными свойствами. Поэтому область применения While-условия – это файлы, упорядоченные (физически или индексированием) по полю, в котором анализируется условие. Если ранее каким-либо образом была найдена первая запись, удовлетворяющая условию, то все остальные такие записи находятся ниже рядом. В этом случае использование команд с While-условием предпочтительнее, так как по достижении нужной последней записи выполнение команды прекращается, а в случае For-условия поиск записи был бы бессмысленно продолжен до достижения нижней границы действия команды.

Команды установки

УПРАВЛЕНИЕ СТАТУС-СТРОКОЙ

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

Для вывода статус-строки на экран надо в окне Command по­дать команду

SET STATUS ON.

Для удаления статус-строки с экрана надо подать ту же коман­ду с параметром OFF. Статус-строка полезна при обучении и отладке, но в гото­вых программах она, конечно, не нужна.

 

УСТАНОВКА ТИПА ДАТЫ

В FoxPro предусмотрены несколько типов дат, которые устанав­ливаются с помощью команды: SET DATE <тип даты>

Аргумент <тип даты> может содержать одну из констант:

AMERICAN — американский тип даты мм/дд/гг

ANSY — тип даты ANSY гг.мм.дд

BRITISH — английский тип даты дд/мм/гг

GERMAN — немецкий тип даты дд.мм.гг

ITALIAN — итальянский тип даты дд-мм-гг

Если необходимо установить написание года четырьмя циф­рами, то надо подать команду SET CENTURY ON.

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

SET CONFIRM ON

Команда включает автоматический перевод курсора в следу­ющее поле после нажатия клавиши ENTER. Если после нажатия клавиши ENTER курсор должен оставаться в том же поле, то в этой команде следует указать параметр OFF.

г. Ком-анда подачи звукового сигнала

SET BELL ON

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

д. Управление выдачей системных сообщений

SET TALK ON | OFF

Если установлена опция ON, то на экран выводятся систем­ные сообщения о выполнении некоторых команд и многих фун­кций FoxPro. Если установлена опция OFF, то системные сооб­щения на экран не выводятся.

Константы различных типов

Символьные константы выделяются апострофами, кавычками или квадратными скобками. В случае если сами символы-ограничители являются элементами данных, вся строка должна быть заключена в другие разрешенные ограничители, например: [Кинотеатр “Ударник”].

Константы типа даты берутся в фигурные скобки (например: {29.03.87}). Пустая дата ({..}) вообще может быть задана одними фигурными скобками {}.

Логические константы Т и F в тексте программ обрамляются точками (.Т.,.F.,.t.,.f.)

ФУНКЦИИ СУБД

Функции в FoxPro используются для анализа или преобразования данных. Синтаксическая особенность функций - обязательное наличие скобок (кроме функции &).

Все функции могут быть использованы в программах, а большинство из них - и в интерактивном режиме. Функции разбиты (иногда довольно условно) на следующие группы:

• математические функции;

• строковые функции;

• функции работы с датами;

• функции преобразования типов данных;

• функции проверки файлов и дисков;

• функции позиционирования выдачи данных;

• функции работы с мышью;

• клавишные функции;

• технические функции;

• функции времени;

• функция анализа условий;

• функции анализа типа и наличия данных;

• финансовые функции;

• функции подстановки.

 

Арифметические функции

АВS(<вырN>) - вычисляет абсолютное значение <вырN>.

Пример:? ABS(-24.8) && 24. 8

BETWEEN(<выр>,<выр1>,<выр2>) - возвращает значение "Истина" (.Т.), если <выр> больше или равно <выр1> и меньше или равно <выр2>, иначе - "Ложь" (.F.). Тип всех трех выра­жений должен быть одинаковым (строка, число, дата). Пример:

? BETWEEN (4,1,6) &&.F.

? BETWEEN({04.06.65},<23.10.70),U5.12.91)) &&.Т.

USE kadr LIST FOR BETWEEN (YEAR(dtr),1943,1960) fam,dtr

Последняя команда выводит все записи из базы KADR.DBF, где дата рождения находится между 1943 и 1960 годами..

CEILING(<вырN>) - возвращает ближайшее целое число боль­шее или равное <вырN>. Аргумент может иметь любой знак. Пример:

? CEILING(6.3), CEILING(-8.4) && 7 и -8

• FLOOR(<вырN>) - ближайшее целое меньшее или равное <вырN>. Пример:

? FLOOR (6.3), FLOOR (-8.4) && 6 и -9

• INT(<вырN>) - целая часть <вырN>. Пример:

? INT(-18.7) && -18

• МАХ(<выр>,<выр1>[,<выр2>...]) - возвращает максимальное значение из списка аргументов, которые должны быть все од­ного типа (символьные, числовые или дата). Пример:

? мах (3,1,-8) && 3

? МАХ({04.06.65},(23.10.70},{15.12.91}) && 15.12.91

• МIN(<выр>,<выр1>[,<выр2>...]) - возвращает минимальное значение из списка аргументов, которые должны быть все од­ного и того же типа. Пример:

? МIN (3,1,-8) && -8

? МIN({04.0б.65},{23.10.70}, {15.12.91}) && 04.06.65

• MOD(<вырN1>,<вырN2>) -целочисленный остаток отделения <вырN1> на <вырN2>. Пример:

? MOD (3,2), MOD(5/7) && 1 и 5

• ROUND(<вырNl>,<вырN2>) - округление <вырN1> до задан­ного в <вырN2> количества знаков после запятой. Пример:

? ROUND (-342.268,1) && -324.-3

• RAND([<вырN>]) - возвращает псевдослучайное число в диапазоне 0 -1. <вырN> позволяет определить начальное значение аргумента функции. Использование одних и тех же значений <вырN> дает один и тот же ряд чисел. По умолчанию исходное значение аргумента 100001, что соответствует RAND(100001). Если <вырN> является отрицательным, значение функции вычисляется с помощью таймера компьютера, что обеспечивает наибольшую случайность выдаваемых значений. Таким образом, для получения максимальной случайности выдаваемых значений вначале следует использовать функцию с отрицательным аргументом, а затем - без аргументов. Хотя сама функция непосредственно вырабатывает числа, распределенные равномерно между 0 и 1, на ее основе можно построить генераторы с любыми диапазонами чисел, любыми законами распределения. Например, выражения

(b - a) *RAND() + a и INT ({ j -i + 1) *RAND() +i)

реализуют равномерный закон с вещественными числами, pacположенными в диапазоне А - В, и с целыми числами в диапазоне I – J. Генераторы других законов приведены в документации на FoxPro.

• SIGN(<вырN>) - возвращает значения: 1, если число положительное, -1, если отрицательное, 0, если нуль. Пример:

?SIGN(5), SIGN(-7), SISN (О) && 1, -1 и 0

Степенные функции

· ЕХР(<вырN>) - экспонента <вырN> - основание натурального логарифма "е" в степени <вырN>.

· LOG(<вырN>) - натуральный логарифм <вырN>. Аргумент должен быть больше нуля.

· LOG10(<вырN>) - десятичный логарифм <вырN>. Аргумент должен быть больше нуля.

· SQRT(<вырN>) - квадратный корень <вырN>. Аргумент должен быть положительным.

Тригонометрические функции

  • SIN (<вырN>) - синус(<вырN>). <вырN> задается в радианах результат, возвращаемый функцией, находится в диапазоне от -1 до 1.
  • COS (<вырN>) – косинус (<вырN>). Аргумент задается в радианах
  • TAN (<вырN>) – тангенс (<вырN>). Аргумент задается в радианах.

· ASIN (<вырN>) – арксинус (<вырN>). Результат в радианах и в интервале от -Пи/2 до Пи/2 (от -1,57079 до 1,57079). Значение аргумента может изменяться от +1 до -1 (<вырN>). Результат в радианах в интервале от 0 до Пи (3,14159). Аргумент может изменяться от-1 до +1.

· ATAN(<вырN>) - арктангенс(<вырN>). Результат в радианах в ин­тервале от -Пи/2 до Пи/2. Значение <вырN> может быть любым.

· ATN2(<вырNl>,<вырN2>) - арктангенс отношения <вырNl> / <вырN2>. Здесь аргументы - это координаты точки Y и X на плоскости. Функция допускает 0 в качестве второго аргумен­та. Результат лежит в интервале между -Пи/2 и Пи/2. Пример:

? ATN (5,0) && 1.57

  • РI() - число Пи (приблизительно 3.141592).
  • DTOR(<вырN>) - преобразует угол, заданный в градусах, в радианы. Пример:

? DTOR (90), DTOR (40.2) && 1.57 и 0.7

· RTOD (<вырN>) - возвращает угол в градусах по его радианному значению <вырN>. И аргумент, и результат функций DTOR() и RTOD() - в десятичном представлении. Пример:

? RTOD (1.57) && 89.95

Здесь мы как будто видим ошибку: 90 градусов соответствуют 1.57 радианам, а 1.57 радиан - только 89.95 градусам. На самом де­ле это является следствием не ошибки, а ограниченной точности вывода результата (по умолчанию - два дробных разряда) функции DTOR(). Если бы мы вывели не два, а больше разрядов, совпадение было бы гораздо более полным.

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

  • SET FIXED ON

(по умолчанию OFF), то разрядность будет уже определяться другой командой

  • SET DECIMALS TO <вырN>

устанавливающей количество отображаемых десятичных разрядов равным <вырN>, и при этом производится округление. По умолчанию <вырN>=2.

Примеры. Пусть выводимое число равно 67.34567. Тогда применение указанных команд даст следующие результаты:

SET FIXED ON && результат: 67.35

SET DECIMALS TO 3 && результат: 67.346

Команды SET DECIMALS и SET FIXED управляют только предъявлением информации, но не влияют на ее фактическое значение.

Создание файла БД

Создавать и работать с табличным файлом можно как с независи­мым объектом, хранящимся внутри каталога, так и как с частью базы данных. Для того чтобы таблица была частью базы данных, надо либо сначала создать файл базы данных (или открыть файл базы данных), а затем создавать таблицы (описанными выше ко­мандами), либо специальными командами в открытый файл базы данных поместить (добавить) ранее созданные таблицы. Если файл базы данных создан, то создаваемая база данных будет реля­ционной. В противном случае база данных не реляционная.

Создать файл базы данных можно несколькими способами.

а. С помощью команд.

В окне Command надо подать команду: CREATE DATABASE [ <имя базы данных> |? ]

Команда создает базу данных и делает ее текущей (открытой). Если указана опция «?» или опции не указаны вообще, то на экран выводится диалоговая панель Create, где в специальном окне представлены имена имеющихся баз данных, и в поле ввода Enter database можно задать имя создаваемой базе данных.

б. С помощью Главного меню,

Из Главного меню надо подать команду: File -> New, тогда на экран выводится диалоговая панель New, где в ра­диогруппе File Type надо включить кнопку Database и нажать кнопку New File, тогда на экран выведется диалоговая панель Create, работа с которой описана в пункте а.

в. С помощью графического меню.

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

База данных, созданная любым способом, становится теку­щей (открытой). Файл базы данных имеет расширение.DBC.

Освобождение таблицы

Для освобождение таблицы существуют две команды.

Команда REMOVE TABLE <имя таблицы>? [DELETE] удаля­ет таблицу из базы данных и делает указанную таблицу свобод­ной, оставляя ее в текущем каталоге. Если указана опция DELETE, то таблица удаляется не только из базы данных, но и с диска.

Команда FREE TABLE <имя таблицы> используется при за­крытой базе данных для доступа к указанной таблице. Если оп­ция <имя таблицы> опущена, то на экран выводится диалоговая панель Free Table, которая аналогична диалоговой панели Open, где можно указать имя освобождаемой таблицы.

Освободить таблицу можно через Главное меню командой Database -> Remove.

После выбора команды Remove надо уточнить свое действие: освободить таблицу (Remove) или удалить таблицу (Delete) нажа­тием соответствующей кнопки.

После нажатия одной из кнопок (Remove или Delete) надо подтвердить (или отменить) выбранное действие нажатием кнопки Yes или No в появившемся на экране новом запросе.

 

ОТКРЫТИЕ БАЗЫ ДАННЫХ

Для открытия базы данных надо из Главного меню подать коман­ду File -> Open или в графическом меню нажать кнопку Open, на экран выведется диалоговая панель Open, где надо указать имя базы данных и место ее хранения. В результате работы команды Open на экран выведется диалоговая панель Database Designer.

BROWSE-ОКНО

Команда BROWSE - один из наиболее мощных и удобных инстру­ментов доступа пользователя к данным в FoxPro. По существу это не просто команда - это целая среда доступа и управления данными.

Записи из базы (по умолчанию) предъявляются горизонтально на экране или внутри предварительно описанного окна. Записи можно редактировать, дополнять и помечать к удалению. Формат отображе­ния полей в BROWSE-окне может настраиваться пользователем.

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

Если позволяет основная память компьютера, можно одновре­менно открыть до 25 BROWSE-окон для стандартной и до 255 -для расширенной версии FoxPro.

Команда BROWSE дает возможность предъявлять поля из разных баз данных. Кроме того, она поддерживает любой тип связи между ба­зами. При выполнении команды можно получить текущее значение колонки/строки относительно окна/экрана (функции COL()/ROW()), имя текущего поля (функции VARREAD() и SYS(18)), номер текущей записи (RECNO()) и т.д. Допускается широкое приме­нение аппарата пользовательских функций.

Отбор данных

Следующие исключительно важные опции позволяют ограничить доступ в базе только к определенному множеству записей.

FOR <условие1> - устанавливает фильтр записей для базы. В BROWSE-окне предъявляются только записи, удовлетворяю­щие заданному <условию>.

Пример:

USE tadr

BROWSE FOR szar>=530000.AND.szar<=750000

Здесь команда BROWSE предъявляет только те записи базы KADR.DBF, в которых значения поля SZAR (средняя зарплата) от 530000 до 750000 руб. Если имеются соответствующие индекс­ные файлы, фильтрация данных будет выполняться с их участием и использованием оптимизирующей технологии Rushmore, т.е. гораздо быстрее. Такой индекс, естественно, должен быть открыт. Опция NOOPTIMIZE отключает оптимизацию. REST - удобно использовать совместно с FOR-условием. Это предотвращает повторный поиск в базе с самого ее начала записей, отвечающих <условию> при повторном вызове BROWSE-окна. Курсор остается на текущей записи, если, конечно, она удовлетворяет <условию>.

KEY <выр1> [,<выр>2>] - ограничение действия команды диапазо­ном ключевого выражения <выр1> и <выр2> активного ин­дексного файла.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 250; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.141.202 (0.178 с.)