跳到主要内容

er-modeling

ER 建模与约束

实体/属性/关系建模,主外键与基数约束,演进与迁移策略。

要点

  • 一对一/一对多/多对多(联结表);
  • 可空性与约束表达:NOT NULLCHECKFOREIGN KEY
  • 变更与迁移:向前/向后兼容、蓝绿发布策略;
  • 历史数据:审计字段与软删除。

多对多(带关联属性)

CREATE TABLE students (id BIGINT PRIMARY KEY, name TEXT NOT NULL);
CREATE TABLE courses (id BIGINT PRIMARY KEY, name TEXT NOT NULL);
CREATE TABLE enrollments (
student_id BIGINT NOT NULL,
course_id BIGINT NOT NULL,
enrolled_at TIMESTAMP NOT NULL,
grade NUMERIC,
PRIMARY KEY (student_id, course_id)
);

架构演进策略

  • 版本化迁移:先加列/双写/回填,再切换读路径,最后删除旧列;
  • 回滚预案:保持向后兼容的读写,必要时灰度关闭新路径。