generated at
DBの中間tableの命名




Hoge Piyo という個別の概念があって、これらの関係を定めたtableに対して、
hoges_piyo (n:1)とか hoge_piyos (1:n)という命名をするのは割と一般的(?)らしい
ちがった
前者も piyo_hoges とするらしい
常に has_many とするらしい
この時点ですでにわかりにくいと思うが、「DBの世界ではそうする」といったん無理やり納得してみる
さらにORM系の何かを使っている時、この中間テーブルを表すEntityのclass名が、 HogePiyos になる
これがめちゃくちゃ分かりづらい
e.g. ProductCategory
とあるフレームワークがこういう命名をしていた
これはProductとCategoryの中間テーブルをEntityにしたもの、という意味だが、
初見の解釈では、「普遍的なCategory」があって、もう少し詳細化した概念として「Product(における)Category」があるのかとおもった
つまり、 ProductCategory は「関係」であって、「Category」ではない
中身を見ればわかるが、中身を見ないとわからない

このやり方に従った場合、以下のようなものとはどう区別するの?
hoge piyo hogeとpiyoの関係 hogeなpiyo てきな概念があるとき
e.g. CategoryとProduct
hoge_piyos hogePiyos とかにすんのか?
1つの概念だが複数単語のやつがあるとき
e.g. programming language
この規則のもとでまさか proguramming_language とは名付けられないだろう
programmingLanguage とかにすんのか?

とはいえ、「関連の意味」は考えるのも難しいし、パット見でどれとどれの関係なのかわかるか微妙な気もする
理想的には
hoges <|> piyo みたいな、何かしらの記号を中間に置くとか(無理だが)、
hoges_piyo_relation みたいな、「関係やぞ」というのを良い感じに明示してほしい

この辺をググったときにPHPとRubyの話ばかり出てくるな
「フレームワークの意向」とかはどうでも良くて、もっと一般的に「良いもの」の議論を読むなりしたい