ER Diagram
全部模板

SaaS 多租户数据库表结构

面向 B2B SaaS 产品的共享数据库、按租户隔离的模型。用户通过携带角色的成员关系加入组织,每个组织持有一份订阅,租户数据(项目)以组织为键。这是在决定按 schema 或按数据库隔离之前最常见的起步模式。

在编辑器中打开 → 6 张表 · MySQL DDL

此结构中的表

organizationsusersmembershipsplanssubscriptionsprojects

表结构(SQL)

MySQL 方言的 DDL。在编辑器中打开可获得可编辑的可视化 ER 图,或直接将 SQL 复制到你的项目中。

CREATE TABLE organizations (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(150) NOT NULL,
  slug VARCHAR(160) NOT NULL UNIQUE,
  created_at DATETIME NOT NULL
);

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  email VARCHAR(254) NOT NULL UNIQUE,
  full_name VARCHAR(120),
  created_at DATETIME NOT NULL
);

CREATE TABLE memberships (
  id INT PRIMARY KEY AUTO_INCREMENT,
  organization_id INT NOT NULL,
  user_id INT NOT NULL,
  role VARCHAR(20) NOT NULL,
  invited_at DATETIME,
  joined_at DATETIME,
  FOREIGN KEY (organization_id) REFERENCES organizations(id),
  FOREIGN KEY (user_id) REFERENCES users(id)
);

CREATE TABLE plans (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(60) NOT NULL,
  price_monthly DECIMAL(10,2) NOT NULL,
  seat_limit INT
);

CREATE TABLE subscriptions (
  id INT PRIMARY KEY AUTO_INCREMENT,
  organization_id INT NOT NULL,
  plan_id INT NOT NULL,
  status VARCHAR(20) NOT NULL,
  current_period_end DATETIME NOT NULL,
  FOREIGN KEY (organization_id) REFERENCES organizations(id),
  FOREIGN KEY (plan_id) REFERENCES plans(id)
);

CREATE TABLE projects (
  id INT PRIMARY KEY AUTO_INCREMENT,
  organization_id INT NOT NULL,
  name VARCHAR(150) NOT NULL,
  created_by INT,
  created_at DATETIME NOT NULL,
  FOREIGN KEY (organization_id) REFERENCES organizations(id),
  FOREIGN KEY (created_by) REFERENCES users(id)
);