MS Access Database Design Best Practices

Good database design at the start saves months of rework later. These best practices apply whether you are building a new Access application or refactoring one that has grown organically over years.

Normalize Your Data

Follow at least Third Normal Form (3NF) to eliminate redundant data:

  • Each field should hold one atomic value — no comma-separated lists in a single cell.
  • Customer address belongs in tblCustomers, not repeated on every order row.
  • Create lookup tables for categories, statuses, and types instead of free-text fields.

Naming Conventions

  • Tables:Prefix with tbl — tblCustomers, tblOrders, tblProducts.
  • Queries:Prefix with qry — qryOpenOrders, qryMonthlySales.
  • Forms:Prefix with frm — frmCustomerEntry, frmOrderList.
  • Reports:Prefix with rpt — rptInvoice, rptInventorySummary.
  • Primary Keys:Use AutoNumber named [TableName]ID — CustomerID, OrderID.

Define Primary and Foreign Keys

Every table needs a primary key. Use AutoNumber for surrogate keys rather than natural keys like email addresses, which can change. Foreign keys in child tables must match the parent key data type exactly.

Index Strategically

  • Index all foreign key fields used in joins.
  • Index fields frequently used in WHERE clauses and ORDER BY.
  • Avoid over-indexing — each index slows inserts and updates.
  • Set Indexed property to 'Yes (No Duplicates)' for unique fields like Email.

Choose Correct Data Types

Using Short Text for dates or numbers causes sorting and calculation errors. Review our data types guide and always use Currency for money fields, Date/Time for dates, and Yes/No for boolean flags.

Plan for Growth

  • Design with a split front-end/back-end architecture from day one.
  • Document table relationships in the Relationships window.
  • Avoid storing attachments in tables — use hyperlinks or file paths instead.
  • Archive old records annually to keep the active database lean.

Have a question? Get a free quote