All templates

POS Database Schema

Design a POS database schema — stores, registers, products, sales, sale items, and payments.

Use this template

What you get

  • Stores with registers and cashiers operating each terminal
  • Sale plus SaleItem captures the transaction and line-item details
  • Multiple Payments per Sale enable split-tender checkout

What this template is for

This POS (point-of-sale) database schema gives you a ready-to-edit ER diagram for a retail checkout system. It models the entities every POS needs: stores and the registers (terminals) inside them, cashiers who operate registers, a product catalog, per-store inventory levels, sales (the transaction header), sale items (the line items), and payments against each sale. The key design decision is treating the Sale as the transaction unit and the SaleItem as the per-product line, with payments split off so a single sale can accept cash + card. Use it to design a retail POS, document an existing checkout flow, or explain why a sale can have many payments.

When to use this template

  • Design the database for a retail POS or checkout system.
  • Model the difference between a Sale (transaction) and SaleItem (line item).
  • Plan how multiple payments (cash + card, split tender) attach to one sale.
  • Decide how per-store inventory decrements on sale.
  • Document the registers and cashiers running checkout in each store.
  • Compare a single-store POS schema against a multi-store retail chain.

How to use it

  1. 1Start with Store and add Register (terminals) inside each store.
  2. 2Add Cashier — users who log into registers to ring up sales.
  3. 3Add Product (the catalog) and StoreInventory (per-store quantity).
  4. 4Add Sale referencing store, register, cashier, with total and timestamp.
  5. 5Add SaleItem linking each sale to products with quantity and line total.
  6. 6Add Payment attached to Sale so split-tender transactions work.

Quick example

Retail POS schema

Store has many Registers, each operated by a Cashier
Product (id, sku, name, price)
StoreInventory (store_id, product_id, quantity)
Sale (id, store_id, register_id, cashier_id, total, sold_at)
SaleItem (id, sale_id, product_id, quantity, line_total)
Payment (id, sale_id, method, amount) — many per Sale for split tender

Start editing online

Open the template in CodePic, replace the sample nodes, and turn it into your own study board in a few minutes.

See examples: /templates/pos-database-schema/examples

More templates you might like