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の話ばかり出てくるな
「フレームワークの意向」とかはどうでも良くて、もっと一般的に「良いもの」の議論を読むなりしたい