技术与工程已解决
数据库的表、主键、外键和 migration 是什么?
理解关系型数据库的最小结构,并用迁移保证各环境可复现、可审计。
问题正文
刚接触数据库时,我分不清表、主键、外键和 migration 的作用。
开发环境可以直接改表,为什么生产环境不建议手工修改?
理解关系型数据库的最小结构,并用迁移保证各环境可复现、可审计。
问题正文
刚接触数据库时,我分不清表、主键、外键和 migration 的作用。
开发环境可以直接改表,为什么生产环境不建议手工修改?
ANSWERS
回答内容
表存放同类记录,主键唯一标识一行,外键表达表之间的关联。migration 是可版本控制的结构变更脚本,让开发、测试和生产按同样顺序演进。
先设计稳定主键和必要的非空、唯一约束。
用外键表达真实关系并明确删除策略。
每次结构变化写 migration,在测试环境先运行。
生产执行前备份、评估锁表影响并准备恢复方案。
CREATE TABLE users (
id bigint PRIMARY KEY,
email text UNIQUE NOT NULL,
created_at timestamptz NOT NULL DEFAULT now()
);生产库手工改表无法被其他环境复现,也缺少审查和回滚依据。
ORM 的自动同步不能替代生产迁移的可审计历史。
PostgreSQL Tutorial:https://www.postgresql.org/docs/current/tutorial.html
PostgreSQL:Constraints:https://www.postgresql.org/docs/current/ddl-constraints.html