Skip to content

PowercoderJr/TaxService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaxService

База данных налоговой инспекции

Техническое задание

Для автоматизации учета работы налоговой службы <...> области необходима следующая информация: об отделениях налоговой инспекции (номер отделения, тип (городская, районная, областная), название (<...> область, г. <...>, <...> район, ...), год начала функционирования, телефон, адрес, сотрудники (ФИО, дата рождения, должность, оклад, образование (высшее, среднетехническое, среднее, среднее специальное))) и о предприятиях, выплачивающих налоги (название предприятия, форма собственности (государственное, частное, ЗАО, ОАО, ООО,…), телефон, год начала работы, количество сотрудников, платежи налоговой службе (вид платежа (налог на добавленную стоимость, налог с прибыли, штраф за неуплату налогов,…), дата, сумма, кто оформлял (сотрудник инспекции))).

  • Спроектировать концептуальную модель базы данных (БД) для заданной предметной области и представить ее в виде взаимосвязанных таблиц, находящихся в третьей нормальной форме (в случае денормализации БД – обосновать необходимость). Выделить базовые таблицы и таблицы-справочники, указать для них первичные и внешние ключи.
  • Создать базу данных в среде СУБД средствами языка SQL. Добавить таблицы, домены, индексы.
  • Разработать не менее шести триггеров (по одному для каждого типа события), как минимум для двух различных таблиц БД. Триггеры типа BEFORE INSERT должны быть созданы для всех таблиц и с использованием генераторов задавать значение первичного ключа для вновь добавляемой записи.
  • Заполнить таблицы БД с использованием соответствующих запросов на языке SQL (не менее десяти записей в каждом справочнике, не менее 10 000 - 50 000 псевдослучайных записей в таблицах).
  • Сформулировать следующие виды запросов:
    • симметричное внутреннее соединение с условием (два запроса с условием отбора по внешнему ключу, два – по датам);
    • симметричное внутреннее соединение без условия (три запроса);
    • левое внешнее соединение;
    • правое внешнее соединение;
    • запрос на запросе по принципу левого соединения;
    • итоговый запрос без условия;
    • итоговый запрос без условия c итоговыми данными вида: «всего», «в том числе»;
    • итоговые запросы с условием на данные (по значению, по маске, с использованием индекса, без использования индекса);
    • итоговый запрос с условием на группы;
    • итоговый запрос с условием на данные и на группы;
    • запрос на запросе по принципу итогового запроса;
    • запрос с использованием объединения
    • запросы с подзапросами (с использованием in, not in, case, операциями над итоговыми данными).
  • Запросы без параметров реализовать в виде представлений, остальные запросы – в виде хранимых процедур и/или функций. Создать, по меньшей мере, одно модифицируемое представление, используя механизм триггеров. ВСЯ логика проектируемого ПО – на сервере.
  • Разработать клиентское приложение, которое предоставляет следующие возможности для работы с созданной базой данных:
    • многопользовательский режим работы (одна программа для всех ролей – ситуативный доступ к интерфейсу)
    • наличие нескольких ролей пользователя (администратор – добавление/удаление/редактирование пользователей, их прав/ролей; пользователи_1 – …, пользователи _2 – ...)
    • просмотр содержимого таблиц и представлений (здесь и далее – с учетом прав пользователей);
    • добавление, редактирование и удаление записей таблиц и модифицируемых представлений;
    • работа с наборами данных, находящимися в отношении «один-ко-многим» (создать составную форму для просмотра и редактирования данных родительской и дочерней таблиц);
    • поиск и фильтрация данных отображаемых таблиц;
    • просмотр результатов выполнения запросов;
    • визуализация результатов одного из итоговых запросов (диаграммы, экспорт в Excell).
  • Обеспечить защиту данных, информации от несанкционированного доступа

Роли пользователей

В системе существует 3 роли пользователей: простой пользователь, оператор и администратор.

Простой пользователь

Простому пользователю доступно только локализированное (таблицы, каждая строка которых закреплена за одним из отделений — Сотрудники, Платежи — позволяют работать только с теми записями, которые относятся к тому же отделению, что и пользователь. Например: сотрудник отделения А видит только сотрудников из отделения А и платежи, которые были оформлены в отделении А. В то же время он не может получить доступ к сотрудникам или платежам отделения Б) чтение таблиц и добавление записей в таблицу Платежи.

Оператор

Оператор также имеет локализированный доступ к таблицам, но уже может выполнять все CRUD-операции во всех таблицах, за исключением некоторых ограничений: в таблице Платежи разрешены лишь операции чтения и добавления; в таблицах Отделения и Аккаунты разрешено только чтение. В дополнение к этим правам оператор также может выполнять некоторые запросы.

Администратор

Администратор имеет все права на все таблицы в базе данных, может выполнять все запросы и управлять пользователями.

Скриншоты

Форма авторизации

Форма авторизации

Главная форма

Главная форма

Добавление записи

Добавление записи

Редактирование записи

Редактирование записи

Менеджер пользователей

Менеджер пользователей

Меню "Таблицы"

Меню "Таблицы"

Результат запроса

Результат запроса

About

Three-tier DBMS for tax service on PostgreSQL

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published