2.1 Построение таблиц
Назначение типов данных для полей таблиц
Создание индексов и связей между таблицами
3.1 Логическое проектированиеКогда говорят о логическом проектировании, употребляют такие термины, как сущность, связь и атрибут.
Сущность – это множество однотипных объектов, называемых экземплярами, при этом каждый экземпляр индивидуален и отличается от всех остальных экземпляров.
Атрибут – это характеристика сущности. Атрибут выражает одно законченное и определённое свойство сущности. При проектировании рекомендуется создавать атомарные атрибуты.
Связь – это логическое отношение между сущностями, выражающее некоторое ограничение или бизнес-правило.
При создании связей между сущностями в дочернюю сущность передаются атрибуты, составляющие первичный ключ в родительской сущности. Эти атрибуты образуют в дочерней сущности внешний ключ.
На первом этапе проектирования необходимо определить цель создания АРМ, основные функции и информацию, которую АРМ должен содержать, то есть нужно определить основные темы таблиц базы данных и содержащуюся в них информацию.
База данных должна отвечать требованиям тех, кто будет непосредственно с ней работать. Для этого нужно определить темы, которые должны покрываться данным АРМ, требуемые отчёты, проанализировать формы в которых в настоящий момент используются для хранения и записи данных.
3.1.2 Определение таблиц и необходимых полей.Одним из наиболее сложных этапов проектирования, является разработка таблиц базы данных для хранения информации, так как результаты которые должна выдавать система не всегда дают полное представление о структуре таблиц.
При разработке, лучше руководствоваться следующими основными принципами:
Информация в таблицах не должна дублироваться. Когда определённая информация хранится только в одном месте, то нет необходимости в синхронизации этих данных, и обеспечит эффективность, и исключит возможность не совпадения.
Каждая таблица должна содержать информацию только на одну тему, в этом случае данные намного легче обрабатывать, если они содержаться в разных таблицах.
Проведём рассмотрение этих данных. Для ведения библиотечных каталогов. Организации поиска требуемых изданий и библиотечной статистики в базе данных должны хранится сведения, большая часть которых размещается в аннотированных каталожных карточках (рис. 3.1 ). Анализ запросов на литературу, как читателей, так и обслуживающего персонала библиотеки, показывает, что для поиска подходящих изданий (по тематике, автору, изданию и т.п.) и отбора нужного, следует выделять следующие атрибуты каталожной карточки:
Д27 | Дейт К. Руководство по реляционной СУБД DB2 / пер. с англ. И предисловие М.Р.Когаловского. –М.: Финансы и статистика, 1988. – 320 с.: ил. |
ISBN 5-279-00063-9 | |
Книга американского специалиста в области реляционных баз данных К.Дейта, автора популярной в СССР монографии «Введение в системы баз данных», представляет собой руководство по СУБД фирмы IBM DB2. Для специалистов по программному обеспечению информационных систем и студентов вузов. | |
ББК 32.973 |
Рис. 3.1 Аннотированная каталожная карточка
Автор (фамилия и имена (инициалы) или псевдонимы каждого автора издания);
Название (заглавие) книги;
Номер тома (части, книги, выпуска);
Вид издания (сборник, монография, справочник,…);
Составитель (фамилия и имена (инициалы) каждого из составителей издания);
Под чей редакцией (фамилия и имена (инициалы) каждого из составителей издания);
Повторность издания;
Издательство;
Место издания (город);
Год выпуска;
Издательская аннотация или реферат;
Библиотечный шифр;
Авторский знак.
Библиотечный шифр и авторский знак используются при составлении каталогов и организации расстановки изданий на полках: по содержанию ( в соответствии с библиотечным шифром) и по алфавиту ( в соответствии с авторским знаком).
Библиотечно-библиографическая классификация (ББК) распределяет издания по отраслям знания в соответствии с их содержанием. В ней используется цифро-буквенные индексы ступенчатой структуры.
К
Техника.Технические науки.
32 Радиоэлектроника.
32.97 Вычислительная техника.
32.973 Электронные вычислительные машины и устройства.
32.973.2 Электронно-вычислительные машины и устройства дискретного действия.
Шифр ББК используется при выделение хранимым изданиям определённых комнат, стеллажей и полок, а также для ведения и составления каталогов и статистических отчётов.
Авторский знак, состоящий из первой буква фамилии (псевдонима) автора или названия издания (для изданий без автора) и числа, соответствующего слогу, наиболее приближающегося по написанию к первым буквам фамилии (названия), упрощает расстановку книг на полках в алфавитном порядке.
К объектам и атрибутам, позволяющим охарактеризовать отдельные экземпляры изданий (переплёты), места их хранения и читателей, можно отнести:
Номер (инвентарный номер) переплёта;
Дата приобретения (поступления) конкретного переплёта;
Номер читательского билета;
Фамилия читателя;
Имя читателя;
Отчество читателя;
Адрес читателя;
Телефон читателя;
Дата выдачи читателю конкретного переплёта;
Дата возврата переплёта.
Анализ приведённых выше объектов и атрибутов позволяет выделить сущности проектируемой базы данных, приняв решение о создании реляционной базы данных, можно построить её модель.
Каждая таблица проектируемой базы данных должна содержать информацию на отдельную тему, а каждое поле таблицы – содержать сведения по теме таблицы. При разработке надо учитывать:
Каждое поле должно быть связано с темой таблицы;
Не рекомендуется включать в таблицу данные, которые являются результатом выражения;
В таблице должна присутствовать вся необходимая информация;
Информацию следует разбивать на наименьшие логические единицы.
Выделяем следующие таблицы и атрибуты:
Создатели (Код_создателя, Создатель) – здесь хранятся сведения об людях, принимавших участие в подготовке издания (авторах, составителях, редакторах). Такое объединение допустимо, так как данные о создателях выбираются из одного домена (фамилии и имена) и исключают дублирование данных. Так как фамилия и инициалы создателя могут быть достаточно большими и будут многократно встречается в разных изданиях, то их необходимо нумеровать и ссылаться на эти номера. Для этого вводим целочисленный атрибут Код_создателя, который будет автоматически наращиваться на единицу при добавлении нового создателя.
Издательства (Код_издательства, Название, Город) – здесь находятся данные о названии издательства и городе, где расположено издательство. Так же вводим целочисленный атрибут Код_издания, который будет автоматически наращиваться на единицу при добавлении нового издания.
Виды издания (Вид_издания, Название_вида) – здесь хранятся данные о названии вида издания. Так же вводим целочисленный атрибут Вид_издания, который будет автоматически наращиваться на единицу при добавлении нового названия вида издания.
Раздел (Название_раздела, Библиотечный_код, Код_раздела, Код_родителя) – здесь хранятся данные о названии разделов, их коды по библиотечно-библиографическому классификатору и их взаимосвязи (ерархия). Так же вводим целочисленный атрибут Код_раздела, который будет автоматически наращиваться на единицу при добавлении нового раздела.
Издание (Код_издания, Код_раздела, Заглавие, Вид_издания, Авторский_знак, Код_издательства, Год_издания, Аннотация) – здесь хранится общая информация об экземпляре и его принадлежности к разделу. Так же вводим целочисленный атрибут Код_издания, который будет автоматически наращиваться на единицу при добавлении нового издания.
Переплёты (Номер_переплёта, Код_издания, Дата_приобретения) – здесь хранится информация о конкретном экземпляре (переплёте), такая как инвентарный номер, дата проибретения.
Группа (Код_группы, Название_группы, Код_родителя) – здесь хранятся данные о названии групп читателей, и их взаимосвязи (ерархия). Так же вводим целочисленный атрибут Код_группы, который будет автоматически наращиваться на единицу при добавлении нового группы.
Читатели (Номер_читателя, Код_группы, Код_фамилии, Код_имени, Код_отчества, Код_города, Код_улицы, Дом_Квартира, Номер_телефона, Дата_рождения, Дата_регистрации, Комментарий) – здесь хранится информация о читателе и его принадлежности к группе. Так же вводим целочисленный атрибут Номер_читателя, который будет автоматически наращиваться на единицу при добавлении нового читателя и будет являться номером читательского билета.
Авторы (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
Составители (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
Редакторы (Код_создателя, Код_издания) – эта таблица является ассоциацией между таблицами Создатели и Издание.
Выдача (Номер_переплёта, Номер_читателя, Дата_выдачи, Дата_сдачи) - эта таблица хранит ассоциации между таблицами Переплёт и Читатель.
Фамилии (Код_фамилии, Фамилия) – здесь хранятся данные о фамилиях читателей. Так же вводим целочисленный атрибут Код_фамилии, который будет автоматически наращиваться на единицу при добавлении новой фамилии.
Имена (Код_имени, Имя) – здесь хранятся данные об именах читателей. Так же вводим целочисленный атрибут Код_имени, который будет автоматически наращиваться на единицу при добавлении нового имени.
Отчества (Код_отчества, Отчество) – здесь хранятся данные об отчествах читателей. Так же вводим целочисленный атрибут Код_отчества, который будет автоматически наращиваться на единицу при добавлении нового отчества.
Города (Код_города, Город) – здесь хранятся данные о названии городов, где проживают читатели. Так же вводим целочисленный атрибут Код_города, который будет автоматически наращиваться на единицу при добавлении нового города.
Улицы (Код_улицы, Улица) - здесь хранятся данные о названия улиц, где проживают читатели. Так же вводим целочисленный атрибут Код_улицы, который будет автоматически наращиваться на единицу при добавлении новой улицы.
Выделение этих таблиц позволяет избежать возникновения противоречий, снижает объём хранимых данных и позволяет исключить повторный ввод названий.
3.1.3 Определение связей между таблицами.После распределения данных по таблицам и определения полей, необходимо выбрать схему для связи данных в разных таблицах. Для этого нужно определить ключевые поля и связи между таблицами.
Описанные выше приемы проектирования помогают эффективно связывать данные. При создании таблиц, в каждую новую таблицу включается поле, связывающее новую и старую таблицы. Эти связующие поля называются внешними ключами. В хорошо спроектированной базе данных использование внешних ключей обеспечивает эффективность использования приложения. В процессе проектирования нужно внимательно следить за созданием внешних ключей. Заключительный этап логического проектирования базы данных заключается в определении связей между таблицами. Задаваемые при создании таблиц связи первичных ключей с внешними ключами используются для объединения данных из нескольких таблиц.
В большинстве случаев, как уже описывалось выше, таблицы связываются между собой отношением «один ко многим», гораздо реже «один к одному» и «многие ко многим». Если в базе данных существует связь между таблицами типа «многие ко многим», то необходимо создать таблицу пересечения, с помощью которой одна связь «многие ко многим» будет сведена к двум связям типа «многие к одному». В настоящей базе данных все таблицы будут связываться между собой отношением типа «многие к одному». Непосредственно для работы данного приложения необходимо связать данные из таблиц с данными о заголовках разделов и изданиями. Связь между этими таблицами будет типа «один ко многим», так как в одном разделе может содержаться множество изданий, но любое издание содержится только в одном разделе. Для связи таблицы Раздел с таблицей Издание необходимо, чтобы первичный ключ этой таблицы – Код_раздела - присутствовал в связанной с ней таблице. В таблице Издание первичным ключом является Код_издания через который производится связь с таблицами Авторы, Составители, Редакторы и Переплёты, в соотношении «один ко многим», так как у одного издания может быть несколько авторов, составителей и редакторов, а так же в библиотеке может храниться несколько экземпляров данного издания. В свою очередь у таблицы Создатели тоже есть первичный ключ Код_создателя через который определяем связь с таблицами Авторы, Составители и Редакторы, в отношении «один ко многим». Таблица Вид_издания связана с таблицей Издание по первичному ключу Вид_издания в соотношении «один ко многим, так же таблица Издательства связана с таблицей Издание по первичному ключу Код_издательства в отношении «один ко многим». Таблица Переплёты имеет первичный ключ Номер_переплёта по которому связана с таблицей Выдача в отношении «один ко многим».
Аналогично таблица Группа будет связываться с таблицей Читатель отношением типа «один ко многим» через первичный ключ Код_группы, потому как в любой группе может содержаться множество читателей, но каждый читатель содержится в одной группе. Таблица Города, имеющая первичный ключ Код_города связана с таблицей Читатель в отношении «один ко многим», аналогично связаны таблицы Улицы, Фамилии, Имена и Отчества, у которых первичными ключами являются Код_улицы, Код_Фамилии, Код_имени и Код_отчества соответственно. Так же таблица Читатель, имеющая первичный ключ Номер_читателя, связана с таблицей Выдача в отношении «один ко многим».
3.2 Разработка таблиц. 3.2.1 Построение таблиц.После разработки проекта приложения можно приступать к непосредственному его созданию.
В Microsoft VFP существует три способа создания таблицы:
Использование мастера баз данных для создания всех таблиц входящих в базу данных, содержащей все требуемые представления, индексы, хранимые процедуры и связи за одну операцию. Мастер баз данных создает новую базу данных, его нельзя использовать для добавления новых таблиц, индексов, представлений, связей и хранимых процедур в уже существующую базу данных.
Использование мастера таблиц позволяет выбрать поля для данной таблицы из множества определенных ранее таблиц, таких как деловые контакты, список личного имущества или указать произвольную таблицу. Добавить в существующую базу данных, назначить типы полей, индексы и связи.
Определение всех параметров таблицы в режиме конструктора.
Независимо от метода, примененного для создания таблицы, всегда имеется возможность использовать режим конструктора для дальнейшего изменения макета таблицы, например, для добавления новых полей, определения типов, индексов и связей.
В дальнейшем, используя, конструктор базы данных создаём проекты таблиц, указываем типы данных и свойства полей, определяем индексы и устанавливаем связи между таблицами, назначаем методы контроля целостности.
Рис.3.2 Окно конструктора таблиц
В верхней части дизайнера таблиц расположены столбцы, в которых вводится название поля, тип данных, размер поля, наличие простого индекса, направление индексации (по возрастанию, по убыванию), возможность использования значения .NULL., в нижней части окна вводятся формат поля, формат маски ввода, заголовок поля, процедуры для проверки вводимых значений, сообщения, значение по умолчанию и комментарий для поля.
Для оптимизации работы с таблицами существует несколько возможностей:
Проектировать таблицы, в которых не содержится избыточных данных.
Выбирать наиболее подходящий тип данных для поля – это приведёт к уменьшению размера таблицы и увеличит скорость выполнения операций. При описании таблицы следует задавать для него тип данных наименьшего размера, позволяющий хранить нужные данные.
Microsoft Visual FoxPro поддерживает тринадцать типов данных:
Тип данных | Использование | Размер |
Character | Алфавитно-цифровые данные | До 254 байт |
Currency | Денежные суммы | 8 байт |
Numeric/ Float | Числовые данные | До 20 байт |
Date | Дата | 8 байт |
Data/Time | Дата-время | 8 байт |
Double | Числа двойной точности с плавающей точкой (18 разрядов) | 8 байт |
Integer | Целые числа | 4 байта |
Logical | Логические данные (.T./.F.) | 1 байт |
Memo | Алфавитно-числовые данные | Ограничено свободным местом на диске |
General | Графические изображения, диаграммы, OLE объекты | Ограничено свободным местом на диске |
Character (binary) | Алфавитно-цифровые данные с символами ASCII от 0 до 255 | Ограничено свободным местом на диске |
Memo (binary) | Алфавитно-цифровые данные с символами ASCII от 0 до 255 | Ограничено свободным местом на диске |
Исходя из выше описанной модели, определим типы полей для таблиц.
Для таблицы Создатели:
Код_создателя – тип данных Integer;
Создатель – тип данных Character, размер порядка 50 символов.
Для таблицы Издательства:
Код_издательства – тип данных Integer;
Название – тип Character, размером 30 символов;
Город – тип Character, размером 20 символов.
Для таблицы Виды издания:
Вид_издания – тип данных Integer;
Название_вида – тип Character, размером 30 символов.
Для таблицы Раздел:
Название_раздела – тип Character, размером 100 символов;
Библиотечный_код – тип Character, размером 20 символов;
Код_раздела – тип данных Integer;
Код_родителя – тип данных Integer.
Для таблицы Издание:
Код_издания – тип данных Integer;
Код_раздела – тип данных Integer;
Заглавие – тип Character, размером 30 символов;
Вид_издания – тип данных Integer;
Код_издательства – тип данных Integer;
Авторский_знак – тип Character, размером 10 символов;
Год_издания – тип Numeric, размером 4 символов;
Аннотация – тип Memo.
Для таблицы Переплёты:
Номер_переплёта – тип данных Integer;
Код_издания – тип данных Integer;
Дата_приобретения – тип Date.
Для Таблицы Группа:
Код_группы – тип данных Integer;
Название_группы – тип Character, размером 30 символов;
Код_родителя – тип данных Integer.
Для таблицы Читатели:
Номер_читателя – тип данных Integer;
Код_группы – тип данных Integer;
Код_фамилии – тип данных Integer;
Код_имени – тип данных Integer;
Код_отчества – тип данных Integer;
Код_города – тип данных Integer;
Код_улицы – тип данных Integer;
Дом_Квартира – тип Character, размером 20 символов;
Номер_телефона – тип Character, размером 15 символов;
Дата_рождения – тип Date;
Дата_регистрации – тип Date;
Комментарий – тип Memo.
Для таблицы Авторы:
Код_создателя – тип данных Integer.
Код_издания – тип данных Integer.
Для таблицы Составители:
Код_создателя – тип данных Integer.
Код_издания – тип данных Integer.
Для таблицы Редакторы:
Код_создателя – тип данных Integer.
Код_издания – тип данных Integer.
Для таблицы Выдача:
Номер_переплёта – тип данных Integer.
Номер_читателя – тип данных Integer.
Дата_выдачи – тип Date;
Дата_сдачи – тип Date.
Для таблицы Фамилии:
Код_фамилии – тип данных Integer.
Фамилия – тип Character, размером 30 символов.
Для таблицы Имена:
Код_имени – тип данных Integer.
Имя – тип Character, размером 30 символов.
Для таблицы Отчества:
Код_отчества – тип данных Integer.
Отчество – тип Character, размером 30 символов.
Для таблицы Города:
Код_города – тип данных Integer.
Город – тип Character, размером 30 символов.
Для Таблицы Улицы:
Код_улицы – тип данных Integer.
Улица – тип Character, размером 30 символов.
На основе выше изложенного создадим следующую структуру таблиц для использования при разработке АРМ.
Раздел (Issue.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | Id | Integer | 4 | Уникальный номер раздела |
2 | Bbk | Character | 20 | Номер по ББК |
3 | Name | Character | 100 | Название раздела |
4 | Parent | Integer | 4 | Номер вышестоящего раздела |
Издания (Books.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | IssId | Integer | 4 | Номер раздела (Issue.Id) |
2 | BookId | Integer | 4 | Уникальный номер книги |
3 | Name | Character | 30 | Название книги |
4 | BookType | Integer | 4 | Код вида издания |
5 | PublId | Integer | 4 | Номер издательства (Publisher.PublId) |
6 | PublYear | Numeric | 4 | Год издания |
7 | AutorId | Character | 10 | Авторский знак |
6 | Date | Date | 8 | Дата поступления |
7 | Comment | Memo | 4 | Аннотация |
Создатели (Creators.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | NameId | Integer | 4 | Уникальный номер значения |
2 | Name | Character | 50 | Значение |
Виды изданий (TypePubl.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | NameId | Integer | 4 | Уникальный номер значения |
2 | Name | Character | 30 | Значение |
Авторы (Autor.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | UniqId | Integer | 4 | Уникальный номер записи |
2 | BookId | Integer | 4 | Номер книги (Books.BookId) |
3 | AutorId | Integer | 4 | Номер автора |
Составители (Compilers.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | CreatorId | Integer | 4 | Код создателя |
2 | BookId | Integer | 4 | Код издания |
3 | UniqId | Integer | 4 | Уникальный ключ |
Редакторы (Editors.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | CreatorId | Integer | 4 | Код создателя |
2 | BookId | Integer | 4 | Код издания |
3 | UniqId | Integer | 4 | Уникальный ключ |
Издательства (Publisher.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | PublId | Integer | 4 | Уникальный номер издательства |
2 | PublName | Character | 30 | Название издательства |
3 | PublCity | Character | 20 | Город издательства |
Переплёты (BookNum.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | BookId | Integer | 4 | Номер книги (Books.BookId) |
2 | Number | Integer | 4 | Инвентарный номер книги |
3 | Date | Date | 8 | Дата поступления экземпляра |
Группы (Groups.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | Id | Integer | 4 | Уникальный номер группы |
2 | Name | Character | 30 | Название группы |
3 | Parent | Integer | 4 | Номер вышестоящего раздела |
Читатели (Abonents.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | GrId | Integer | 4 | Номер группы (Groups.Id) |
2 | AbonId | Integer | 4 | Уникальный номер абонента |
3 | Name1 | Integer | 4 | Номер фамилии из словаря |
4 | Name2 | Integer | 4 | Номер имени из словаря |
5 | Name3 | Integer | 4 | Номер отчества из словаря |
6 | CityId | Integer | 4 | Номер города из словаря |
7 | StreetId | Integer | 4 | Номер улицы из словаря |
8 | House_ Fl | Character | 20 | Номер дома и номер квартиры |
9 | Telefon | Character | 15 | Номер телефона |
10 | Date1 | Date | 8 | Дата рождения |
11 | Date2 | Date | 8 | Дата регистрации |
12 | Comment | Memo | 4 | Комментарии к карточке абонента |
Выдача (BookUse.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | UniqId | Integer | 4 | Уникальный номер записи |
2 | AbonId | Integer | 4 | Номер абонента (Abonents.AbonId) |
3 | Number | Integer | 4 | Инвентарный номер книги (BookNum.Number) |
4 | Date1 | Date | 8 | Дата выдачи книги |
5 | Date2 | Date | 8 | Дата сдачи книги |
Фамилии (Name1.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | NameId | Integer | 4 | Уникальный номер значения |
2 | Name | Character | 30 | Значение |
Имена (Name2.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | NameId | Integer | 4 | Уникальный номер значения |
2 | Name | Character | 30 | Значение |
Отчества (Name3.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | NameId | Integer | 4 | Уникальный номер значения |
2 | Name | Character | 30 | Значение |
Города (City.dbf) | ||||
№ | Название | Тип | Значение | |
размер | ||||
1 | CityId | Integer | 4 | Уникальный номер значения |
2 | City | Character | 30 | Значение |
Улицы (Streets.dbf) | ||||
№ | Название | Тип | Значение | |
Размер | ||||
1 | StreetId | Integer | 4 | Уникальный номер значения |
2 | Street | Character | 30 | Значение |
Чем больше хранится данных в таблицах, тем больше индексов необходимо для эффективного поиска данных. Индекс – это внутренняя таблица, состоящая из двух столбцов: значение выражения, в котором содержатся все поля, включенные в индекс, и местоположение каждой записи таблицы с данным значением индексного выражения. Для создания индексов по ключевым полям, необходимо установить тип индекса Primary. Для внешних ключей используется тип Regular.
Определив необходимые таблицы и индексы, создадим связи таблиц.
Как уже было описано выше, все таблицы в базе данных будут связаны между собой отношением «один ко многим». Для установления связи между таблицами следует соединить первичный ключ таблицы, находящийся на стороне отношения «один» с соответствующим ему внешним ключом таблицы на стороне отношения «многие».
После установки связи, можно определить критерии обеспечения целостности, для любого действия в главной таблице которое изменяет ключевое значение, таких как, добавление, удаление и изменения.
Для изменения и удаления записей возможно введения одного из следующих правил:
Cascade – замена или удаление всех записей в подчинённой таблице, удовлетворяющих старому ключевому значению главной таблице.
Restrict – проверяет наличие в подчинённой таблице значений удовлетворяющих текущему значению главного ключа, и при их наличии запрещает изменения или удаление.
Ignore – игнорирует ссылочную целостность и позволяет изменять или удалять значения главного ключа.
Для добавления записей можно определить только два правила проверки:
Restrict – запрещает добавление, если в главной таблице отсутствует запись с подходящим ключевым значением.
Ignore – не выполняет никаких проверок.
Связи таблиц показаны на рисунке 3.3.
Рис.3.3 Схема связей таблиц
Глава 4. Разработка и реализация алгоритма 4.1 Разработка алгоритма.Назначение любой базы (в том числе и БРЭА) заключается в получении пользователем базы необходимой ему информации. Кроме того, пользователю должны быть предоставлены возможности пополнения базы данных вновь возникшей информацией и её коррекции в случае изменения тех или иных компонент, хранящихся в базе данных.
Указанные моменты определяют технологический цикл кругооборота информации между пользователем и базой данных, а также основные направления прохождения информации внутри самой базы, иными словами, - взаимодействие отдельных компонент, составляющих в целом базу данных.
Сказанное может быть проиллюстрировано схемой информационных потоков БД, представленной на рис.4.1. От пользователя поступает некоторое множество заданий на выполнение тех или иных информационных действий. Входные формы воспринимают эти задания и инициализируют соответствующие запросы, которые в свою очередь осуществляют поиск необходимой информации в таблицах, где находятся данные, позволяющие выполнить заданные действия. Выбранная информация с помощью исполнительных частей запросов пересылается в выходные формы и представляется пользователю для её оценки и принятия решения.
Обобщённо алгоритм, реализующий данную технологическую схему обработки информации, представляет собой следующую совокупность действий:
1. Выбор соответствующей выходной формы (Формаi, i=l, ).
2. Заполнение полей формы (Формаi, i=l, ).
3. Отображение информации на видеоконтрольном устройстве.
4. Если необходима твёрдая копия полученных данных, то Ввод исходных данных.
5. Анализ исходных данных (Формаi, i=l, N).
6. Если исходные данные корректны, то переход на пункт 4, в противном случае - выдача диагностического сообщения и переход на пункт 1.
7. Передача данных соответствующему запросу (Запросij, i=l, N; j=l, ).
Рис. 4.1 Схема информационных потоков АРМ
8. Анализ параметров и условий выборки информации.
9. Формирование списка таблиц для поиска информации (Таблицаi,...,Таблицаk, i, k).
10. Поиск информации по выбранному списку таблиц в соответствии со значениями параметров и условиями выборки.
11. Если информация, удовлетворяющая заданным параметрам и условиям выборки, отсутствует, то выдаётся соответствующее диагностическое сообщение и переход на пункт 1. При нахождении необходимой информации, она передаётся исполнительным частям запросов (Запросij, i=l ,N; j=l , ) и переход на пункт 9.
12. производится её печать, в противном случае переход на пункт 13.
13. Выяснение необходимости завершить работу с базой данных. Если «Да», то переход на пункт 14, если «Нет», то переход на пункт 1.
14. Конец работы.
Здесь и далее обозначения имеют следующий смысл:
• N - мощность (количество) множества входных форм;
• К,, - мощности множеств запросов, соответствующих входным формам (Формаi, i=l, N);
• -мощность множества таблиц;
• - мощность множества выходных форм.
Данный алгоритм может быть выражен блок-схемой, представленной на рис.4.2. Такое представление даёт возможность более наглядного понимания процесса прохождения информации.
АРМ функционирует в следующих режимах:
Ввод данных в базу данных АРМ;
Просмотр информации из базы данных АРМ;
Коррекция информации в базе данных АРМ;
Формирование выходных документов.
Выбор режимов работы осуществляется пользователем после инициализации программных модулей. Следовательно структурная схема будет иметь вид показанный на рис.
Рис. 4.2 Блок-схема алгоритма, реализующего технологическую схему обработки информации
Рис. 4.3 Структурно-функциональная схема АРМ
В
качестве примера
рассмотрим
блок-схему
алгоритма
функционирования
управляющего
модуля. Блок-схема
приведена на
рис.
Рис. 4.4 Блок-схема функционирования алгоритма управляющего модуля
4.2 Реализация алгоритма.Функционально АРМ состоит из следующих модулей:
Модуль идентификации и аутентификации, предназначенный для определения пользователя и его прав доступа;
Модуль картотеки фондов, предназначен для ввода/просмотра, получения различных отчётов по картотеке фондов;
Модуль картотеки читателей, предназначенный для ввода/просмотра, получения различных отчётов по читателям;
Модуль контроля, обеспечивающий контроль достоверности и целостности базы данных;
Модуль администратора, предназначенный для корректировки системной информации, путей доступа к базе данных, назначения прав доступа для пользователей.
Доступ к функциональным модулям обеспечивается через развитую систему меню.
Вид системы меню представлен на рис.4.5
Рис. 4.5 Вид системного меню
4.2.2 Модуль идентификации и аутентификации.При доступе в программу необходимо производить идентификацию пользователя и его прав для доступа к функциям программы это диктуется тем, что доступ к программе будут иметь не только обслуживающий персонал библиотеки, но и читатели. Форма демонстрирующая этот процесс показана на рис. 4.6.
Рис. 4.6 Форма ввода модуля идентификации и аутентификации
П
осле
ввода логина
и пароля пользователя
производится
проверка прав
доступа, в случае
наличия прав
только на чтение
выводится
сообщение
показанное
на рис. 4.7, в случае
отсутствия
прав доступа
к программе
выводится
сообщение
показанное
на рис. 4.8.
Рис. 4.7 Рис. 4.8
При наличие прав доступа только на чтение некоторые функции будут не доступны.
Создание новых пользователей и назначение прав производится в модуле администратора.
4.2.3 Модуль картотеки фондов.На рисунке 4.9 показана структурная схема модуля для работы с картотекой фондов. Далее рассмотрим подробнее данную структурную схему.
Схема отображает связи функций и возможные переходы между функциями, отображает входные и выходные формы, позволяет оценить возможности данного модуля.
Рис. 4.9 Структурная схема модуля картотеки фондов
4.2.3.1 Главная формаРис. 4. 10 Главная форма модуля картотеки фондов
На рисунке 4.10 представлена главная форма для работы с картотекой фондов. Слева располагается дерево разделов, в котором отображаются названия разделов и их нумерация по ББК. Справа находится таблица, содержащая список литературы для выбранного раздела, в ней отображаются следующие данные:
Автор издания;
Название издания;
Издательство;
Год издания;
Город издателя;
Количество экземпляров;
Количество выданных экземпляров;
Дата поступления.
Вверху справа располагается меню (набор кнопок) для выбора функций, предусмотрены следующие функции:
Просмотр библиографической карточки;
Поиск по выбранным значениям раздела или карточки;
Сортировка разделов и карточек;
Наложение фильтра на выбранный раздел;
Просмотр новых поступлений;
Настройка отображаемых полей формы;
Добавление новых разделов и карточек изданий;
Редактирование добавленных ранее разделов и карточек;
Печать библиографической карточки.
Функции для добавления и изменения информации в картотеке доступны только для авторизированного персонала библиотеки.
В нижней части формы представлена строка статуса, в которой слева отображается общее количество разделов и общее количество карточек изданий, а справа количество подразделов в выбранном разделе, общее количество карточек в этих подразделах, количество карточек в текущем разделе, количество выбранных карточек изданий, а также здесь расположен индикатор, в котором при длительных операциях производится отображение хода процесса.
Для главной формы картотеки фондов рассмотрим получение списка литературы, для этого используются SQL запрос, который будет иметь вид:
SELECT Books.bookid AS BookId, ;
Books.name AS BookName, ;
Books.booktype AS BookType, ;
Typepubl.name AS TypeName, ;
Books.publyear AS PublYear, ;
Creators.name AS AutorName, ;
Publisher.publname AS PublName, ;
Publisher.publcity AS PublCity, ;
Count(‘BookNum.Num’) AS Count, ;
Count(‘BookUse.Num’) AS UseCount, ;
Books.comment AS Comment ;
FROM library!Books INNER JOIN library!Autor;
INNER JOIN library!Creators;
INNER JOIN library!BookNum;
INNER JOIN library!BookUse;
INNER JOIN library!Books;
INNER JOIN library!TypePubl ;
ON Typepubl.nameid = Books.booktype ;
ON Publisher.publid = Books.publid ;
ON Booknum.number = Bookuse.number ;
ON Books.bookid = Booknum.bookid ;
ON Creators.nameid = Autor.autorid ;
ON Books.bookid = Autor.bookid;
WHERE Books.issid = lnissid AND ;
EMPTY(BookUse.Date2);
GROUP BY Books.BookId ;
INTO CURSOR vwBooks
Пример 4.1 SQL-запрос получение списка литературы.
В качестве фильтрующего параметра для таблицы изданий Books используется уникальный код раздела из таблицы Issue, а из таблицы выдачи BookUse выбираются записи, для которых не заполнена дата возврата.
4.2.3.2 ПросмотрРис. 4.11 Просмотр карточки издания
На рисунке 4.11 представлена форма развёрнутого просмотра со следующей информацией:
Название раздела;
Номер раздела по ББК;
Автор, составитель и редактор (или их списки);
Название книги;
Название издательства;
Город издательства;
Вид издания;
Год издания;
Количество экземпляров;
Количество выданных экземпляров;
Краткая аннотация.
Данные для формы обеспечиваются на основе SQL-запроса который представлен в примере 4.1, а данные об авторах, составителях, редакторах получают отдельными запросами. Рассмотрим подробнее запрос для получения списка авторов, запрос будет иметь следующий вид:
SELECT Creators.name, ;
Autor.autorid;
FROM library!Creators INNER JOIN library!Autor ;
ON Creators.nameid = Autor.autorid;
WHERE Autor.bookid = lnbookid ;
INTO CURSOR vwAutor
Пример 4.2 SQL-запрос получение списка авторов
В качестве фильтрующего параметра используется уникальный код книги из таблицы Books.
Для данной формы предусмотрены дополнительные функции:
Просмотр выданных экземпляров;
Просмотр инвентарных номеров книг.
Данные функции доступны только для авторизированного персонала библиотеки.
На форме просмотра выданных экземпляров, которая показана на рисунке 4.12 доступна информация о:
группе;
фамилии;
имени;
дате выдачи;
количестве выданных экземпляров.
Рис. 4.12 Просмотр выданных экземпляров
Показываются только те экземпляры, которые в текущий момент являются выданными абоненту.
Предусмотрены следующие функциональные возможности:
перехода на карточку абонента;
группу абонентов;
просмотр инвентарных номеров выданных книг;
изменение порядка сортировки отображаемых данных.
Данные для формы получаем SQL-запросом следующего вида:
SELECT Groups.name AS GrpName, ;
Name1.name AS Fam, ;
Name2.name AS Name, ;
Name3.name AS Otch, ;
BookUse.date1 AS Date, ;
COUNT('BookUse.Num') AS Count, ;
Abonents.abonid AS AbonId, ;
BookNum.bookid AS BookId ;
FROM library!BookNum INNER JOIN library!BookUse ;
INNER JOIN library!Abonents ;
INNER JOIN library!Groups ;
INNER JOIN library!Name1 ;
INNER JOIN library!Name2 ;
INNER JOIN library!Name3 ;
ON Name1.nameid = Abonents.name3 ;
ON Name2.nameid = Abonents.name2 ;
ON Name3.nameid = Abonents.name1 ;
ON Groups.id = Abonents.grid ;
ON Abonents.abonid = Bookuse.abonid ;
ON Booknum.number = Bookuse.number ;
WHERE Booknum.bookid = lnBookId ;
AND EMPTY(Bookuse.date2) ;
GROUP BY Abonents.abonid ;
INTO CURSOR vwUseBook
Пример 4.3 SQL-запрос получение списка читателей
В качестве элементов фильтра используется уникальный код книги из таблицы Books и значение поля Date2 таблицы BookUse, которое должно быть не заполненным, так как определяет дату возврата книги в библиотеку.
На форме просмотра инвентарных номеров, которая представлена на рис. 4.13, доступна информация:
список инвентарных номеров;
дате поступления экземпляра книги.
Для получения данных используем SQL-запрос:
Рис. 4.13 Просмотр инвентарных номеров
SELECT Booknum.number AS InvNum, ;
Booknum.date AS Date ;
FROM library!BookNum;
WHERE Booknum.bookid = lnBookId ;
INTO CURSOR vwInvNum
Пример 4.4 SQL-запрос получение инвентарных номеров
В качестве элемента фильтра применяется уникальный код книги из таблицы Books. Для выбранных данных можно изменять порядок отображения, установив активный столбец в таблице.
4.2.3.3 ПоискНа рисунке 4.14 показана форма для ввода параметров поиска. Поиск по разделу осуществляется по следующим значениям:
Номеру раздела по ББК;
Названию раздела.
Рис. 4.14 Поиск по параметру
Поиск по карточкам фондов осуществляется по:
Автору;
Названию книги;
Году издания;
Количеству единиц хранения;
Количеству выданных экземпляров;
Дате добавления в картотеку.
Поиск может осуществляется по любой комбинации параметров. В форме просмотра результатов поиска, показанной на рисунке, первыми отображаются данные наиболее соответствующие введённым значениям, те которые удовлетворяют логическому условию И, затем все которые удовлетворяют логическому условию ИЛИ.
Рис. 4.15 Просмотр результатов поиска
В форме просмотра результатов поиска, показанной на рис. 4.15, отображается следующая информация:
Номер раздела по ББК;
Название раздела;
Автор издания;
Название издания;
Издательство;
Год издания;
Количество переплётов в наличии;
Дата добавления информации в картотеку.
Для формы просмотра результатов поиска предусмотрены следующие функции:
Переход на карточку издания;
Переход к разделу, к которому относится карточка издания;
Печать библиографической карточки издания;
Изменение порядка сортировки отображаемых данных.
Рис. 4.16 Выбор параметра сортировки
На рисунке 4.16 показана форма для задания порядка отображения записей в дереве разделов и списке литературы. Для задания порядка отображения в дереве разделов доступны следующие параметры:
Номер раздела по ББК;
Название раздела.
Для списка разделов:
Автор;
Составитель;
Редактор;
Название издания;
Издательство;
Год издания;
Количество единиц хранения;
Количество выданных экземпляров;
Дата добавления в каталог.
Так же форма предоставляет возможность просмотра текущих установок. После выбора параметра для сортировки, для списка литературы, он отображается в заголовке соответствующего столбца таблицы изменением шрифта надписи на курсив.
4.2.3.5 ФильтрРис. 4.17 Задание фильтра для раздела
На рисунке 4.17 показана форма для задания условий фильтрации в списке литературы выбранного раздела. Фильтр может задаваться по следующим параметрам:
Автору;
Составителю;
Редактору;
Названию издания;
Издательству;
Диапазону годов издания;
Диапазону единиц хранения;
Диапазону выданных экземпляров;
Диапазону дат занесения в картотеку.
Фильтрация может производиться по любой совокупности выбранных параметров. Отмеченные, но не заполненные параметры при установке фильтра не учитываются. Выбранные параметры хранятся как массив главной формы, а установка фильтра производиться командой SET FILTER TO [список параметров].
Для параметров “Автор”, ”Составитель”, “Редактор”, “Название издания”, “Издательство” выбор значений может производиться как определением списка из набора, в котором содержатся только уникальные значения полученные на основе выборок из результата работы запроса показанного в примере 4.1, так и на основе ручного ввода.
При выборе пункта “Новости” главного окна появляется всплывающее меню для выбора типа новостей, таких как “Новости поступления” и “Новости мероприятий”. Новости поступления отображаются в форме показанной на рисунке 4.18.
Рис. 4.18 Новости поступления
Здесь отображается информация о:
Номере раздела по ББК;
Название раздела;
Автор;
Название книги;
Издательство;
Год издания;
Количество экземпляров в наличии;
Дата занесения в картотеку.
При загрузке в форме показываются самые последние поступления по всем разделам, впоследствии настройки по умолчанию можно изменить, выбрав просмотр поступлений за период или установив желаемый список разделов.
Так же в форме предусмотрены функции:
Перехода на карточку книги;
Переход на раздел в котором содержится карточка;
Печати карточки книги;
изменение порядка сортировки отображаемых данных.
Отбор информации для формы осуществляется SQL-запросом следующего вида:
SELECT Issue.bbk AS BBK, ;
Issue.name AS IssName, ;
Books.name AS BookName, ;
Creators.name AS AutorName,;
Publisher.publname AS PublName, ;
Publisher.publcity AS PublCity, ;
Books.publyear AS PublYear, ;
COUNT(‘Booknum’)-COUNT(‘Bookuse’) AS Count, ;
FROM library!Issue INNER JOIN library!Books;
INNER JOIN library!Autor;
INNER JOIN library!Creators;
INNER JOIN library!BookNum;
INNER JOIN library!BookUse;
INNER JOIN library!Books ;
ON Publisher.publid = Books.publid ;
ON Booknum.number = Bookuse.number ;
ON Books.bookid = Booknum.bookid ;
ON Creators.nameid = Autor.autorid ;
ON Books.bookid = Autor.bookid ;
ON Issue.id = Books.issid;
WHERE Books.date => ldDate ;
GROUP BY Books.BookId ;
INTO CURSOR vwNews
Пример 4.5 SQL-запрос получение списка новых поступлений
В качестве фильтрующего параметра используется значение даты.
4.2.3.7 НастройкаРис. 4.19 Настройка отображаемых атрубутов
На рисунке 4.19 показана форма для настройки выводимой информации в дереве разделов и списке литературы. Так же в форме отображается текущая настройка выводимой информации. Для настройки отображения в дереве разделов доступны следующие пункты:
Номер раздела по ББК;
Название раздела.
Для списка литературы:
Автор;
Название книги;
Издательство;
Год издания;
Город издательства;
Количество экземпляров хранения;
Количество выданных экземпляров;
Дата занесения в картотеку.
При выборе опции “Добавление” главной формы, появляется всплывающее меню для выбора типа добавления: “Добавить раздел”, “Добавить карточку”.
При добавлении раздела информация о номере раздела по ББК и название раздела заносится в форме показанной на рисунке 4.20. Раздел может быть добавлен в любой узел дерева разделов, для этого дерево отображается в верху формы, по умолчанию добавление происходит в текущий раздел, выбранный в главном окне картотеки.
Рис. 4.20 Добавление нового раздела
Добавление производится командой SQL-Insert следующего вида:
INSERT INTO Issue (Id, Bbk, Name, Parent) VALUES (lnId, lcBbk, lcName, lnParent), где
lnId - уникальный номер нового раздела, вычисляется как RECCOUNT(‘Issue’)+1;
lcBbk- номер нового раздела по ББК;
lcName-Название нового раздела;
lnParent-Номер узла дерева разделов в который производиться добавление.
Добавление новой карточки производится в форме показанной на рисунке 4.21.
Рис. 4.21 Добавление новой карточки издания
Для добавления новой карточки необходимо ввести следующую информацию:
Авторский знак;
Автора или список авторов;
Составителя или список составителей;
Редактора или список редакторов;
Вид издания;
Год издания
Название издания;
Издательство;
Город издательства;
Перечень инвентарных номеров;
Краткую аннотацию.
Для ввода автора (списка авторов), составителя (списка составителей), редактора (списка редакторов) и издательства используются списки полученные на основе таблиц Creators и Publisher соответственно.
Добавление производится командами SQL-Insert следующего вида:
INSERT INTO Books (IssId, BookId, Name, PublId, PublYear, Date) VALUES (lnIssId, lnBookId, lcName, lnPublId, lnPublYear, DATE())
INSERT INTO BookAutor (UniqId, BookId, AutorId) VALUES (lnUniqId, lnBookId, lnAutorId)
INSERT INTO BookNum (BookId, Number) VALUES (lnBookId, lnNumber)
При выборе опции “Изменение” главной формы, появляется всплывающее меню для выбора типа изменения: “Изменить раздел”, “Изменить карточку”. Формы для изменения информации о разделе и о карточки идентичны формам представленным в разделе “Добавить”. Кроме изменения данных о авторах, названиях, издательствах, инвентарных номерах и аннотациях, возможно изменение расположения в разделах, которое производится выбором нового узла из дерева разделов. При этом если изменение расположения в дереве производится для раздела, все карточки находящиеся в данном разделе автоматически переносятся вместе с разделом.
Для изменения значений в таблице Issue можно применить команду SQL-Update имеющей вид:
UPDATE Issue
;
SET
bbk=lnbbk,
;
name=lnName, ;
parent=lnParent
;
WHERE
id=lnId
Где в качестве элемента фильтра применяется уникальный номер группы из таблицы Issue.
Для изменения значений в таблице Books необходимо применить несколько аналогичных функций.
При выборе этой функции открывается системное окно выбора принтера, для задания параметров печати, после выбора параметров осуществляется печать библиографической карточки издания.
На рисунке 4.22 показана структурная схема модуля для работы с картотекой читателей. Далее рассмотрим подробнее данную структурную схему.
Схема отображает связи функций и возможные переходы между функциями, отображает входные и выходные формы, позволяет оценить возможности данного структурного модуля.
Рис. 4.23 Главная форма модуля картотеки читателей
Р
ис.
4.22 Структурная
схема модуля картотеки
читателей
На рисунке 4.23 представлена главная форма для работы с картотекой читателей. Слева располагается дерево групп, в котором отображаются групп читателей. Справа находится таблица, содержащая список читателей для выбранной группы, в ней отображаются следующие данные:
Фамилия, имя и отчество читателя;
Количество изданий находящихся на руках;
Количество изданий с просроченным сроком сдачи;
Дата регистрации читателя;
Дата последнего посещения;
Дата рождения читателя;
Телефон читателя;
Вверху справа располагается меню (набор кнопок) для выбора функций, предусмотрены следующие функции:
Просмотр карточки читателя с возможностью выдачи и сдачи изданий;
Поиск по выбранным значениям;
Сортировка групп и карточек читателей;
Наложение фильтра на выбранную группу;
Настройка отображаемых полей формы;
Добавление новых групп и карточек читателей;
Редактирование добавленных ранее групп и карточек читателей;
Формирование, просмотр и печать разнообразной статистики;
Печать карточки читателя.
В нижней части формы представлена строка статуса, в которой слева отображается общее количество групп читателей и общее количество карточек читателей, а справа количество подгрупп в выбранной группе, общее количество карточек в этих подгруппах, количество карточек в текущей группе, количество выбранных карточек, а также здесь расположен индикатор, в котором при длительных операциях производится отображение хода процесса.
Для главной формы картотеки читателей рассмотрим получение списка читателей, для этого используются SQL запрос, который будет иметь вид:
SELECT Name1.name AS Fam, ;
Name2.name AS Name, ;
Name3.name AS Otch, ;
Street.street AS StreetName, ;
City.city AS CityName, ;
Abonents.house_fl AS House_Flat, ;
Abonents.telefon AS Telefon, ;
Abonents.date1 AS Date1, ;
Abonents.date2 AS Date2 ;
Abonents.comment AS Comment,;
FROM library!Name1 INNER JOIN library!Abonents;
INNER JOIN library!Name2;
INNER JOIN library!Name3;
INNER JOIN library!Street;
INNER JOIN library!City ;
ON City.cityid = Abonents.cityid ;
ON Street.streetid = Abonents.streetid ;
ON Name3.nameid = Abonents.name3 ;
ON Name2.nameid = Abonents.name2 ;
ON Name1.namrid = Abonents.name1;
WHERE Abonents.grid = lngrid ;
INTO CURSOR vwAbon
Пример 4.6 SQL-запрос получение списка читателей
В качестве фильтрующего параметра для таблицы читателей Abonents используется уникальный код группы из таблицы Groups.
На рисунке 4.24 представлена форма развёрнутого просмотра со следующей информацией:
Фамилия, имя и отчество читателя;
Дата рождения;
Адрес читателя;
Телефон читателя;
Примечание к карточке читателя;
Дата регистрации;
Дата последнего посещения.
Рис. 4.24 Просмотр карточки читателя
Данные для формы обеспечиваются на основе SQL-запроса который представлен в примере 4.6.
Для данной формы предусмотрены дополнительные функции:
Просмотр списка выданных изданий;
Печать карточки читателя.
На форме просмотра списка выданных экземпляров, которая показана на рисунке 4.25, доступна информация о:
Дате выдачи;
Инвентарном номере выданного переплёта;
Номере раздела по ББК;
Авторе издания;
Названии издания.
Рис. 4.25 Просмотр списка изданий
По умолчанию показываются только те экземпляры, которые в текущий момент являются выданными абоненту.
Предусмотрены следующие функциональные возможности:
Выдача издания читателю, с возможность поиска по картотеке фондов или быстрый поиск по инвентарному номеру;
Приём издания от читателя;
Просмотр библиографической карточки выданного издания;
Изменение фильтра для просмотра, задолженных экземпляров или всех изданий, которые выдавались читателю;
Печать списка;
Изменение порядка сортировки отображаемых данных.
Данные для формы получаем SQL-запросом следующего вида:
SELECT Bookuse.number AS BookNum, ;
Bookuse.date1 AS BookDate1, ;
Bookuse.date2 AS BookDate2 ;
FROM library!BookNum INNER JOIN library!BookUse ;
ON Booknum.number = Bookuse.number;
WHERE Bookuse.abonid = lnabonid ;
INTO CURSOR vwUseBook
Пример 4.7 SQL-запрос получение списка изданий для читателя
В качестве элементов фильтра используется уникальный код читателя таблицы Abonents.
Рис. 4.26 Поиск карточки читателя
На рисунке 4.26 показана форма для ввода параметров поиска. Поиск может осуществляться по группам и по карточкам читателей, для этого необходимо определить хотя бы один из следующих параметров:
Название группы;
Номер читательского билета;
Фамилию;
Имя;
Отчество читателя;
Дату регистрации;
Дату последнего посещения.
Поиск может осуществляется по любой комбинации параметров.
Для параметров “Название группы”, “Фамилия”, “Имя” и “Отчество” возможен выбор значения из списка формируемого на основе таблиц Issue, Name1, Name2 и Name3 соответственно. В форме просмотра результатов поиска, показанной на рисунке, первыми отображаются данные наиболее соответствующие введённым значениям, те которые удовлетворяют логическому условию И, затем все которые удовлетворяют логическому условию ИЛИ.
Рис. 4.27 Просмотр результатов поиска
В форме просмотра результатов поиска (рис.4.27) отображается следующая информация:
Название группы читателя;
Номер билета читателя;
Фамилия, имя и отчество читателя;
Дата регистрации.
Для формы просмотра результатов поиска предусмотрены следующие функции:
Переход на карточку читателя;
Переход к группе, к которому относится карточка читателя;
Изменение порядка сортировки отображаемых данных.
На рисунке 4.28 показана форма для задания порядка отображения записей в списке карточек читателей. Для задания порядка отображения в списке читателей доступны следующие параметры:
Рис. 4.28 Сортировка карточек читателей
Номер читательского билета;
Фамилия, имя и отчество;
Выдано экземпляров;
Дата регистрации;
Дата рождения читателя;
Телефон читателя.
Так же форма предоставляет возможность просмотра текущих установок. После выбора параметра для сортировки в списке читателей, он отображается в заголовке соответствующего столбца таблицы изменением шрифта надписи на курсив.
4.2.4.5 ФильтрНа рисунке 4.29 показана форма для задания условий фильтрации в списке читателей выбранной группы. Фильтр может задаваться по следующим параметрам:
Диапазону номеров читательских билетов;
Рис. 4.29 Задание фильтра для списка карточек читателей
Фамилии, имени и отчеству читателя;
Диапазону количества выданных экземпляров;
Диапазону дат регистрации;
Диапазону дат последнего посещения;
Диапазону дат рождения читателей.
Фильтрация может производиться по любой совокупности выбранных параметров. Отмеченные, но не заполненные параметры при установке фильтра не учитываются. Выбранные параметры хранятся как массив главной формы картотеки читателей, а установка фильтра производиться командой SET FILTER TO [список параметров].
Для параметра “Ф. И. О.”, выбор значений может производиться как определением списка из набора, в котором содержатся только уникальные значения полученные на основе выборок из результата работы запроса показанного в примере 4.6, так и на основе ручного ввода.
4.2.4.6 НастройкаНа рисунке 4.30 показана форма для настройки выводимой информации в списке читателей выбранной группы. Так же в форме отображается текущая настройка выводимой информации. Для настройки отображения доступны следующие параметры:
Номер читательского билета;
Фамилии, имени и отчества;
Выданное количество экземпляров;
Рис. 4.30 Настройка выводимых атрибутов
Дата регистрации читателя;
Дата последнего посещения;
Дата рождения читателя;
Телефон читателя;
Адрес читателя.
При выборе опции “Добавление”, главной формы модуля картотеки читателей, появляется всплывающее меню для выбора типа добавления: “Добавить группу”, “Добавить карточку”.
При добавлении группы, информация о название группы заносится в форме показанной на рисунке 4.31. Группа может быть добавлен в любой узел дерева групп читателей, для этого дерево отображается вверху формы, по умолчанию добавление происходит в текущую группу, выбранную в главном окне модуля картотеки читателей.
Рис. 4.31 Добавление новой группы читателей
Добавление производится командой SQL-Insert следующего вида:
INSERT INTO Groups (Id, Name, Parent) VALUES (lnId, lcName, lnParent), где
lnId - уникальный номер новой группы, вычисляется как RECCOUNT(‘Groups’)+1;
lcName-Название новой группы;
lnParent-Номер узла дерева групп в который производиться добавление.
Добавление новой карточки читателя производится в форме показанной на рисунке 4.32.
Рис. 4.32 Добавление новой карточки читателя
Для добавления новой карточки необходимо ввести следующую информацию:
Фамилию, имя и отчество читателя;
Дату рождения читателя;
Адрес читателя;
Телефон;
Примечание к карточке читателя.
Для ввода фамилии, имени и отчества читателя используются списки полученные на основе таблиц Name1, Name2 и Name3 соответственно.
При выборе опции “Изменение” главной формы, появляется всплывающее меню для выбора типа изменения: “Изменить группу”, “Изменить карточку”. Формы для изменения информации о группе и информации о карточке читателя идентичны формам представленным в разделе “Добавить”. Кроме изменения, возможно изменение расположения в группах, которое производится выбором нового узла из дерева групп. При этом если изменение расположения в дереве производится для группы, все карточки читателей находящиеся в данной группе автоматически переносятся вместе с группой.
Для изменения значений в таблице Groups можно применить команду SQL-Update имеющей вид:
UPDATE Groups
;
SET
name=lnName, ;
parent=lnParent
;
WHERE
id=lnId
Где в качестве элемента фильтра применяется уникальный номер группы из таблицы Groups.
Для изменения значений в таблице Abonents необходимо применить несколько аналогичных функций.
При выборе функции Статистика главного окна модуля картотеки читателей, появляется всплывающее меню для выбора одного из возможных видов отчёта, таких как “Задолженность по группам читателей”, “Выдача изданий по разделам” и “Выдача изданий по группам читателей”.
При выборе этой функции открывается системное окно выбора принтера, для задания параметров печати, после выбора параметров осуществляется печать карточки читателя.
Доступ к модулю контроля имеет только администратор системы, в этом модуле проводится проверка корректности базы данных, достоверности хранящейся информации, а также имеются средства для восстановления таблиц, базы данных и консистенции информации.
Доступ к модулю администратора имеет только администратор системы, в этом модуле производится настройка путей к базе данных, создание пользователей и назначения прав доступа.
Глава 5. Реализация выбранных решений.После проектирования АРМ, разработки таблиц, полей и связей необходимо еще раз просмотреть функции подлежащие автоматизации, структуру базы данных и выявить возможные недочеты. Желательно это сделать на этапе, пока таблицы не заполнены данными.
Для проверки необходимо создать несколько таблиц, определить связи между ними и ввести несколько записей в каждую таблицу, затем осмотреть, отвечает ли база данных поставленным требованиям. Рекомендуется также создать черновые выходные формы и отчеты и проверить. выдают ли они требуемую информацию. Кроме того, необходимо исключить из таблиц все возможные повторения данных.
Как указывалось ранее, в качестве инструментария разработки АРМ научно-технической библиотеки университета, была выбрана СУБД Microsoft Visual FoxPro. Этот выбор определяет все особенности компьютерной реализации принятых решений по организации информационного обеспечения потенциальных пользователей.
Основой любого АРМ являются:
• таблицы, где хранятся все те данные, которые необходимы пользователям;
• запросы, набор возможностей по поиску, извлечению, вводу и коррекции информации;
• формы, интерфейс между пользователем и программным обеспечением АРМ. Список таблиц, их состав, свойства атрибутов, взаимосвязи и прочие характеристики описаны в разделах 3 и 4 данной работы. Примеры запросов и форм описаны в разделе.
В процессе выполнения данного дипломного проекта были разработаны:
• перечень таблиц (всего 17);
• состав таблиц (суммарно около 60 атрибутов);
• свойства атрибутов;
• на основе анализа доступных источников произведено наполнение таблиц реальной.
Указанные наборы данных являются вполне самодостаточными и позволяют провести тестирование разработанного АРМ в полном объёме, как в плане проверки вообще работоспособности системы, так и правильности получаемых результатов.
Тестирование проводилось методом непосредственной имитации работы пользователя. Основными критериями верификации (правильности) данного программного продукта являлись адекватность реакции системы на предложенное ей действие и соответствие этой реакции эргономическим требованиям, изложенным в разделе 6 данной работы.
В процессе тестирования был выявлен ряд неточностей и некорректностей, в частности:
• несоответствие поля типу данных (вместо числового атрибута - текстовый);
• размер поля меньше требуемого (данные обрезаются по реальному размеру).
Эти и другие замеченные ошибки были зафиксированы и исправлены.
Результатом тестирования, последующей отладки и корректировки базы данных является программный продукт, удовлетворяющий приведенным выше критериям. В частности, по классу эргономических требований (ограничений), в число которых входит:
• время реакции системы,
• число одновременно оцениваемых параметров,
• вид представляемой информации,
• доклад о процессе обработки информации,
• цветовая палитра выходных форм,
• дружественность интерфейса и др.
Разрабатываемая база данных отвечает этим требованиям при условии её реализации на тех технических средствах, которые могут обеспечить эти характеристики.
Машинные эксперименты проводились на нескольких IBM - совместимых компьютерах разных поколений и конфигураций, а именно, PC i486-DX, iPENTIUM-200, AMD K6-2 333, iPENTIUM II-500, AMD K7 Athlon 550.
Эти эксперименты показали, что на основе их результатов могут быть предъявлены определённые требования к техническим и программным средствам со стороны разрабатываемого АРМ. Для нормального функционирования базы данных должны быть выполнены следующие условия.
Технические средства
1. Персональная ЭВМ - совместимая с IBM AT:
• с процессором i486DX4-100 или выше,
• с оперативной памятью не менее 16 Мб,
• с объёмом свободного пространства на диске не менее 40Мб,
• с накопителем на гибком диске.
2. Монитор SVGA с разрешением 800*600 точек.
3. Видеокарта с памятью не менее 1 МБ.
4. Манипулятор «мышь».
5. Клавиатура.
6. Принтер.
Программные средства
1. Операционная система WINDOWS 95/98, WINDOWS NT/2000.
В случае работы в среде локальной вычислительной сети необходима соответствующая техническая и программная поддержка.
По критерию адекватности реакции базы данных на заданные действия нареканий и замечаний нет, что свидетельствует о правильности выбранного подхода к проектированию базы данных и правильности выбранного инструментария для её создания.
Необходимо также отметить тот факт, что разработанная база данных является мобильным программным продуктом, т.е. может быть легко установлена на любой IBM - совместимой персональной ЭВМ.
ЭРГОНОМИКА (от греч. ergon - работа и nomos - закон), отрасль науки, изучающая человека (или группу людей) и его (их) деятельность в условиях производства с целью совершенствования орудий, условий и процесса труда. Основной объект исследования эргономики - системы «человек - машина», в том числе и так называемые эргатические системы.
ЭРГАТИЧЕСКАЯ СИСТЕМА, сложная система управления, составным элементом которой является человек-оператор (или группа операторов).
В конечном итоге, результаты эргономических исследований для конкретных систем выражаются в тех требованиях для этих систем, реализация которых позволяет человеку трудиться как можно более продуктивно и в, как более возможно, комфортных условиях.
Современные эргатические системы включают в свой состав компьютеры с соответствующим программным обеспечением, поэтому требования к эргономическим параметрам систем можно разделить на два больших класса:
- требования к техническим средствам,
- требования к программным средствам.
Рассмотрение требований к техническим средствам не входит в наши задачи, остановимся на требованиях к программным средствам. Применительно к программному обеспечению можно сформулировать некоторый перечень требований, в число которых, например, входят:
- время реакции системы,
- число одновременно оцениваемых параметров,
- вид представляемой информации,
- доклад о процессе обработки информации,
- цветовая палитра выходных форм,
- дружественность интерфейса и др.
Время реакции – это время, потребное системе для принятия запроса на некоторое действие, на реализацию этого действия и на доставку оператору результатов выполнения для последующей их оценки и принятия решения. В общем виде время реакции может быть представлено следующей формулой:
Г
де:
tr - время реакции системы;
tпр - время приёма запроса
tвып - время выполнения
tдост - время доставки
Каждый компонент времени реакции может быть разделён на время работы технических средств и время работы программных средств.
Очевидно, что время реакции не должно превышать некоторой заданной величины, достаточно ясно также, что время работы технических средств в конкретном исполнении практически постоянно. Поэтому уменьшение времени реакции возможно только лишь за счёт соответствующей организации программного обеспечения. Таким образом, эргономическое требование комфортного времени реакции системы влияет на состав и облик программного обеспечения.
При табличном проектировании базы данных для уменьшения времени реакции системы на запрос пользователя следует проектировать таблицы, не содержащие избыточных данных. Хорошая структура таблицы является необходимым исходным условием для эффективного получения и обновления данных. Если всё же таблицы содержат слишком много данных, следует разделить их на связанные таблицы, что повысит эффективность хранения данных. Следует выбирать подходящий тип данных для полей. Это поможет уменьшить размеры базы данных и увеличит скорость выполнения операций связи. При описании поля следует задать для него тип данных наименьшего размера, позволяющий хранить нужные данные.
Существенное повышение скорости выполнения запросов приносит индексирование полей, расположенных по обе стороны отношения, или создание связи между этими полями, а также индексирование всех полей, используемых для задания условий отбора в запросе. Поиск записей также выполняется намного быстрее, если он ведётся по индексированному полю.
Нужно заметить, что индексы занимают определенный объём памяти на диске и замедляют операции добавления, изменения и удаления записей. Однако, в большинстве случаев выигрыш в скорости получения данных перевешивает те неудобства, которые возникают в этом случае при обновлении данных. Если приложение обновляет данные очень часто или, если на жёстком диске мало свободного места, использование индексов можно ограничить; во всех остальных случаях их следует использовать везде, где это возможно.
Необходимо отметить тот факт, что все эргономические требования определяются психофизиологическими особенностями человеческого организма.
В частности, число одновременно предъявленных человеку параметров для их оценки (в зависимости от их сложности) не должно превышать 4 – 6. В противном случае резко повышается вероятность неправильного их восприятия и, как следствие, - неправильного принятия решения. Этот фактор необходимо учитывать при разработке выходных форм.
Вид представляемой информации. Здесь существует основное правило. Информация, представляемая оператору на средствах отображения, должна соответствовать его профессиональному опыту и тем документам, которые существовали в данной организации до появления автоматизированной обработки данных с применением вычислительной техники. Т.е. это должны быть формализованные таблицы, диаграммы, графики, структурированные сообщения и т.д.
В разрабатываемом АРМе в качестве основного метода представления информации выбрана технология многооконных форм, в которых в соответствии с канонами и традициями библиотекарского делопроизводства представляются все необходимые данные. Описания форм и их функциональные предназначенности приведены в соответствующем разделе дипломной работы.
Доклад о процессе обработки информации. В тех случаях, когда время обработки данных существенно превышает заданное время реакции, необходимо выдавать оператору соответствующие сообщения.
Так, например, установлено, что при превышении реального времени реакции над заданным в 5-6 раз у оператора возникает состояние «скуки».
(5 – 6)tзад< tr,
При превышении в 10 и более раз у него возникает состояние «паники», т.е. он начинает сомневаться, выполняется ли вообще его запрос или система «зависла».
10tзад< tr
Во избежание подобных случаев необходимо выполнение запроса «подкрашивать» дополнительной информацией, например, выдавать предполагаемую длительность выполнения и бегущий таймер, динамическую процентную шкалу выполнения, звуковые сигналы о завершении тех или иных этапов выполнения, какие-либо иные динамические фрагменты, свидетельствующие о том, что процесс выполнения запроса происходит в нормальном режиме.
Так, например, на приведенном рисунке 6.1 размещена информация о выполняемой операции (Копирование), что копируется (Описание.doc), откуда и куда (из 'TEXT ' в 'А:\'), процент выполнения (растущая горизонтальная диаграмма) и сколько времени осталось до завершения операции (10 сек).
Рис.6.1
При обнаружении каких-либо некорректностей при выполнении запроса необходимо немедленно (не откладывая на более поздний срок) информировать об этом обстоятельстве оператора. Достаточно эффективно при этом использование звуковых сигналов, динамических фрагментов изображений (мерцание, повороты и т.д.), соответствующей цветовой гаммы.
Цветовая палитра выходных форм. Весьма важной психофизиологической особенностью человека является его восприятие цвета.
Установлено, что ряд цветовых оттенков, а особенно их сочетание действует на человека как сильнейший раздражитель, этот фактор чрезвычайно усиливает своё воздействие при динамической смене цветов (всяческие мигания, мерцания, вспышки и т.д.), что неизбежно приводит к стрессовым ситуациям.
И, наоборот, другие сочетания цветов действуют весьма благотворно на нервную систему, создают комфортные условия для продуктивной длительной работы.
Примером хорошо продуманного в этом плане программного продукта может служить классический NORTON COMMANDER, который, до появления WINDOWS, был обязательной принадлежностью каждой ПЭВМ. Да и сейчас, несмотря на прекрасные возможности WINDOWS, его можно встретить на многих компьютерах. Напротив, подражатели, например, VOLCOV COMMANDER избрали не совсем удачную палитру цветов, что (в сочетании с другими факторами) определило их значительно меньшую популярность.
Дружественность интерфейса. Понятие практически не формализуемое, но интуитивно достаточно ясное. В первую очередь характеризуется оптимальным сочетанием рассмотренных выше факторов.
Основным критерием является комфортность работы оператора, заключающаяся, в частности, в отсутствии повторов в уже проделанной работе, в сведении к минимально необходимому числу подтверждений и разрешений на производство тех или иных операций, в минимизации работы с клавиатурой, большим акцентом работе с манипуляторами типа «мышь» и ему подобными.
Характеризуется широкими возможностями многооконных режимов работы, возможностями кратчайших путей переходов из одного состояния в другое, использованием возможностей гипертекстовых и гиперссылочных свойств, хорошо развитой системой помощи, ненавязчивым сервисом, защитой от «дурака» и т.д.
Для наиболее эффективного управления работой предприятия необходимо иметь достаточную информацию о положении дел на предприятии и возможность оперативного реагирования на изменения ситуации. Для этого руководитель предприятия и другие ответственные лица должны постоянно иметь свежую и достоверную информацию. Возникает необходимость организации управления работой предприятия таким образом, чтобы обеспечить быструю и надежную связь между различными служащими для их слаженного взаимодействия.
Предъявляемые современными условиями требования к системам управления могут быть удовлетворены лишь при помощи современных средств автоматизации управления. Опыт показывает, что в наше время для решения этих задач не обойтись без помощи компьютерной техники, позволяющей в наиболее удобной форме хранить и представлять пользователям интересующую их служебную информацию. Однако, такие системы требуют для своей работы соответствующего программного обеспечения, необходимого для обеспечения работ отражающего специфику работы данного предприятия. Кроме того, к такому программному обеспечению предъявляются такие требования как удобство доступа к необходимой информации, простота в обращении и защита от несанкционированного доступа к конфиденциальной информации, а также, защита от порчи различного рода программными вирусами.
Настоящая работа как раз и представляет собой подобное программное обеспечение по управлению работой предприятия и отвечает основным требованиям, предъявляемым к такого рода программным продуктам.
База данных позволяет связать всех пользователей локальной сети в едином информационном пространстве. В целях защиты информации от несанкционированного доступа к ней, каждый из пользователей персонального компьютера, может иметь свободный доступ только к информации, необходимой для выполнения им его служебных функций и получить, при необходимости, информацию, не связанную непосредственно с его функциями, может лишь с ведома вышестоящего руководства предприятия.
Соответствующими лицами осуществляется обновление информации в соответствии с изменением положения дел, такими как поступление или убытие материально-технических средств, товаров, сырья.
При помощи указанных средств автоматизации процесса управления значительно упрощаются такие процессы как документооборот и учет на предприятии, что значительно уменьшает объем бумажных документов, поиск необходимой документации, восстановление необходимых документов и составление новых. Это позволяет облегчить утомительную, "бумажную", работу.
За счет простоты в обращении, база данных позволяет использовать при работе со служебной информацией низкоквалифицированных работников. Хорошо спроектированная база данных значительно экономит рабочее время и повышает эффективность работы за счет экономии времени на поиск и получение необходимой информации.
Повышение эффективности работы служб, задействованных на предприятии, приводит к экономии как людских ресурсов в виде возможности сокращения числа служащих на объекте, так и экономии рабочего времени высококвалифицированных служащих. Кроме того, данная система позволяет экономию машинного времени, а также, возможность использования менее квалифицированных работников и высвобождение значительного количества кадров с более высокой квалификацией.
Подобный программный продукт может быть реализован в единичном экземпляре либо тиражирован и реализован некоторому числу заказчиков. Обычно принято проводить расчет экономической эффективности использования разработки для ее потребителя.
Важным фактором, влияющим на процесс формирования цены, является конкуренция на рынке, необходимость учета которой совершенно очевидна. В целях повышения конкурентоспособности продукта может возникнуть необходимость снижения его цены на рынке. Важно заметить, однако, что целям повышения конкурентоспособности служит не только снижение цены, но, также, и качество товара и его выгодные отличительные признаки по сравнению с аналогичным товаром конкурентов.
Наиболее важным моментом для разработчика, с экономической точки зрения, является процесс формирования цены. Очевидно, что программные продукты представляют собой весьма специфичный товар со множеством присущих им особенностей. Многие их особенности проявляются и в методах расчетов цены на них. На разработку программного продукта средней сложности обычно требуются весьма незначительные средства. Однако, при этом он может дать экономический эффект, значительно превышающий эффект от использования достаточно дорогостоящих систем.
Следует подчеркнуть, что у программных продуктов практически отсутствует процесс физического старения и износа. Для них основные затраты приходятся на разработку образца, тогда как процесс тиражирования представляет собой, обычно, сравнительно несложную и недорогую процедуру копирования магнитных носителей или иных носителей, и сопровождающей документации. Таким образом, этот товар не обладает, по сути, рыночной стоимостью, формируемой на базе общественно необходимых затрат труда.
Цена на программные продукты устанавливается на единицу программной продукции с учетом комплексности ее поставки. Ее цена, обычно, формируется на базе нормативной себестоимости производства и прибыли:
Цп=С+Пн+Нэ, где
С — себестоимость единицы продукции, руб.,
Пн—нормативная прибыль, руб.;
Нэ — надбавка к цене.
Предельным значением цены программного продукта является сумма дополнительной прибыли, полученной потребителем за период его использования. При назначении цены следует разделить дополнительную прибыль между потребителями данного продукта и его собственником.
Цена на программный продукт может, также, рассчитываться и на основе роялти. Данный подход применяется, когда цена продукта возмещается собственнику не сразу, а по мере получения потребителем дополнительного дохода от его использования. Тогда цена данного программного продукта складывается из ежегодных отчислений дохода потребителей в течение периода действия соглашения, т.е. из роялти. Для программных разработок роялти составляет 3 — 5%.
Цена программного продукта часто складывается из выплат целого ряда потребителей и распределяется между собственниками этого продукта в соответствии с количеством заключенных ими сделок, их длительностью и величиной роялти.
Поскольку данные о фактической дополнительной прибыли, в связи с использованием данной конкретной программной разработки, могут составлять коммерческую тайну, и определить ее величину бывает порой затруднительно даже самому потребителю, постольку в соглашениях ставка роялти устанавливается в процентах от стоимости чистых продаж продукции, ее себестоимости, валовой прибыли, либо же определяется в виде денежной суммы на единицу выпускаемой продукции. Наиболее распространенным на сегодня методом вычисления роялти является ее вычисление в процентах от стоимости продаж лицензионной продукции:
Rs=(R/S)*100, где
Rs — ставка роялти в процентах от стоимости чистых продаж;
R — годовая сумма роялти;
S — годовая стоимость чистых продаж за вычетом косвенных налогов, сборов и пошлин.
Соответственно, валовая сумма роялти (Rt), выплаченная собственнику программного продукта за период действия соглашения (t0 — tn), составит:
Rt=Rti=Rs*Sti
Необходимо, также, отметить, что одинаковым значениям ставки роялти (Rs) могут соответствовать совершенно различные доли роялти в валовой прибыли потребителя программной продукции и наоборот — одинаковая выплата роялти из прибыли может производиться при различных ставках роялти от стоимости продаж. Определяющее значение имеют здесь различия в нормах прибыли к стоимости продаж у потребителей в различных отраслях. Так, например, для получения той же доли прибыли потребителя в высокорентабельных отраслях производства собственнику программных продуктов необходимо устанавливать значительно более высокую ставку роялти, чем в малоприбыльных отраслях.
Другой способ определения ставки роялти основывается на величине годовой дополнительной прибыли потребителя.
Годовая дополнительная прибыль потребителя складывается из величины экономии на капитальных затратах, а также, на текущих эксплуатационных расходах. Экономия оценивается либо методом прямого расчета годовой экономии на основе сравнения производственных показателей двух вариантов, либо методом приведения экономии на капитальных и текущих затратах, распределенной по годам, к текущему моменту времени и расчету на этой основе среднегодовой экономии на предполагаемый период действия соглашения.
Рассчитанная цена может быть скорректирована в зависимости от степени риска (производственного и коммерческого), конкуренции со стороны альтернативных программных продуктов, монополизации рынка продукции, в производство которой внедряется новая программная разработка.
Производственный риск связан, главным образом, с тем, что потребитель может не реализовать тех производственных показателей, которых предполагалось достичь в случае применения данного программного продукта. Такая вероятность тем выше, чем меньше степень разработанности и коммерческого освоения нового программного средства. В этом случае коммерческое доведение закупленной программной разработки может привести к значительным дополнительным расходам, а конкурентоспособность альтернативных вариантов (более высокой степени проработки) — значительно возрасти вследствие того, что суммарные расходы на приобретение программы и ее доработку будут слишком высоки. Таким образом, целесообразность закупки программного изделия определяется выполнением условия:
Рт
... улучшить справочно -библиографическую работу, повысить уровень поисковых возможностей, но и усовершенствовать издательскую деятельность. Состояние и проблемы автоматизации в вузовских библиотеках Урала. В уральском регионе насчитывается 49 вузовских библиотек, которые расположены в 14 городах 6 областей (Курганской, Оренбургской, Пермской, Свердловской, Тюменской, Челябинской). Компьютерная ...
... адміністратор локальної мережі, який є у штатному розкладі і займається усіма проблемами, зв’язаними з комп’ютерами. Рисунок 1.2 – Функціональна схема автоматизованого робочого місця науково-технічної бібліотеки Метою розробки АРМ є - скорочення часу обробки оперативних даних, зменшення кількості помилок при обробці інформації. Основні функціональні вимоги до розроблюваного автоматизованого ...
... - но-методической деятельности библиотек. Характеристика ассортимента аналитической методической про- дукции библиотек Видовая классификация аналитической методической продукции. Глава 2. Технология подготовки аналитических информационных продуктов в отделе прогнозирования и развития библиотечного дела Областной научной библиотеки им. В.Д. Федорова города ...
... обеспечению культурно-образовательной, рекреационной и творческой деятельности как пользователей библиотеки, так и посетителей социокультурных мероприятий. 2. Описание основных направлений деятельности ведущих библиотек Беларуси Национальная библиотека Беларуси (НББ). Была основана 15 сентября 1922 года. Является главной универсальной библиотекой республики. Фонд НББ насчитывает более 7,5 ...
0 комментариев