Есть некоторые вещи, которые знает каждый человек, проектирующий базы данных. Например, что данным нехорошо исчезать бесследно, что данные долнжы быть нормализованы и т.д.
Для заказчика всё выглядит просто. Он может сказать:
Фактически, нам нужно хранить только информацию по каждой оплате: имя, e-mail и дату (чтобы можно было блокировать учётную запись, когда срок действия истечёт).
Нам нужны только простейшие операции над этими данные: добавить, удалить, изменить данные; посмотреть, что заказывал этот человек раньше.
Но если вы создаёте базу данных, для вас всё значительно сложнее. Удаление записи не удаляет, а лишь скрывает её. Информация о заказчиках, об учётных записях и о платежах - это три разные таблицы. Ещё неплохо бы вести протокол изменений. Кроме того, ненужную устаревшую информацию со временем нужно стирать (скажем, учётные записи, заблокированные больше года).
Ещё я не понимаю, как кто-то умудряется использовать базы данных без поддержки транзакций (например, MySQL MyISAM). На мой взгляд, программа для такой системы должна использовать кучу дополнительных полей и чёртову прорву кода для синхронизации работы многочисленных копий себя (или же просто блокировать на фиг все нужные таблицы перед внесением изменения). Неужели всякие там форумы действительно так делают? А если нет, то почему они не падают с завидной регулярностью?
И вопрос по существу. У вас есть опыт работы с таблицами MySQL, сохраняемыми в Berkeley DB? Я почему-то боюсь использовать такую смесь, а InnoDB, вроде бы, пока не доступна.