Skip to content

Instantly share code, notes, and snippets.

@nmchenry01
Last active November 26, 2021 23:46
Show Gist options
  • Save nmchenry01/b4d146631a377776bb4d1d3d060882fe to your computer and use it in GitHub Desktop.
Save nmchenry01/b4d146631a377776bb4d1d3d060882fe to your computer and use it in GitHub Desktop.
A example of a PostgreSQL schema for multi-tenancy
CREATE TABLE tenant (
id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name CHARACTER VARYING NOT NULL UNIQUE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
last_modified_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE TABLE product (
id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
name CHARACTER VARYING NOT NULL,
description CHARACTER VARYING NOT NULL,
price NUMERIC(12, 2) NOT NULL,
tenant_id INTEGER NOT NULL REFERENCES tenant (id) ON DELETE CASCADE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
last_modified_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW()
);
CREATE TABLE product_image (
id INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
image_url CHARACTER VARYING NOT NULL,
product_id INTEGER NOT NULL REFERENCES product (id) ON DELETE CASCADE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
last_modified_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW()
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment