电商平台数据库 ER 图
erDiagram
%% 实体定义
users {
bigint id "PK, NOT NULL"
varchar(50) username "NOT NULL"
varchar(100) email "NOT NULL"
varchar(255) password_hash "NOT NULL"
timestamp created_at "NOT NULL"
}
products {
bigint id "PK, NOT NULL"
varchar(200) name "NOT NULL"
decimal(10,2) price "NOT NULL"
int stock "NOT NULL"
bigint category_id "FK"
}
orders {
bigint id "PK, NOT NULL"
bigint user_id "FK, NOT NULL"
decimal(10,2) total_amount "NOT NULL"
varchar(20) status "NOT NULL"
timestamp created_at "NOT NULL"
}
orderitems {
bigint id "PK"
bigint order_id "FK"
bigint product_id "FK"
int quantity "NOT NULL"
decimal(10,2) price "NOT NULL"
}
categories {
bigint id "PK"
varchar(100) name "NOT NULL"
bigint parent_id "FK"
}
%% 关系定义
users --|{ orders : "一对多"
orders --|{ orderitems : "一对多"
products --|{ orderitems : "一对多"
categories --|{ products : "一对多"
在线教育平台 ER 图
erDiagram
%% 实体定义
students {
bigint id "PK, NOT NULL"
varchar(20) student_no "NOT NULL"
varchar(50) name "NOT NULL"
varchar(100) email "NOT NULL"
date enrollment_date ""
}
courses {
bigint id "PK"
varchar(20) course_code "NOT NULL"
varchar(200) title "NOT NULL"
bigint teacher_id "FK"
decimal(3,1) credits ""
}
teachers {
bigint id "PK"
varchar(20) teacher_no "NOT NULL"
varchar(50) name "NOT NULL"
varchar(50) title ""
varchar(100) department ""
}
enrollments {
bigint id "PK"
bigint student_id "FK, NOT NULL"
bigint course_id "FK, NOT NULL"
timestamp enroll_time ""
decimal(5,2) grade ""
}
%% 关系定义
teachers --|{ courses : "授课"
students --|{ enrollments : "选课"
courses --|{ enrollments : "被选"
Python 代码示例
from diagram_generator import ERDiagramGenerator
solution = {
"project_name": "电商平台",
"database_design": {
"tables": [
{
"table_name": "users",
"columns": [
{"column_name": "id", "data_type": "BIGINT",
"is_primary_key": True},
{"column_name": "username", "data_type": "VARCHAR(50)"},
{"column_name": "email", "data_type": "VARCHAR(100)"}
]
},
{
"table_name": "orders",
"columns": [
{"column_name": "id", "data_type": "BIGINT",
"is_primary_key": True},
{"column_name": "user_id", "data_type": "BIGINT",
"is_foreign_key": True}
]
}
],
"relationships": [
{"from_table": "users", "to_table": "orders",
"relationship_type": "1:N"}
]
}
}
generator = ERDiagramGenerator()
mermaid_er = generator.generate(solution, format='mermaid')
print(mermaid_er)