SQL, базы данных, индексы, ORM и миграции

SQL, базы данных, индексы, ORM и миграции


1. На счету пользователя 1000 р. Первая транзакция: читает 1000 на счету, пытается снять 1000. Вторая транзакция тоже читает 1000, хочет снять еще 500 р. По результату уходим в минус. Как обойти ситуацию? -Если хотим решить ситуацию, но оставить уровень транзакции READ COMMITED?

2. Какой уровень изоляции выбрать, что бы при бронировании билета другие транзакции не могли его забронировать?

3. Что использовать для идентификации записи кроме id?

4. Поля в таблице договоров id, номер договора, дата начала, дата завершения: что является суррогатным ключом, а что натуральным?

5. Как быстро оценить количество строк в большой таблице PostgreSQL?