mysql - 多对多关系表命名

标签 mysql database-design naming

我想知道 MySQL 表的命名是否有某种标准?我目前有两张表,一张称为“用户”,一张称为“培训”。因为我需要它们具有多对多关系,所以需要创建一个将这两者互连的表,但我无法想到除用户/培训之外的正确命名。

最佳答案

没有官方的最佳实践,但有一些经过充分测试的启发式方法...... 如果我的 ORM 或其他东西不强制执行它自己的标准,我喜欢使用下划线分隔符号,但始终按字母顺序排列。另外,我总是使用单数作为我的类和表名,以避免纯粹化。多对多本质上你无法分辨哪个“拥有”另一个,所以字母顺序规则只是让它变得更容易。

user
address
zebra
address_user
user_zebra

一套简单的规则,对于如何/什么命名事物不会产生任何困惑,并且易于解释。

更进一步,我建议除非有非常具体的原因不允许这样做:

  1. 表名和列名始终使用小写(这样,从区分大小写的文件系统转移到不区分大小写的文件系统时,您就不会感到惊讶 - 不必记住驼峰式大小写也更容易)
  2. 命名表的主键(如果不是复合键)id
  3. 以 tablename_id 格式命名外键(如 user_id、zebra_id)

记住,只是指导方针,而不是教条。

这些指南将使您和您 future 的 dba 的生活变得更好。

关于mysql - 多对多关系表命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21239093/

相关文章:

python - 选择最小值和分组

mysql - 事务中的MySQL错误处理

mysql - MySQL 的主键应该只是 INTEGER 还是应该是 UNSIGNED INTEGER(适当的大小)?

postgresql - Select 或 create 语句中的数据库列

mysql - SQL 模式设计建议

c++ - 为什么 STL "empty"成员函数没有调用 "isEmpty"?

php - 在 laravel 5 中的数据库上显示 Blade 上的图像

sql - 如何让一个外键指向两个主键?

Java 队列 - 为什么 "poll"和 "offer"?

math - 如何命名范围为 0.0 到 1.0 的值?