Prisma中关系命名的正确规范是什么?有哪些约定需要遵守?
Prisma Schema 关系命名最佳实践(针对你的场景)
通用命名规则前置说明
- 关系名的核心作用是唯一标识两个模型/同模型两个字段的关联逻辑,避免同模型多关系时冲突
- 下划线前缀是 Prisma 约定的隐式多对多关系专属标识,用来和普通一对多、显式自定义中间表的关系做区分,一对多/一对一关系不需要加下划线
- 关系名建议同时体现关联的两个角色/实体,避免单一侧的命名导致歧义
问题1:User 作为评论作者的一对多关系命名
推荐选择:CommentAuthor
原因:
- 清晰表明关联维度是「评论的作者」,不会和后续用户点赞、收藏评论的其他关联冲突
- 比泛化的
UserToComment表意更精准,比单字段的Author适用范围更广,不会和后续用户作为文章作者的关联命名冲突
其他选项排除原因:
UserToComment太泛,无法区分是发布评论还是点赞评论的关联Author太窄,后续如果加 User 和 Post 的作者关联会重名UserComments语义偏用户侧的字段名,不适合做双向关联的关系名
问题2:用户点赞评论的多对多关系命名
推荐选择:_UpvoterToComment、_DownvoterToComment
原因:
- 下划线前缀符合 Prisma 隐式多对多的约定,看到下划线就能快速判断是多对多关联
- 名称同时体现了两边的角色(点赞者 Upvoter、评论 Comment),表意清晰
相关规则说明:
- 下划线开头的规则只适用于多对多关系,一对多关系不需要遵守
- 下划线前缀的作用是区分系统自动维护的隐式中间表关联,和自定义的显式关联,避免命名冲突
其他选项排除原因:
- 不带下划线的
UpvoterToComment不符合多对多的约定,容易和一对多混淆 UserUpvoted、Upvoters只体现了单侧逻辑,不适合做双向关联的关系名
问题3:评论嵌套自关联的命名
推荐选择:CommentHierarchy(支持自定义命名的最优解)/ 可选范围内优先选ParentChildren
原因:
- 这是一对多自引用关系,不需要加下划线前缀
- 命名明确体现是评论的层级关联,不会和后续可能加的评论引用、评论关联回复等其他自关联逻辑冲突
- 如果只能从你给出的可选范围选,
ParentChildren优于其他选项:Parent/Children只体现单侧,CommentToComment太泛不知道关联类型
其他选项排除原因:
- 下划线前缀完全不需要,这不是多对多关系
CommentToComment无法区分是层级关联还是其他评论间关联逻辑- 单独的
Parent/Children语义太窄,后续加其他自关联会冲突
内容的提问来源于stack exchange,提问作者lumenwrites
相关产品推荐
相关产品推荐

