什么是为MySQL表命名主键列的最佳实践?我见过两种方法:
- 'id'
- tableName_id(其中tableName用表的名称替代)。
我通常将它们命名为[tblname]_id。原因很简单。假设我有两个表:
member
member_id
member_alias
...
post
post_id
member_id
post_text
...
SELECT post.*, member_id, member_alias FROM post
INNER JOIN member USING (member_id)
MySQL没有特别的考虑因素,只是一个SQL数据库。所以问题变成了应该为SQL数据库使用什么命名约定。
请注意,您可以根据需要(在允许的名称范围内)对列进行任何命名,但在评估最佳命名选择时,请考虑以下几点:
关于1,请考虑以下几点:
关于2,请考虑,随着模式的演变,主要内容可能会变成外来的内容。一个可能变成很多。重命名列是否有助于基数更改?
最后,请考虑单列主键并不总是人工键。在这个例子中,它实际上可能是一个外键(1-1关系):
TASK {task_id, task_created_date} -- 任务 task_id 创建于 task_created_date
TASK_DUE {task_id, task_due_date} -- 任务 task_id 到期于 due_date
我在当前表的主键上使用“ID”,并在外键字段中使用“tableName_id”,但通常这取决于个人喜好。
我曾在一些公司工作过,他们使用“tblMyTable”作为表名,并将其用作表中每个字段的前缀。但我不喜欢这样做。
我总是使用tablename_id。这样我就可以使用USING。
另外,如果你在多表连接中没有指定表别名,你的SQL语句会稍微清晰一些。
tableName_id
通常用于外部关系字段,而不是用于表本身,对吧? - Pekka