Sobes.tech
Back to questions
Middle+
5

Спроектируйте SQL схему для банковской системы с таблицами accounts и transactions. Какие ограничения и индексы необходимы?

Companies where asked
ООО Дэстэн Партнерс

Answer from AI

sobes.tech AI

Для банковской системы с таблицами accounts и transactions можно спроектировать схему следующим образом:

Таблица accounts:

  • account_id (PK, уникальный идентификатор счета)
  • user_id (внешний ключ к пользователю, если есть)
  • balance (текущий баланс, decimal)
  • currency (валюта счета)
  • created_at (дата создания)

Таблица transactions:

  • transaction_id (PK)
  • account_id (FK на accounts.account_id)
  • amount (сумма транзакции, decimal, положительная или отрицательная)
  • transaction_type (например, "deposit", "withdrawal", "transfer")
  • timestamp (время транзакции)
  • description (опционально)

Ограничения:

  • В accounts balance не должен быть отрицательным (если бизнес-логика это требует).
  • В transactions account_id должен существовать в accounts (FOREIGN KEY).
  • amount в transactions не должен быть нулём.

Индексы:

  • PRIMARY KEY на account_id и transaction_id.
  • Индекс на transactions.account_id для быстрого поиска транзакций по счету.
  • Индекс на transactions.timestamp для сортировки и выборок по времени.

Такой дизайн обеспечивает целостность данных и эффективный доступ к информации о счетах и операциях.