Multi-tenant SaaS database schema

Shared-database multi-tenancy done properly: organizations as tenants, global users joined through memberships, invitations, scoped API keys, plans, subscriptions, metered usage and an append-only audit log.

SaaS Multi Tenant ER diagram

Multi-tenant SaaS database schema n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 n1 organizations idBIGINT nameVARCHAR slugVARCHAR plan_idBIGINT trial_ends_atTIMESTAMP seats_purchasedINTEGER created_atTIMESTAMP deleted_atTIMESTAMP users idBIGINT emailVARCHAR full_nameVARCHAR password_hashVARCHAR email_verified_atTIMESTAMP last_login_atTIMESTAMP created_atTIMESTAMP memberships idBIGINT organization_idBIGINT user_idBIGINT roleVARCHAR statusVARCHAR joined_atTIMESTAMP invitations idBIGINT organization_idBIGINT invited_by_user_idBIGINT emailVARCHAR roleVARCHAR token_hashVARCHAR expires_atTIMESTAMP accepted_atTIMESTAMP projects idBIGINT organization_idBIGINT nameVARCHAR slugVARCHAR archived_atTIMESTAMP created_atTIMESTAMP api_keys idBIGINT organization_idBIGINT created_by_user_idBIGINT nameVARCHAR key_prefixVARCHAR key_hashVARCHAR last_used_atTIMESTAMP expires_atTIMESTAMP revoked_atTIMESTAMP plans idBIGINT codeVARCHAR nameVARCHAR price_centsINTEGER currency_codeCHAR intervalVARCHAR featuresJSON is_publicBOOLEAN subscriptions idBIGINT organization_idBIGINT plan_idBIGINT provider_referenceVARCHAR statusVARCHAR quantityINTEGER current_period_st…TIMESTAMP current_period_endTIMESTAMP canceled_atTIMESTAMP usage_records idBIGINT organization_idBIGINT metricVARCHAR quantityINTEGER window_startTIMESTAMP recorded_atTIMESTAMP audit_logs idBIGINT organization_idBIGINT actor_user_idBIGINT actor_api_key_idBIGINT actionVARCHAR target_typeVARCHAR target_idVARCHAR metadataJSON ip_addressVARCHAR created_atTIMESTAMP

Related database schemas