Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 Базы данных.docx
Скачиваний:
21
Добавлен:
23.09.2019
Размер:
808.59 Кб
Скачать

2.1. Имена таблиц и полей

Базы данных созданные в формате Paradox, Dbase, FoxPro относятся к классу файл – серверных БД.

В БД формата Paradox имя таблицы совпадает с именем файла, в котором размещаются все содержащиеся в ней данные. Поскольку 32-разрядные версии Windows разрешают длинные русскоязычные имена файлов, было бы заманчиво назвать таблицы КНИГИ, НАКЛАДНЫЕ и т.п. Я не советую вам делать этого по причине не полной поддержки кириллицы языками программирования и языками манипулирования данными. По этой же причине не следует использовать кириллицу в именах полей.

В именах полей полезно ставить префикс из одной-двух букв названия таблицы (в таблице WORKER все имена начинать с «W», в ADDRESS – с «A» и т.п.). Это исключит вероятность того, что вы случайно назовете поле одним из зарезервированных слов языков программирования, что может сделать его использование невозможным. И еще одна рекомендация: старайтесь делать имена полей по возможности лаконичными – это сократит код программы и сроки ее создания.

2.2. Создание таблицы

В файл – серверных БД все таблицы размещаются в одном каталоге (папке). Поэтому перед созданием БД создадим ее каталог. Пусть это будет каталог C:\WORKER. В нашем случае для создания контейнера БД будем использовать утилиту Database Desktop, входящей в комплект поставки Delphi.

Утилита Database Desktop решает целый ряд задач, связанных с таблицами файл – серверных БД. С ее помощью можно создавать или изменять структуру таблиц, создавать первичные ключи и индексы, создавать и изменять записи, просматривать их и т.д. Запустите Database Desktop с помощью команды Пуск ® Программы ® Borland Delphi 6 ® Database Desktop. Или, если вы работаете в среде Delphi, для запуска используйте команду Tools ® Database Desktop главного меню. Первое, что необходимо сделать, – это настроить рабочий каталог утилиты. Выберите команду File ® Working Directory и установите в появившемся окне ссылку на каталог C:\WORKER (рис. 2.1).

Рис. 2.1. Установка рабочего каталога

Для создания таблицы WORKER выберите команду File ® New ® Table. Database Desktop откроет окно Create Table, в котором можно выбрать тип таблицы (рис. 2.2).

Рис. 2.2. Выбор типа таблицы

Тип таблицы определяет многие ее свойства. Тип Paradox 7 можно считать наилучшим для таблиц файл – серверных баз данных: щелчком на кнопке ОК согласитесь с вариантом Paradox 7, предложенным по умолчанию. На экране появится окно (рис. 2.3), предназначенное для создания/редактирования структуры таблицы. 

2.3. Создание полей

Каждому полю создаваемой таблицы соответствует одна запись в перечне полей (Field roster) этого окна. В колонку Field Name нужно поместить имя поля. В колонку Туре – символ, определяющий тип хранимых в поле данных. В колонку Size – число, определяющее длину поля (требуется не для всех типов полей). И, наконец, в колонку Key – символ звездочки (*), если по значениям этого поля нужно построить первичный ключ.

Введите название первого поля IDWorker и нажмите клавишу табуляции (Tab) для перехода к следующей колонке, в которой вводится тип поля. Нажмите клавишу пробела, чтобы утилита Database Desktop показала список возможных типов, и выберите в нем тип Autoincrement (рис. 2.2).

 

Рис. 2.3. Окно создания структуры таблицы

Поля автоинкрементного типа служат для создания уникального числа, однозначно определяющего запись: для первой записи в это поле будет автоматически помещено число 1, для второй – 2 и т. д. При удалении какой-либо записи выделенное для нее число не используется вновь. После выбора типа поля черный прямоугольник появится в колонке Key. Нажмите клавишу пробела, чтобы пометить поле символом (*) и создать по нему первичный ключ.

Продолжите ввод полей таблицы WORKERS так, как показано на рис. 2.4. Для всех полей установите флажок Required Field, означающий, что при вводе очередной записи в эти поля обязательно должны быть помещены значения – за этим будет следить Borland Database Engine (BDE). 

 Рис. 2.4. Структура полей таблицы WORKERS

28 Типы полей базы данных формата "Paradox".

Табл. A: Типы полей формата Paradox

Alpha

строка длиной 1-255 байт, содержащая любые печатаемые символы

Number

числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10308 с 15 значащими цифрами

$ (Money)

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

Short

числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767

Long Integer

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

# (BCD)

числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки

Date

поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты

Time

поле времени длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено 24 часами

@ (Timestamp)

обобщенное поле даты длиной 8 байт - содержит и дату и время

Memo

поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240) - остальные символы сохраняются в отдельном файле с расширением .MB

Formatted Memo

поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB. Однако, Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo

Graphic

поле, содержащее графическую информацию. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа Graphic, однако наполнять их можно только в приложении

OLE

поле, содержащее OLE-данные (Object Linking and Embedding) - образы, звук, видео, документы - которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi "напрямую" не умеет работать с OLE-полями, но это легко обходится путем использования потоков

Logical

поле длиной 1 байт, которое может содержать только два значения - T(true, истина) или F (false, ложь). Допускаются строчные и прописные буквы

+ (Autoincrement)

поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1 - это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Парадоксе таковой отсутствует. В InterBase также отсутствуют физические номера записей, но отсутствует и поле Autoincrement. Его с успехом заменяет встроенная функция Gen_id, которую удобней всего применять в триггерах)

Binary

поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240) - остальные символы сохраняются в отдельном файле с расширением .MB. Это полнейший аналог поля BLOb в InterBase

Bytes

строка цифр длиной 1-255 байт, содержащая любые данные

29 Правила задания имен полей в базе данных формата "Paradox".

Структура полей

1) Наименования полей:

Порядковый номер поля - этот столбец не содержит заголовка и

предназначен лишь для определения порядка следования полей в таблице.

Значения в нем изменяются автоматически, начиная с единицы,

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

каждого поля.

Field Name - столбец содержит название поля таблицы БД.

Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:

  • Имя должно быть не длиннее 25 символов.

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

  • Имя не должно содержать квадратные, круглые или фигурные скобки [], () или {}, тире, а также комбинацию символов "тире" и "больше" (->).

  • Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.

30 DataBase Desktop: задание доменов в базе данных формата "Paradox". 31 DataBase Desktop: задание ключей в базе данных формата "Paradox". 32 DataBase Desktop: задание связей в базе данных формата "Paradox".

Организация связей в реляционных БД

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

Таблица 1.2

Таблица «Сотрудники»

ИНН

Фамилия

Имя

Отчество

282211024022

Иванов

Петр

Иванович

271122400222

Петров

Иван

Петрович

228422120245

Сидоров

Михаил

Викторович

271225224665

Михайлов

Виктор

Валерьевич

Таблица 1.3

Таблица «Должности»

ID_должности

Должность

121

Директор

128

Бухгалтер

205

Экономист

 Для организации связи таблицы «Должности» с таблицей «Сотрудники», в таблицу «Сотрудники» необходимо добавить дополнительное поле, в котором для каждой записи будет храниться идентификатор соответствующей записи таблицы «Должности». Это поле – вторичный ключ, который представляет собой отображение первичного ключа связанной таблицы «Должности», так как содержит только те данные, которые содержатся в поле «ID_должности». Пример связи представлен на рис. 1.7. 

 Рис. 1.7. Связь таблицы «Должности» с таблицей «Сотрудники»

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

Рис. 1.8. Контейнер БД сотрудников предприятия

1.6.5. Недостатки нормализованной БД

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

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

33 Компоненты Delphi для работы с БД ТDataвase (назначение, свойства, методы события).

Компонент TDatabase позволяет наиболее эффективно управлять подключениями к базам данных. Это управление включает:

═════? создание постоянного подключения к базе данных;

═════? отмену установленной по умолчанию регистрации на сервере;

═════? создание псевдонима BDE на уровне приложения;

═════? управление транзакциями и определение уровней их разграничения.

TObject -> TPersistent->TComponent -> TDatabase

Модуль DB

Страница Палитры компонентов DataAccess

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

  • установление постоянной связи с базой данных;

  • задание параметров сервера;

  • создание локальных псевдонимов BDE;

  • управление транзакциями.