First you need to decide how the android devices will talk to the central database. Options, from easiest to hardest:
- Direct JDBC connection (over TCP). Some networks might block direct TCP connections. No offline capability.
- Tunnel JDBC over HTTP(S). No offline capability.
- Run a local database on Android (Sqlite) and synchronize to remote database when can (allows for offline). See SymmetricDS.
- Put REST API in front of remote database and use android's built-in syncing capability.
Second you need to decide how to segregate remote database data between users:
- No segregation, users can do what they want to others data.
- Database segregation, aka Row-Level Security
- Application segregation (no segregation in database, but control segregation in say your REST API)
You need database segregation if choosing options A, B or C from question 1.
How many concurrent writers for remote database?
PostgreSQL is a great choice these days, but MariaDB might be a better choice if you require row-level security as it supports the WITH CHECK OPTION clause, which isn't coming in PostgreSQL until the summer.