Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在列(键)表中使用id的正确方法是什么-前缀还是后缀_Mysql_Database - Fatal编程技术网

Mysql 在列(键)表中使用id的正确方法是什么-前缀还是后缀

Mysql 在列(键)表中使用id的正确方法是什么-前缀还是后缀,mysql,database,Mysql,Database,我有id、用户名、电子邮件和密码列的表用户。 我还有一个与表用户相关的表 一些开发人员使用前缀方式(列id\u user),一些开发人员使用后缀方式(列user\u id) 哪种方法是正确的,为什么是正确的。没有正确的方法,这只是口味的问题。我会在后缀上使用前缀,因为它会将名称中更有意义的部分放在第一位,使读取速度稍快一些(或者我可以想象得到)。使用ID是一种SQL反模式,不应该使用。这比使用tablename-ID方法更容易引起问题,因为人们在dbs中使用自然连接,允许他们连接到错误的ID,或

我有id、用户名、电子邮件和密码列的表用户。 我还有一个与表用户相关的表

一些开发人员使用前缀方式(列
id\u user
),一些开发人员使用后缀方式(列
user\u id


哪种方法是正确的,为什么是正确的。

没有正确的方法,这只是口味的问题。我会在后缀上使用前缀,因为它会将名称中更有意义的部分放在第一位,使读取速度稍快一些(或者我可以想象得到)。

使用ID是一种SQL反模式,不应该使用。这比使用tablename-ID方法更容易引起问题,因为人们在dbs中使用自然连接,允许他们连接到错误的ID,或者在复杂的sql中报告很容易连接到错误的ID(从与您连接到的表不同的表)如果使用tablename id,则会出现语法错误。此外,PKs和FKs使用相同的名称更有意义。确切地知道你要加入的是什么会使你变得更简单

使用IDTablename或tablenameID是一种选择。在我访问过的所有数据库(在我的职业生涯中有数千个)中,大多数似乎更喜欢tablenameId。无论选择什么,都要通过数据库保持一致。使用数据库时,有些表使用Id,有些表使用tablenameId,有些表使用tablename\u Id,有些表使用Id\u tablename,有些表使用IDtablename,这是非常烦人的。模式一致性在命名对象时比任何其他因素都重要。

记录如下:

我在这里收集有关命名约定的信息

到目前为止,我发现user\u id(或者UserId,如果数据库允许带有大小写的列)比id\u userIdUser)使用得更多。然而,两者都是有效的


此外,甲骨文过去常说正确的方法是用户id pk,但我认为这种思想已经过时。

@Xander不同意。随着查询复杂性的增加,您需要使查询具有可读性,这样您就不会返回并试图找出哪些内容与哪些内容相关。但我也不认为这是一件如此重要的事情,需要转化为一场大规模的哲学之战。@swasheck使用适当的别名解决了这个问题,是的,我也不参与大规模的哲学之战……这不是一个可以回答的问题。没有正确的答案,这完全取决于偏好。我见过的最常见的是{tablename}\u id。但它远不是通用的。谢谢!我讨厌将“id”视为表中的一列,在表中正确的列名应该更像_id或类似的东西。为清楚起见,外键名称应与原始表上的主键相同。