知识卡片
代理键的设计原则
内容
数据库表的主键应该优先选用代理键(surrogate key)——一个不携带任何业务语义、只用来 唯一标识某一行数据的值(比如自增整数),而不是直接用业务属性(如邮箱、身份证号)做主 键。原因在于业务属性会随需求变化:一旦某个”看似不变”的业务字段后来允许重复或需要修改, 用它做主键就意味着要牵动所有外键引用。代理键把”标识一行”和”业务含义”两件事彻底分开, 让主键本身永远不需要因业务规则变化而改变。发散:这本质上是单一职责原则在数据建模层面 的体现——标识符只负责标识,不应该同时承担表达业务含义的职责。
参考来源
《精通Hibernate》第2章《映射简介》