240-2031 (664633), страница 5
Текст из файла (страница 5)
3.4. Проектирование структуры данных.
До технической реализации структуры базы данных была проанализирована структура взаимодействия отделов предприятия и составлены несколько вариантов бизнес–планов, характеризующие деятельность отделов по различным типам выполняемых работ. При анализе бизнес-планов учитывались критические моменты и проверки, важные с точки зрения обеспечения целостности данных. Также был произведен анализ типов отчетности по каждому из этапов бизнес-планов.
Данные для технической реализации проекта данные имеют следующую структуру, проиллюстрированную Схемой 2 (основные связи).
Основной является таблица с данными по организациям («Заказчики»), к ней отношениями один ко многим связанны таблицы с информацией по основным («ОсновныеСчета») и дополнительным («ДругиеСчета») счетам (у одной организации может быть много счетов как по основному направлению деятельности предприятия, так и по дополнительным направлениям), к таблицам по счетам отношением один ко многим связанны таблицы с информацией по заказам, входящим в данный счет (в один счет может входить несколько заказов). С другой стороны, к таблицам с данными по организациям отношением один-ко-многим связана таблица с данными по авансовому отчету.
Особенностью проектируемой системы является возможность учета денежных средств поступивших по авансовым платежам, что составляет основную долю прихода денежных средств. Структура данных по авансовым платежам построена с учетом того, что выборка по этим данным должна быть представлена в наиболее полном виде, и как можно в более короткое время. Более того, данная структура одинаково хорошо работает с обыкновенной схемой учета денежных средств, то есть списание денежных средств на реализацию без учета аванса.
Данная схема реализована с помощью двух таблиц, связанных отношением один-ко-многим. В главной таблице находятся данные с информацией по счету, такие как код номера счета, тип системы по позиции счета, количество месяцев сопровождения системы по позиции счета, информация о типе платежа (наличный или безналичный расчет).
В подчиненной таблице расписаны суммы авансовых платежей по месяцам. Таким образом, данная структура реализует быстрые выборки по авансовым задолжностям по конкретной организации, что имеет существенное значение при оценке эффективности деятельности предприятия и прогнозирования дальнейшей работы.
Политика расположения данных имеет критическое значение для приложения применительно к скорости работы. Данные, которые меняются нечасто или не меняются вовсе, названия систем семейства Консультант +, названия месяцев года и так далее, были вынесены локально в клиентские модули, так как скорость выборки данных с локального диска компьютера в несколько раз больше скорости выборки данных по запросу из базы данных расположенной на сетевом диске.
Примечание: Для связывания таблиц в дальнейшем рекомендуется, где возможно, применять поле с уникальным значением, но не поле счетчика (так как возможна ситуация с добавлением данных в таблицу, при этом изменяется значение счетчика и теряются связанные данные в подчиненных таблицах)
После реализации основной части проекта база данных была разделена на три отдельных модуля:
-
модуль для бухгалтерии (MdlByx.mdb),
-
модуль для отдела сопровождения (MdlClnt.mdb),
-
модуль данных (Data.mdb).
Организованная структура данных позволяет:
-
организовать клиент - серверную модель данных,
-
разработку и изменение модулей параллельно с работой ранее сконструированных,
-
уменьшает размер резервного файла,
В процессе технической реализации данных задач появились дополнительные задачи:
1. Изменение данных по авансовому отчету (корректировка распределения сумм по месяцам для организаций).
2. Общая результирующая информация по организациям, адресные и банковские реквизиты, счета, выписанные на организации, информация по системам для данной организации.
3. Обмен сообщениями между пользователями (использование для заказа счетов актов и так далее).
3.4.1. Описание структуры данных проекта.
В процессе разработки базы данных была выработана следующая иерархическая структура данных.
Часть 1. (листинг 2.1)
(
таблицы «Заказчики», «СтатусЗаказчика»,«Курьеры»,«Примечания»,)
1. Связь таблицы «Заказчики» с таблицей «СтатусЗаказчика». Поле: «Код» в обеих таблицах
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «СтатусЗаказчика»)
Связывание: мастер подстановок в таблице «Заказчики»
Примечания: данная связь заменяет повторяющееся текстовые значения типа организации соответствующим кодом из таблицы «СтатусЗаказчика».
2.Связь таблицы «Заказчики» с таблицей «Курьеры».
Поле: «КодКурьера» в обеих таблицах.
Тип связи: один ко многим с обеспечением целостности данных.
(один со стороны таблицы «Курьеры»)
Связывание: мастер подстановок в таблице «Заказчики»
Примечания: предусматривает добавление в структуру данных модуля «Курьеры».
3.Связь таблицы «Заказчики» с таблицей «Примечания».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим без обеспечением целостности данных.
(один со стороны таблицы «Заказчики»)
(возможно связывание один к одному)
Связывание: мастер подстановок в таблице «Примечания»
Часть 2. (листинг 2.2)
(таблицы «Заказчики», «КредитАванс», «ОсновныеСчета», «Дистрибутивы», «Системы»,
«ФормаОплаты», «ТипСистемы», «Платежки», «СчетаФактуры», «СчетаФактурыОсновные»)
1.Связь таблицы «Заказчики» с таблицей «ОсновныеСчета».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим с обеспечением целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «Заказчики»)
Связывание: мастер подстановок в таблице «ОсновныеСчета»
Примечания: у каждого заказчика может быть много счетов.
2.Связь таблицы «Заказчики» с таблицей «КредитАванс».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «Заказчики»)
(возможно связывание один к одному?)
Связывание: мастер подстановок в таблице «КредитАванс»
3.Связь таблицы «Заказчики» с таблицей «СчетаФактуры».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «Заказчики»)
Связывание: мастер подстановок в таблице «СчетаФактуры»
Примечания: у каждого заказчика может быть много счетов-фактур.
4. Связь таблицы «ОсновныеСчета» с таблицей «Дистрибутивы».
Поле: «КодСчета» в обеих таблицах.
Тип связи: один ко многим с обеспечением целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «ОсновныеСчета»)
Связывание: мастер подстановок в таблице «Дистрибутивы»
Примечания: в каждый счет может входить много записей по заказам.
5. Связь таблицы «ОсновныеСчета» с таблицей «Платежки».
Поле: «КодСчета» в обеих таблицах.
Тип связи: один ко многим с обеспечением целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «ОсновныеСчета»)
Связывание: мастер подстановок в таблице «Дистрибутивы»
Примечания: в каждому счету может относится несколько платежных поручений.
(*Если платежное поручение оплачивает несколько счетов, то при внесении данных к счетам пишется одно и тоже платежное поручение, но суммы вносятся в соответствии с суммой счета)
6. Связь таблицы «ОсновныеСчета» с таблицей «СчетаФактурыОсновные».
Поле: «КодСчета» в обеих таблицах.
Тип связи: один ко многим с обеспечением целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «ОсновныеСчета»)
Связывание: мастер подстановок в таблице «Дистрибутивы»
Примечания: в каждому счету может относится несколько счетов-фактур на системы.
7. Связь таблицы «Дистрибутивы» с таблицей «Системы».
Поле: «КодСистемы».
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «Системы»)
Связывание: мастер подстановок в таблице «Дистрибутивы»
Примечания: данная связь заменяет повторяющееся текстовые значения названия систем соответствующим кодом из таблицы «Системы».
8. Связь таблицы «Дистрибутивы» с таблицей «ТипСистемы».
Поле: «Код» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «ТипСистемы»)
Связывание: мастер подстановок в таблице «Дистрибутивы»
Примечания: данная связь заменяет повторяющееся текстовые значения типа систем соответствующим кодом из таблицы «ТипСистемы».
9. Связь таблицы «ОсновныеСчета» с таблицей «ФормаОплаты».
Поле: «Код» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «ФормаОплаты»)
Связывание: мастер подстановок в таблице «ОсновныеСчета»
Примечания: данная связь заменяет повторяющееся текстовые значения формы оплаты счета соответствующим кодом из таблицы «ФормаОплаты».
10. Связь таблицы «Системы» с таблицей «КредитАванс».
Временная связь, возможно в дальнейшем будет удалена.
Часть 3. (листинг 2.3)
(таблицы «Заказчики», «ОсновныеСчета», "АвансПоОстаткамС1996Года», «ДанныеДляАвансОтчета», «Системы», «АвансовыйОтчет».)
1. Связь таблицы «Заказчики» с таблицей «АвансПоОстаткамС1996Года».
Поле: «КодЗаказчика» в таблице «Заказчики» с полем «Заказчик» в таблице «АвансПоОстаткамС1996Года».
Тип связи: один ко многим с обеспечением целостности данных.
(один со стороны таблицы «Заказчики»)
Связывание: в окне схемы данных.
Примечания: к каждому заказчику может относится несколько записей по месяцам по авансовому отчету.
2. Связь таблицы «Заказчики» с таблицей «ДанныеДляАвансОтчета».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «Заказчики»)
Связывание: мастер подстановок в таблице «ДанныеДляАвансОтчета»
Примечания: для данной организации данных к каждому заказчику может относится несколько записей по авансовому отчету.
3. Связь таблицы «Системы» с таблицей «ДанныеДляАвансОтчета».
Поле: «КодСистемы» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «Заказчики»)
Связывание: мастер подстановок в таблице «ДанныеДляАвансОтчета»
Примечания: данная связь заменяет повторяющееся текстовые значения названия системы соответствующим кодом из таблицы «Системы».
4. Связь таблицы «ОсновныеСчета» с таблицей «ДанныеДляАвансОтчета».
Поле: «КодСчета» в обеих таблицах.
Тип связи: один ко многим без обеспечения целостности данных.
(один со стороны таблицы «ОсновныеСчета»)
Связывание: мастер подстановок в таблице «ДанныеДляАвансОтчета»
Примечания: к каждому счета может относится несколько записей по авансовому отчету.
5. Связь таблицы «ДанныеДляАвансОтчета» с таблицей «АвансовыйОтчет».
Поле: «Код» в таблице «ДанныеДляАвансОтчета» с полем «ИдентКод» в таблице «АвансовыйОтчет».
Тип связи: один ко многим с обеспечения целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «ДанныеДляАвансОтчета»)
Связывание: в окне схемы данных.
Часть 4. (листинг 2.4)
(таблицы «Заказчики», «ДругиеСчета», «ДругиеПлатежки», «ДругиеЗаказы», «ДанныеДляАвансОтчетаДр», «АвансовыйОтчетДр».)
1. Связь таблицы «Заказчики» с таблицей «ДругиеСчета».
Поле: «КодЗаказчика» в обеих таблицах.
Тип связи: один ко многим с обеспечения целостности данных с каскадным удалением и каскадным обновлением данных.
(один со стороны таблицы «Заказчики»)
Связывание: в окне схемы данных.
Примечания: к каждому заказчику может относится несколько счетов по дополнительным заказам.
2. Связь таблицы «Заказчики» с таблицей «ДанныеДляАвансОтчетаДр».















