命名作爲mysql表主鍵的列的最佳做法是什麼?我已經看到了兩種方式:命名MYSQL id列
- 「身份證」
- tableName_id(其中tablename是代替表的名稱)。
我以爲只要id就足夠了,因爲你仍然可以通過選擇由一個句點和表名(即表'汽車'中'id''列'')的列來唯一標識列,你可以選擇它作爲cars.id)
或者我過度思考這一切?
命名作爲mysql表主鍵的列的最佳做法是什麼?我已經看到了兩種方式:命名MYSQL id列
我以爲只要id就足夠了,因爲你仍然可以通過選擇由一個句點和表名(即表'汽車'中'id''列'')的列來唯一標識列,你可以選擇它作爲cars.id)
或者我過度思考這一切?
我通常將它們命名爲[tblname] _id。原因很簡單。比方說,我有兩個表:
member
member_id
member_alias
...
post
post_id
member_id
post_text
...
現在我可以使用語法MySQLs加入他們的行列,並保存一些字符爲每個加盟:
SELECT post.*, member_id, member_alias FROM post
INNER JOIN member USING (member_id)
當然,這是所有主要是主觀的。
我使用「ID」作爲當前表的主鍵和tableName_id作爲外鍵字段,但通常歸結爲個人偏好。
我曾在使用tblMyTable作爲表名的公司工作,然後將它用作表中每個字段的前綴。我不喜歡這樣做。
我總是去tablename_id。這樣我可以使用USING。另外,如果你不好,並且沒有在多表連接中指定表別名,那麼你的sql會稍微更清晰一些。
除了作爲一個SQL數據庫之外,MySQL不會帶來任何特定的考慮因素。所以問題變成了什麼命名約定應該用於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
咦是因爲? 'tableName_id'通常用於外部關係字段,而不是表格本身,是嗎? – 2010-11-01 11:12:03
這已被問了很多次。通常這些問題只會導致火焰。 – Quassnoi 2010-11-01 11:12:44