MySQL 表的命名约定

Posted

技术标签:

【中文标题】MySQL 表的命名约定【英文标题】:Naming conventions for MySQL tables 【发布时间】:2013-11-02 23:42:37 【问题描述】:

我想得到一些意见,因为我正在考虑为我的新应用程序创建结构并且我正在为表格的名称而苦苦挣扎,所以我想也许你可以给我一些想法。应用程序有用户,用户可以创建项目,而项目可以有多个关键字。所以用户与项目是一对多的关系,项目与标签是多对多的关系。

所以有表users 我想项目表应该是users_projects。但是关键字呢?应该是users_projects_keywords 吗?那么数据透视表呢,因为我认为将其命名为 users_projects_to_users_projects_keywords 或类似名称有点糟糕。我将不胜感激。

编辑: 我一直认为一对多的关系应该被称为 x_y ,其中 y 属于 x。这不是一个好习惯吗?

【问题讨论】:

我喜欢:项目、用户、projects_users。核心表有单字母别名 (p,u),链接表有两个字母别名 (pu)。链接表中的 user_id 列链接到用户表中的 user_id 列。 @Strawberry 但是这个项目表真的是核心表吗?因为它依赖于一对多的用户?我担心可能有两种项目具有不同的列,因此它们不能放在一张表中。比如开发项目和用户项目。 我只是在谈论我的基本命名约定。如果设计更复杂,那么命名模式可能需要更复杂来反映这一点。但不要为这些东西苦恼。练习会变得更容易。 【参考方案1】:

我会选择usersprojectskeywordsproject_keywords。我会使用外键来定义表之间的关系。例如,projects 将有一个列,例如 createdby_userid,引用 users.user_id 列。

【讨论】:

嗯,我一直认为一对多的关系应该命名为users_projects这个表中的user_id。在还有管理项目的情况下怎么办?然后我不能命名我的表项目,因为有这样的 user_projects 调用。嗯,这很难:)【参考方案2】:

一个想法:

可能有三个字典:

users 应该有id 和其他数据。 表projects 也是如此。 等表keywords

然后你创建“链接”(关系)表:

users_projects 与列id, id_user, id_project projects_keywordsid, id_project, id_keyword

编辑: 正如@Laurence 所提到的,将id_user 包含在projects 表中也许确实是合理的。

【讨论】:

以上是关于MySQL 表的命名约定的主要内容,如果未能解决你的问题,请参考以下文章

智一科技 约定 mysql

Laravel 中多对多关系中连接表的命名约定

大厂通用的MySQL开发规范设计,包括“存储引擎字符集 命名规则等公共约定”,“表设计约定”,“字段设计约定”,“索引设计约定”,“SQL约定”,“开发人员行为约定”

MySQL 有命名约定吗?

星型模式命名约定

mysql基本约定与命名规范