Принципы проектирования архитектуры баз данных системы финансовых транзакций. - PullRequest
16 голосов
/ 26 января 2010

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

Спасибо

Ответы [ 2 ]

18 голосов
/ 26 января 2010

Некоторые вещи, характерные для финансовых систем, включают в себя внутренний контроль (это важный бухгалтерский термин, проведите некоторые исследования, чтобы действительно продумать его). Такие вещи, как лицо, вводящее значение чека, также не может его одобрить. Такие вещи, как использование хранимых процедур, а не SQL, сгенерированных из приложения, так что вы можете ограничить права только для процедур (вообще не использовать динамический SQL в финансовой системе) и пользователи могут делать только то, что им разрешено делать. Нет прав ни у кого, кроме производственного dba и альтернативы таблицам. Мошенничество - это то, что вы пытаетесь защитить систему не только от внешних атак. Безопасность имеет решающее значение для финансовых систем.

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

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

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

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

Целостность данных имеет решающее значение. Вам нужны правильные типы данных, и вам нужны отношения pk / fk, ограничения и триггеры для обеспечения соблюдения правил. Финансовая система не может позволить себе иметь осиротевшие записи.

Вы должны очень внимательно рассмотреть вопрос об удалении. Финансовые системы часто делают мягкие удаления (помечайте записи как удаленные, чтобы избежать потери исторических данных. Да, компания XYZ больше не является клиентом, но вы не хотите терять финансовую историю заказов, которые они имели в прошлом. Я бы даже не стал рассмотрите возможность использования каскадного удаления в финансовой системе.

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

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

3 голосов
/ 26 января 2010

В зависимости от того, чего вы на самом деле пытаетесь достичь, для создания полезной системы «финансовых транзакций» вам нужно будет научиться журналам, бухгалтерским книгам и другим деталям бухгалтерского учета. Это не так просто, как регистрация реальных транзакций в таблице ...

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

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

Рекомендации по проектированию баз данных

Вы контролируете ваши базы данных?

Ошибки при разработке баз данных, сделанные разработчиками приложений

Какие ваши самые полезные стандарты баз данных?

...