画er图需先标主键【pk】,再从子表外键画箭头指向父表主键,标注“1/n”关系类型,并在线旁注明级联动作如“→级联删除”,确保准确反映数据依赖与约束逻辑。

想一眼看懂主键和外键在表之间怎么连、谁指向谁、为什么不能乱删数据,就得画出清晰的关系图——不是随便拖两根线,而是要准确反映约束方向、基数和依赖逻辑。
先画主键:每张表的“身份证锚点”
打开绘图工具(如draw.io、PowerPoint或MySQL Workbench的ER图功能),新建一张空白画布。
为每张业务表画一个矩形框,框内顶部写表名,下方用加粗字体标出主键字段,并在字段名后标注【PK】。
【主键必须且只能标在一个字段或字段组合上,整张表不允许出现第二个PK标记】
例如:用户表 → “id【PK】”;订单表 → “order_id【PK】”;商品表 → “sku_code【PK】”。
再连外键:箭头必须从子表指向父表
找到子表中那个引用别人主键的字段,比如订单表里的 user_id。
从该字段出发,画一条带实心箭头的连线,精准指向被引用表的主键字段(如用户表的 id【PK】)。
箭头方向绝不能反——【外键永远在子表,箭头永远朝向父表的主键】,反了就代表数据依赖逻辑错误。
若一个字段同时是本表主键又是外键(自关联场景,如员工表的 manager_id 指向本表 id),则该字段需同时标注【PK】【FK】,并单独画箭头回指本表主键。
标注关系类型:一对一、一对多必须显式写出
第一步:观察连线两端的业务含义。如果子表外键字段允许重复(如多个订单对应同一个 user_id),那就是一对多。
第二步:在连线靠近父表一端写“1”,靠近子表一端写“N”——这是标准IDEF1X/Chen记法,表示“一个用户对应N个订单”。
第三步:若外键字段加了UNIQUE约束(如身份证号在用户表中既是主键又是其他表的外键,且只允许出现一次),才标“1:1”,否则默认不写“1:1”,因为无约束的外键天然支持一对多。
注意:不要在图上写“多对一”,这是冗余表述——箭头方向+“1/N”已完全定义关系,多对一只是对一对多的逆读。
补全约束行为:级联动作要用小字标注在线旁
方法一:如果数据库实际设置了 ON DELETE CASCADE,在连接线旁用灰色小字标注“→级联删除”。
方法二:若设的是 ON DELETE SET NULL,则标注“→置空”。
方法三:未设任何级联,仅靠数据库默认 RESTRICT 行为,则无需额外标注,但要在图例区注明“默认阻止删除”。
这一步不可省——图里不体现约束动作,开发查图时可能误以为能直接删父表记录。











