Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Современные технологии хранения и поиска.Среда Visual FoxPro




Задание типов данных

Хранимые процедуры (Stored Prosedure).

Связи (Connections);

Удаленные виды (Remote Views);

Локальные виды (Local Views);

Таблицы (Tables);

Запросы.

Логическая архитектура базы данных в Visual FoxPro

Организация хранения базами данных.

I. Логическая архитектура базы данных в Visual FoxPro состоит из следующих источников данных:

Свободные таблицы

Базы данных;

Свободная таблица, как и таблицы базы данных, хранятся в файлах с расширением.dbf.

База данных хранится в файле с расширением.DBC и может содержать следующие объекты:

 

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

В таблицы 1. приведены типы полей данных в Visual Foxpro:

Основные типы данных Таблица 1

Тип данных Описание
Character Алфавитно-цифровой текст
Currency Денежные единицы
Numeric Числа
Float Числа
Double Числа удвоенной точности
Integer Целые числа
Date Месяц, день и год
DateTime Date плюс часы, минуты и секунды
Logical Истина или ложь
Memo Символьный текст
General OLE

 

В таблицах базы данных хранится дополнительная информация:

а) связи между таблицами;

б) длинные имена таблиц;

в) комментарии для полей и таблиц;

г) заголовки полей данных;

д) значение по умолчанию;

е) правила контроля при добавлении и изменении записей;

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

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

Запросы (Query) хранятся в файлах с расширением.QPR и позволяют просматривать данные, удовлетворяющие описанным критериям. Результаты запроса могут быть отображены различными способами: при помощи окна таблицы или в отчете.

 

Тип поля Character -Это наиболее распространенный тип данных для большинства таблиц. Символьные поля позволяют хранить от 1 до 254 символов, включающих буквы, числа, пробелы и знаки препинания. Обычное символьное поле не может содержать символы вида CHR(0). CHR() – Возвращает символ, который соответствует коду ANSI. Поля, требующие больше 254 символов, должны быть определены как поля типа Memo. Поля типа Character имеют фиксированный размер. Поля типа Character можно также использовать для хранения значений, состоящих полностью из чисел. Например, в виде символьных полей следует хранить такие данные, как почтовые индексы, номера телефонов и даже идентификационные номера заказчиков.

Тип поля Currency - Для хранения значений, выражающих денежные суммы, используется поле специального числового типа, именуемое Currency. Максимальное значение, которое может принимать поле этого типа, соответствует числу, немногим превышающему $922 триллиона. По умолчанию для значений полей типа Currency отводятся четыре десятичных знака и требуется восемь байтов памяти.

Типы полей Date и DateTime – Эти два поля схожи в том, что они оба используются для хранения дат в формате YYYYMMDD, причем для этого им требуется восемь байтов, независимо от того, какое значение задано в команде SET СENTURY – ON или OFF.(SET CENTURY Определяет, должен ли Visual FoxPro показывать номер века в выражениях даты). Поле типа DateTime использует сжатый формат хранения времени в виде HHMMSS (ЧЧММСС), где HH имеет 24-часовое представление. Если преобразовать поле типа Date в поле типа DateTime, то по умолчанию время будет отображаться в формате 12:00:00AM.

Используя функцию DATETIME(), в записи, содержащей поле типа DateTime, можно зафиксировать текущие значения даты и времени (DATETIME()Возвращает текущую дату и время в формате значения заданных командами SET DATE, SET MARK, SET CENTURY, SET HOURS и SET SECONDS).

Для увеличения на один день даты, хранящейся в поле типа Date, необходимо к его значению добавить 1. Но чтобы увеличить на один день дату, хранящуюся в поле типа DateTime, необходимо добавить к его значению число 86400, так как в сутках содержится ровно 86400 секунд.

Поле типа Double – Поле типа Double (вещественное число с двойной точностью) представляет собой поле с плавающей точкой, позволяющее хранить в сжатом формате число, представленное 18 цифрами. Поле занимает в таблице ровно 8 байт.

Поля типа Float и Numeric – Поля типа Float и Numeric (вещественные и числовые) предназначены для хранения значений, в представлении которых используется не более 20 цифр и не более 19 десятичных знаков. При этом для хранения каждой цифры в таблице требуется один байт памяти. FoxPro обрабатывает оба типа полей одинаково, что приводит к одной и той же степени точности.

В отличие от полей типа Double, поля типа Float и Numeric дают возможность определять число требуемых байтов, поскольку FoxPro хранит код ASCII каждой цифры в отдельном байте. Следовательно, если известно, например, что в качестве значений данного поля используются только целые числа, не превышающие 100000, то длину такого поля вполне достаточно определить цифрой 6 с нулевым числом десятичных знаков. Чтобы установить оптимальный размер поля типа Numeric, постарайтесь определить максимальное и минимальное возможные значения. Если окажется, что размерность поля недостаточна для сохраняемого в данном поле значения, FoxPro поместит в такое поле символы звездочки (*).

Поля типа General Чаще всего поле типа General (общий) используется для хранения графических изображений и представляет собой специализированное Memo-поле. FoxPro хранит поле типа General в том же FPT-файле, в котором хранятся и другие Memo-поля таблицы, но это не дает вам право использовать его таким же образом. Поле типа General первоначально предназначалось для хранения ссылок на связанные объекты OLE.

Поле типа Logical – В поле типа Logical (логическое поле) хранится двоичная информация в виде.T. или.F.. Это поле предназначено для запоминания данных, имеющих только два возможных значений. К какому типу, например, можно отнести данные, которые выражаются следующим образом: «мужчина/женщина», «отгружено/заказ не выполнен». Поле типа Logical часто служит источником информации для флажков опций.

Поле типа Memo – (поля примечаний) позволяют хранить большие символьные строки длиной более 254 символов. Для хранения каждой записи предоставляется переменный (нефиксированный) объем памяти, зависящий от размера блока. Блок имеет фиксированную в пределах всей таблицы длину. По умолчанию FoxPro использует блоки размером 64 байт. Это означает, что каждый фрагмент текста, состоящий из 64 символов, требует дополнительного блока.

Размер блока можно изменить с помощью команды SET BLOCKSIZE, которая устанавливает число байт в диапазоне от 33 до 511. Для определения блоков большего размера используйте целое число в диапазоне 1-32, которое означает, что длина блока определяется произведением заданного числа и числа 512. В Visual FoxPro можно задать нулевой размер блока, что заставит Visual FoxPro выделять память побайтово и тем самым не допустит напрасных потерь памяти. Однако в этом случае пострадает быстродействие системы, чего не происходит при использовании блоков заданных размеров.

Размер блока должен быть задан командой SET BLOCKSIZE перед добавлением первой записи с Memo-полем. При добавлении первой записи FoxPro заносит текущий размер блока в Memo-файл. Изменяя размер блока уже существующего Memo-файла, необходимо перезаписать каждое Memo-поле. Однако, независимо от размера блока, не следует забывать, что в первом блоке резервируется восемь байтов для указателей.

FoxPro хранит Memo-поля в файле с расширением.FPT, отдельно от DBF-файла. Независимо от количества Memo-полей в таблице, FoxPro хранит их в одном FPT-файле. а если в вашей таблице используются и поля General, FoxPro хранит их в том же самом файле, вместе с Memo-полями. В DBF-файле предусмотрены специальные указатели, которые отслеживают принадлежность Memo-информации каждой записи и полю.

Поскольку в указателях Memo-полей задан только один путь – из DBF- в FPT-файл, нужно следить за тем, чтобы эти DBF- и FPT-файлы не отделялись друг от друга. При копировании DBF-файла с одной машины на другую без FPT-файла копия этого файла не будет синхронизирована с текущим FPT-файлом, оставшимся на другой машине. Если это случилось, и вы начнете добавлять записи, то вскоре обнаружится, что текст Memo-полей больше не соответствует «своим» записям. Эту проблему практически невозможно устранить без установки вручную указателей, определяющих путь из DBF- в FPT-файл.

Типичные случай использования Memo-полей:

Символьные поля, которые лишь иногда заполняются.

Очень большие по длине символьные поля или поля, длина которых не может быть заранее предсказана.

Текстовые файлы с резюме, деловыми письмами и архивами версии программ.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 849; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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