以下是我在为表命名时尝试遵循的三项最佳实践:
- 不要使用复数形式来命名表(比如 "users")
- 不要使用保留关键字来命名表(比如 "user")
- 不要给表名添加前缀,如 "tbl" 或其他对象类型前缀
在考虑了这些最佳实践之后,您建议如何为存储用户身份验证信息的表命名?
以下是我在为表命名时尝试遵循的三项最佳实践:
在考虑了这些最佳实践之后,您建议如何为存储用户身份验证信息的表命名?
我通常使用类似于 member 或 account 的名称,具体取决于应用程序。尽管如此,如果您使用现代设计工具和原则(例如,具有面向对象代码库的数据库抽象层或 ORM,将业务逻辑与数据访问分离),那么表命名变得相当无关紧要。您的开发人员应该只通过一个定义良好的接口来访问数据库,而不是手写需要知道表名的 SQL。例如,您可以将表命名为 account,但通过名为 User 的对象映射访问它。您的开发人员不应该考虑表格,而应该考虑访问对象,这些对象不会对命名产生同样的限制:
$user = new User($username);
$user->authenticate($password);
不要使用保留字、带引号或转义的单词作为数据库表名。
如果你真的想这样做,那么你需要转义这些名称:
user
"@Table(name = "\"user\"")
我强烈不建议在数据库表名中使用复数形式,如USERS
。这是一种不好的做法,违反了 SQL 命名约定。数据库表名需要是单数名词。
我建议使用ACTOR
作为存储用户详细信息的数据库表名。这个名字清晰、易懂且足够通用。它既可以用于公司,也可以用于个人(不像例如PERSON
,只适用于个人而不适用于公司)。
使用同义词。使用哪个词取决于您在表中存储的内容,但是账户
似乎是一个很好的替代方案。如果您想使用变体用户
,我会违反您提到的第一个指南,而不是第二或第三个:用户
足够常见,因此不一致性基本上可作为助记符。
即使我不使用框架,我仍然遵循CakePHP规则:
按照惯例,表名应该是小写的、复数形式,并用下划线分隔多个单词。例如,模型名称为 Ingredient
时,期望的表名为 ingredients
。模型名称为 EventRegistration
时,期望的表名为 event_registrations
。
Meta
信息中覆盖表名。 - Tony