sqlのカラムの命名規則について


groupsテーブルとusersテーブルがあったとします。

groupsテーブルのカラムが、  
・ id  
・ group_id  
・ name

idがuuid、group_idがユーザーが見ることができるidになっています。

usersテーブルのカラムが  
・ id  
・ user_id  
・ group_id  
・ name

idがuuid、user_idがユーザーが見ることができるid、group_idがgroupsのidに紐づいています。

この場合、usersのgroup_idがgroup_idではなくidに紐づいているので、  
とてもややこしいと感じます。

こういった場合はどのように名前をつけるべきでしょうか。




ツールの制約もあるでしょうが、主キーは何を表すものかが分かるように修飾することをすすめます。

「ユーザーが見ることができる ID」は、name と同じくリレーションシップに意味のない文字列と受取りました。この名前を工夫すれば理解しやすくなるでしょう。

たとえば、下記のように変更してはどうでしょうか。

[code]

    groups
    - group_id (←id)
    - id_friendly (←group_id)
    - name
    
    users
    - user_id (←id)
    - group_id
    - id_friendly (←user_id)
    - name
    
[/code]




「異なる意味なのに同じ名前」がややこしさの原因なので、「異なる意味なら異なる名前」になるようにするようにすればよいわけですが、これをどうするかはアプリケーション全体を見ないと決められない話です。

* * *

groupsのgroup_idの名前を変えるのが自明で短絡的な方法ですが、group_idが真にIDなのであればリレーションをそっちに張るとか、それならidいらないのではとか、IDじゃないのであればgroup_idとは一体何者でそれにふさわしい名前は何かとか、別の視点でgroup_idが既存の名前付けルールにより決まる名前なのであればそのルール自体見直さないといけないのでは、とか、質問の内容だけでは考えようがないですし、考えられるための材料を質問に記載するのは難しいでしょう。

