mysql - MySQL 有命名约定吗?

标签 mysql naming-conventions mysql-workbench

我是这样做的:

  1. 表名小写,使用下划线分隔单词,并且是单数(例如foofoo_bar
  2. 我通常(并非总是)有一个自动增量 PK。我使用以下约定:tablename_id(例如 foo_idfoo_bar_id 等)。
  3. 当一个表包含一个作为外键的列时,我只需从它来自的任何表中复制该键的列名。例如,假设表 foo_bar 具有 FK foo_id(其中 foo_idfoo 的 PK)。<
  4. 在定义 FK 以强制引用完整性时,我使用以下内容:tablename_fk_columnname(例如,在示例 3 中,它将是 foo_bar_foo_id)。由于这是一个表名/列名组合,因此保证在数据库中是唯一的。
  5. 我对列进行排序:PK、FK,然后按字母顺序排列其余列

有没有更好、更标准的方法来做到这一点?

最佳答案

我首先要说的是:保持一致。

我认为您在问题中概述的约定几乎就在那里。不过有几点评论:

我认为第 1 点和第 2 点很好。

第 3 点 - 遗憾的是,这并不总是可行的。想一想您将如何处理具有列 foo_idanother_foo_id 的单个表 foo_bar ,这两个列都引用了 foofoo_id 列。您可能要考虑如何处理这个问题。不过,这有点极端!

第 4 点 - 类似于第 3 点。您可能希望在外键名称的末尾引入一个数字,以适应多个引用列。

第 5 点 - 我会避免这种情况。当您想在以后从表中添加或删除列时,它几乎不会为您提供任何帮助。

其他几点是:

索引命名约定

您可能希望为索引引入一个命名约定 - 这对于您可能想要执行的任何数据库元数据工作都有很大帮助。例如,您可能只想调用索引 foo_bar_idx1foo_idx1 - 完全取决于您,但值得考虑。

单数与复数列名

在列名和表名中解决复数与单数的棘手问题可能是一个好主意。这个主题经常导致big debates在数据库社区。我会坚持表名和列的单数形式。那里。我已经说过了。

这里最重要的当然是一致性!

关于mysql - MySQL 有命名约定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899200/

相关文章:

sql - 对相关性和其他字段进行全文搜索排序

boolean - 命名约定 : What to name a boolean variable?

mysql - 根据一列数据合并MySQL中的2个表

mysql - 使用 MySQL Workbench 访问 Lightsail 实例的数据库

java - 如何将mysql与java连接用于html表单?

mysql - 单消费者-多线程 vs 多消费者

mysql - 从另一个表模型 rails 更新另一个表的列

c# - "Core"作为成员名后缀的含义

coding-style - 命名约定 : What to name a method that returns a boolean?

mysql - 有人可以告诉我 slugging percentage 查询有什么问题吗?