Некоторые вещи, характерные для финансовых систем, включают в себя внутренний контроль (это важный бухгалтерский термин, проведите некоторые исследования, чтобы действительно продумать его). Такие вещи, как лицо, вводящее значение чека, также не может его одобрить. Такие вещи, как использование хранимых процедур, а не SQL, сгенерированных из приложения, так что вы можете ограничить права только для процедур (вообще не использовать динамический SQL в финансовой системе) и пользователи могут делать только то, что им разрешено делать. Нет прав ни у кого, кроме производственного dba и альтернативы таблицам. Мошенничество - это то, что вы пытаетесь защитить систему не только от внешних атак. Безопасность имеет решающее значение для финансовых систем.
Вам также нужны таблицы аудита, чтобы знать, кто изменил какие данные, когда и каково было старое значение. Это не только дополнительный способ помочь найти проблемы, если кто-то обошел систему внутреннего контроля (или система забыла внедрить некоторые критически важные), украл деньги, но часто очень важно иметь возможность исправить ошибку без необходимости восстановления. В целом системы учета часто имеют поля данных, которые пользователь не может просматривать, и которые создаются с помощью значений по умолчанию или таким образом, что пользователь их не видит.
Другое дело, что вам нужно просматривать действия во времени, поэтому вещи, которые могут выглядеть как естественные отношения, могут нуждаться в денормализации, чтобы сохранить стоимость во время действия. Поэтому, если у вас есть почасовая таблица тарифов, вы можете использовать ее как справочную информацию, чтобы получить ставку во время действия, а не присоединиться к ней, чтобы получить ставку при запросе.
Финансовые системы содержат в себе личные данные, почти всегда думайте, как вы собираетесь защищать эти данные. Вам нужно будет зашифровать и расшифровать данные. Вы, вероятно, также хотите зашифрованную резервную копию.
Эти данные являются жизненной силой компании, поэтому очень важно иметь хороший план резервного копирования и много практиковаться в восстановлении. Резервное копирование вне сайта является критически важным.
Целостность данных имеет решающее значение. Вам нужны правильные типы данных, и вам нужны отношения pk / fk, ограничения и триггеры для обеспечения соблюдения правил. Финансовая система не может позволить себе иметь осиротевшие записи.
Вы должны очень внимательно рассмотреть вопрос об удалении. Финансовые системы часто делают мягкие удаления (помечайте записи как удаленные, чтобы избежать потери исторических данных. Да, компания XYZ больше не является клиентом, но вы не хотите терять финансовую историю заказов, которые они имели в прошлом. Я бы даже не стал рассмотрите возможность использования каскадного удаления в финансовой системе.
Не просто разговаривайте с бухгалтерами при разработке системы, говорите с финансовыми людьми, которые будут управлять системой, и с аудиторами, которые будут проверять результаты. Внимательно изучите опубликованный стандарт бухгалтерского учета для страны, для которой вы разрабатываете. Посмотрите на налоговые последствия. Это сложный материал.
Подумайте о хранилищах данных и архивировании данных. Финансовые системы часто запрашивают старые данные для отчетов, отчеты большие, большие, большие для финансовых систем. Подумайте, как сделать это эффективно, не влияя на ежедневный ввод данных.