命名作为mysql表主键的列的最佳实践是什么?我见过两种方式:
我原以为id就足够了,因为你仍然可以通过选择一个句点和表名继续列来唯一地识别列(即对于表'cars'中的列'id',你可以选择它作为cars.id)
还是我过分思考这一切?
答案 0 :(得分:5)
我通常将它们命名为[tblname] _id。原因很简单。假设我有两张桌子:
member
member_id
member_alias
...
post
post_id
member_id
post_text
...
现在我可以使用MySQL的USING语法加入它们,并为每个连接保存几个字符:
SELECT post.*, member_id, member_alias FROM post
INNER JOIN member USING (member_id)
当然,这一切都是主观的。
答案 1 :(得分:2)
注意您可以随意命名列(在允许的名称范围内),在评估最佳名称选择时,请考虑:
关于1,请考虑:
关于2,考虑到随着您的架构的发展,什么是主要的可能变成外来的。什么是可能变得很多。仅因为基数更改而重命名列有帮助吗?
最后,请考虑单列主键并不总是人为键。在这个例子中,它实际上可能是一个外键(1-1关系):
任务{task_id,task_created_date} - 在 task_created_date
上创建了 task_id 的任务TASK_DUE {task_id,task_due_date} - task_id 的任务到期 due_date
答案 2 :(得分:1)
我对当前表的主键使用“ID”,对外键字段使用tableName_id,但通常归结为个人偏好。
我曾在使用tblMyTable作为表名的公司工作,然后将其用作表中每个字段的前缀。我不喜欢这样做。
答案 3 :(得分:1)
我总是去tablename_id。这样我可以使用USING。
另外,如果你是坏的并且没有在多表连接中指定表别名,那么你的sql会更加清晰。