Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы автоматизации проектирования в строительстве..pdf
Скачиваний:
35
Добавлен:
15.11.2022
Размер:
13.65 Mб
Скачать

Таблица А "Сотрудники"

Код

Фамилия

Имя

Отчество

сотрудника

 

 

 

---- 1 Иванов

Сергей

Петрович

2

Петров

Иван

Иванович

3 Михайлова

Анна

Николаевна

4

Сидоров

Андрей

Семенович

-Каждый руководитель имеет по одной соответствующей записи в таблице "Сотрудн

Табг ица В "Руководители"

од

Должность

Стаж

сот|>;Шинка

 

 

---- 1

Директор

25

3

Начальник

10

 

отдела

 

Рис. 7.4. Пример связи «один-к-одному»

Один постав иуж...

Таблица А "Поставщики"

Код Поставщик Адрес поставщика

----------- 1 ЖБК-1

 

гЛермь...

 

 

 

2 ЖБК-2

 

г.Пермь...

 

 

 

3 Завод СК

г. Уфа...

 

 

 

...может поставлять несколько товаров -

 

Таблица В "Товары"

 

 

 

Код

Наимено­ Цена

Кол-во

Код

 

товара

вание

 

поставщика

н

1 Панели

500

25

1

2 Балки

200

100

1

3 Панели

500

10

2

 

4 Арки

600

20

3

 

-Но каждый товар имеет лишь одного поставщика.-

Рис. 7.5. Пример связи «один-ко-многим»

В связи «многие-ко-многим» одной записи в таблице А могут соответствовать несколько записей в таблице В, а одной записи в таблице В - несколько записей в таблице А. Такая схема может реализоваться с помощью третьей (связующей) таблицы (рис. 7.6).

Таблица А «Клиенты»

Код

Клиент

Адрес

Дата

заказа

 

 

заката

100

Фирма 1

г. Москва...

12.05.2006

— 101

Завод ЖБК г. Пермь...

05.08.2006

102

АО "АВС"

г. Пермь...

30.12.2006

 

Ключ из таблицы «Заказы»

Заказ может

 

|- Ключ из таблицы «Товары»

включать много

 

 

 

товаров...

Код

Код Кол-во Цена

 

 

заказа

товара

10110 5 000р.

Г25

101

30

5

5

600р.

101

34

20

15

000р.

-----*62-

I-25

6

3

000р.

...и каждый товар может быть во мнол-tx заказах.

Таблица В «Товары»

Код

Наименование

Цена

говара

 

----

25 Бетон

500р.

 

26 Цемент

700р.

Рис. 7.6. Пример связи «многие-ко-многим»

2.5. Структуризация данных при проектировании реляционных БД

Реляционная модель данных считается в настоящее время наи­ более перспективной для создания БД САПР. Проектирование ре­ ляционных БД в основном определяется спецификой проблемы предметной области и включает в себя решение следующих задач:

структуризация данных (определение числа и структуры таблиц);

формирование запросов к БД;

определение типов отчетных документов;

разработка алгоритмов обработки информации;

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

данных, на ней мы сосредоточим основное внимание.

При проектировании структур данных для автоматизирован­ ных систем можно выделить три основных подхода:

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

2.Формулирование знаний о системе (определение типов ис­ ходных данных и их взаимосвязей) и требований к обработке дан­ ных, получение с помощью CASE-системы (системы автоматиза­ ции проектирования и разработки БД) готовой схемы БД или даже готовой прикладной информационной системы.

3.Структурирование информации для использования в инфор­ мационной системе в процессе проведения системного анализа на основе совокупности правил и рекомендаций.

Первый из названных подходов является классическим и исто­ рически первым, его и рассмотрим на примере построения простей­ шей БД «Товары - Поставщики - Покупатели». Сведем информацию обо всех объектах: товарах, поставщиках, покупателях в одну табли­ цу (табл. 7.2). Ключевое поле - Код товара. Информация об адресах поставщика и покупателя в этой таблице не зависит от ключа.

Таблица 7.2

БД «Товар - Поставщик - Покупатель»

Код

Наимено­

Цена

Кол-во Поставщик

Адрес

Покупатель

Адрес

товара

вание

 

 

 

 

 

 

1

Панели

500

25

ЖБК-1

г.Пермь... Фирма-1

г. Москва...

 

 

 

 

 

 

Строит.

 

2

Балки

200

100

ЖБК-1

г.Пермь... компания

г. Пермь...

3

Панели

500

10

ЖБК-2

г.Пермь... Фирма-2

г. Ижевск...

 

 

 

 

 

 

Строит.

 

4

Арки

600

20

Завод СК

г. Уфа...

компания

г. Пермь...

Следовательно, эту информацию можно выделить в отдельные таблицы: «Поставщики» и «Покупатели». Этот процесс называется нормализацией, он позволяет исключить избыточное дублирование данных. В результате получается три связанных между собой таблицы (рис. 7.7).

Рис. 7.7. Нормализация таблицы данных

Таблица 1 называется оперативной, а 2 и 3 - справочными.

Информация в оперативной таблице меняется часто, а в справоч­ ных - редко. Таблица 1 связана с таблицей 2 по полю Код постав­ щика, а с таблицей 3 - по полю Код покупателя. Поле Код постав­ щика является первичным ключом для таблицы 2 и внешним ключом

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

(и 3) соответствуют несколько (или ни одной) записей в таблице 1 (связь «один-ко-многим»).

Такая структура обеспечивает требования неизбыточности и це­ лостности реляционной БД.

§2. С и с т е м ы у п р а в л е н и я б а з а м и д а н н ы х (СУБД)

Системы управления базами данных —специальное программ­ ное обеспечение для работы с БД, которые дают пользователям возможность осуществлять непосредственное управление данными (ввод, изменение, поиск), а программистам - разрабатывать инфор­ мационные системы7 для их обработки.

1. История СУБД

Начало СУБД для ПЭВМ положила фирма Ashton Tate (США) выпуском в 1980 году программы dBase.

Далее начали появляться dBase-подобные СУБД: Ребус, Ка­ рат, FoxPro, Clipper (версий и адаптированных вариантов гораздо больше). Общее для всех этих программ: формат представления данных (-dbf), работа с реляционными БД. Но командный язык, а также формат индексных файлов у них разный. Эти программы эпохи ОС MS-DOS.

Несколько позднее появились программы управления дан­ ными: Paradox, Clarion, db-Vista, имеющие другие форматы дан­ ных и вначале разрабатываемые под ОС MS-DOS, но после появ­ ления операционной системы Windows эти СУБД были переписа­ ны под нее.

Параллельно развивалась операционная система UNIX и СУБД под управлением этой ОС: Informix, Oracle, Progres, SyBase, Ingres

и другие. В основе этих СУБД лежит объектно-ориентированный язык управления данными - 4GL, 5GL.

7 Информационные системы — прикладные программы, связанные

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

Современные реляционные СУБД: Access (фирмы Microsoft), Approach (фирмы Lotus), Paradox (фирмы Borland) поддерживают технологию OLE и язык управления данными SQL.

В центр современных информационных технологий постепен­ но перемещаются более мощные реляционные СУБД с SQL-дос­ тупом под управлением операционных систем Windows и UNIX: Oracle, Centura, SyBase, Informix и других. В их основе лежит тех­ нология «клиент-сервер».

2. Классификация СУБД

СУБД можно классифицировать по используемой модели данных:

реляционные {dBase, FoxPro, Access, Paradox, Clipper, Informix,

идр.);

иерархические {PC Focus, Teap Up, Data Edge, и др.); сетевые {db Vista III, ADABAS, Oracle, и др.);

объектно-ориентированные {Oracle, Progres 5, и др.), объеди­ няющие в себе две модели данных (реляционную и сетевую) и ис­ пользуемые для создания крупных БД со сложными структурами.

По характеру использования СУБД делятся на персональные

и многопользовательские.

Персональные {Access, dBase, FoxPro, Paradox, Clipper, и др.) для создания персональных БД и недорогих приложений. Поддерж­ ка функционирования в сети обеспечивается средствами ОС управ­ ления доступом к совместно используемым ресурсам {OLE, DDE).

Многопользовательские {Oracle, Informix, и др.) включают в себя серверную и клиентскую часть; могут работать в неоднородной вычислительной среде, допускают различные типы ЭВМ и ОС. На их базе можно создавать информационные системы, работающие по тех­ нологии «клиент-сервер».

В наиболее полном варианте СУБД должна содержать следую­ щие компоненты:

среду пользователя, котбрЗзг'дает возможность управлять данными с клавиатуры;

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

компилятор для придания завершенной программе вида го­ тового коммерческого продукта, в форме исполняемого.ехе-файла;

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

Не все СУБД имеют все названные компоненты.

§3. ОСНОВЫ АВТОМАТИЗИРОВАННОЙ

ОБРАБОТКИ ИНФОРМАЦИИ

Основная функция СУБД в системах автоматизированного проектирования - ведение информационного фонда8 САПР, заклю­ чающееся в решении следующих задач:

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

прием и обработка запросов от проектировщиков, подсистем

ипрограмм САПР, и выдача результатов поиска в требуемой форме (буквенно-цифровой, графической);

проверка корректности вводимой и гарантия правильности хранимой и выдаваемой информации;

быстрая корректировка информации и доведение ее до поль­ зователя.

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

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

Для просмотра, ввода или изменения данных можно использовать созданные таблицы, в которых на экране отображается сразу несколь­

Q

Информационный фонд САПР - совокупность данных, используемых

всеми компонентами САПР.

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

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

Обычно при решении конкретных задач или для справки требу­ ются не все записи, а только часть из них, удовлетворяющая какому-то условию поиска. Для поиска и отбора данных, удовлетворяющих опре­ деленным условиям поиска, используются фильтры или создаются запросы. Фильтр - это нечто, отсеивающее определенные элементы - одно или несколько условий, которым должна удовлетворять запись, чтобы быть выведенной на экран. Запрос- это вопрос, с которым пользователь обращается к БД. В результате выполнения запроса вы­ дается набор данных - выборка, удовлетворяющая поставленным ус­ ловиям. При сохранении запроса сохраняется вопрос, а не ответ.

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

1. Логические выражения и логические операции

Наличие строгой математической основы для построения реля­ ционной модели позволяет использовать языки манипулирования данными на основе реляционной алгебры и исчисления предикатов9

9 Предикат - логическая функция одного или нескольких аргументов,

принимающая значения 0 или 1 («ложь» или «истина»), а значения аргументов могут принадлежать различным множествам объектов.

Вкомандах СУБД условие поиска записывается в форме логи­ ческого выражения. Логическое выражение, подобно математиче­ скому выражению, выполняется (вычисляется), но в результате полу­ чается не число, а логическое значение: истина (true) или ложь (false).

Влогических выражениях имена полей БД могут связываться

ссоответствующими значениями знаками отношений:

= равно,

< меньше,

о не равно,

>= больше или равно,

> больше,

<= меньше или равно,

или знаками логических операции:

AND

операция логического умножения (конъюнкция), знак

 

операции «и» или «&»

OR

операция логического сложения (дизъюнкция), знак

 

операции «или» или «V»

NOT

операция отрицания (инверсия), знак операции «не»

 

или «!»

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

Таблица 7.3 иллюстрирует все правила выполнения трех логи­ ческих операций и называется таблицей истинности. В ней буква­ ми А и В обозначены логические операнды.

 

 

 

 

Таблица 7.3

 

 

Таблица истинности

 

 

А

В

А & В

AVB

истина

истина

истина

истина

ложь

ложь

ложь

ложь

ложь

истина

истина

ложь

ложь

истина

ложь

ложь

истина

ложь

истина

истина

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

1)отрицание (не), 2) конъюнкция (и), 3) дизъюнкция (или).

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

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

А&В = ложь

A&BVC = истина

AVB = истина

AVB&C = истина

!AVB = ложь

! AVB&C = ложь

(AVB) & (CVB) = истина

!(AVB) & (CVB) = ложь

!(А&В&С) = истина

2.Сортировка информации, языки запросов, условия поиска (отбора записей) в БД

Хранимые в базе данные можно просматривать, редактировать и выбирать с помощью имеющихся в каждой СУБД средств про­ смотра и редактирования.

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

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

Для повышения эффективности обработки данных создаются и выполняются запросы.

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

Для подготовки запросов с помощью различных СУБД, как правило, используются два основных языка описания запросов:

-структурированный язык запросов SQL (Structured Query Language).

-язык запросов по образцу QBE (Query By Example);

По возможностям манипулирования данными эти языки прак­ тически эквивалентны. Отличие их - в способе формирования за­ просов.

Структурированный язык запросов SQL основан на реляцион­ ном исчислении и предназначен для выполнения операций над таб­ лицами (создание, удаление, изменение структуры) и над данными таблиц (выборка, изменение, добавление и удаление), а также неко­ торых сопутствующих операций. Обычно SQL автономно не исполь­ зуется, а погружен в среду встроенного языка программирования СУБД. С помощью SQL можно создать любой произвольный запрос, однако в реальности пользуются этим языком только специалисты. А для пользователей разработчики придумали упрощенный меха­ низм создания запросов, называемый QBE - запрос по образцу.

Язык запросов по образцу QBE позволяет задавать сложные запросы к БД путем заполнения предлагаемой СУБД запросной формы. Это обеспечивает высокую наглядность и не требует указа­ ния алгоритма выполнения операции - достаточно описать образец ожидаемого результата. В каждой современной СУБД имеется свой вариант языка QBE. С помощью языка QBE можно задавать запро­ сы, выбирающие или обрабатывающие данные из нескольких свя­ занных таблиц. При задании запросов допустимы следующие опе­ рации: выборка, вычисление и модификация данных-, вставка и уда­ ление записей. Все эти операции выполняются с использованием

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

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

Вы ражения >100 AND <500

<50 OR>100

NOT<100

<1/1/06

Цена Between 100 And 50 или

Цена >=50 AND <=100

In (50, 100,200)

Like

Like (ко??)

Like (ко*)

Like ( * K O * )

Пояснения Величина в этом поле должна быть больше 100,

но меньше 500.

Значение в поле должно быть или меньше 50, или больше 100.

Величина в поле должна быть больше или равна 100.

Записи со значениями даты ранее 1 января 2006 г. (предполагается, что это поле типа Дата). Выражение проверяет, попадет ли значение аргу­ мента Цена в диапазон от 50 до 100, и, если это так, возвращает значение Истина, а если н ет -

Ложь.

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

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

Выражение находит все записи в указанном поле со словами из четырех букв, начинающиеся на буквы «ко»; Выражение находит все записи в данном поле со

словами, начинающимися на буквы «ко» (любое количество букв); Выражение находит все записи в данном поле, в которых есть буквы «ко».

Если слово для поиска написано с большой буквы, то будет осуществляться поиск именно таких слов, а если с маленькой - то поиск будет осуществляться по словам, начинающимся как с большой, так и с маленькой буквы.