
Access Versus SQLite Versus PostgreSQL for a Small App
Compare Microsoft Access, SQLite and PostgreSQL for a small team replacing a spreadsheet, by users, platform, interface, limits, safety and upgrade path.
Schemas that age well: keys, normalization, constraints and the shortcuts you will regret in a year.

Compare Microsoft Access, SQLite and PostgreSQL for a small team replacing a spreadsheet, by users, platform, interface, limits, safety and upgrade path.

Excel cannot say who changed a cell and why. See what version history does, and build an audit trail in PostgreSQL with triggers or temporal tables.

How two people editing the same Excel file lose each other's changes, what co-authoring and locks do about it, and how a database prevents lost updates.

Keep Excel for reading and analysing database data through queries and refresh, and decide how writes should reach the database without losing rules.

Replace columns like Phone 1, Phone 2, Phone 3 from an Excel sheet with a child table: unpivot in SQL or pandas, drop blanks, add keys and check the counts.

Turn a wide Excel sheet into database tables: find the entities, choose keys, remove repeated groups and derived columns, and check the design with queries.

Move an Excel workbook into PostgreSQL: staging table, clean, normalized tables, constraints, roles, a verified load, and Excel as the read connection.

Move an Excel list into SQLite: clean it, design tables, load with Python, add constraints, query from Excel and know the limits for a small team.

Ten concrete signs that an Excel file has become a database, from several editors to lost updates and broken lookups, with a quick test for each.

How to tell that an Excel file now behaves as a database, choose SQLite, Access or PostgreSQL, design tables, migrate safely and keep Excel as a reader.

Why a PUT drops fields, why dict.update clobbers nested objects, how absent differs from null in Pydantic, and how field-level SQL avoids lost updates.

Measure schema drift in a jsonb column with key counts and type counts, see how it changes a sum, and stop it with a NOT VALID check constraint.
We send one email when a new article is published. No spam.