あるオブジェクトに付随するファイルをサーバで保管する際のディレクトリの構造について考えてみました。

あるオブジェクトに付随するファイルをサーバで保管する際のディレクトリの構造について考えてみました。
 

主キーが、1つの場合

方法① 特定のデータだけを保存させる場合

例
sales -------- my_shop.log
            |- donald_shop.log
書式
field_name --- object_name.log

利点 ... パスの記述がラク
 

方法② 他のデータも保存させる場合

例
shops -------- my_shop ------- sales.log
            |               |- attendance.log
            |               |- power_usage.log
            |
            |- donald_shop --- sales.log
                            |- attendance.log
                            |- power_usage.log
書式
class_name --- object_name --- field_name.log

利点 ... クラス構成と同じようなファイル構成にできる。
欠点 ... ファイル管理が面倒くさい。
 

主キーが、2つ以上の場合

ただし、木構造になっている場合に限定されます。
会社テーブルと部署テーブルの2つが存在し、部署テーブルは、会社フィールドと部署名フィールドで複合主キーを構成しているとします。
方法① 特定のデータだけを保存させる場合

例
sales --------- hello_company --- marketing_team.log (* Hello company's marketing team)
            |
            |-- nihao_company --- marketing_team.log
            |
            |-- hola_company ---- marketing_team.log
書式
field_name ---- object_name   --- object_name.log
                (Class1)          (Class2)

 

方法② 特定のデータだけを保存させる場合

例
companies ----- nihao_company --- teams -------- sales_team_1 ----- sales.log
             |                                |                  |- attendance.log
             |                                |                  |- power_usage.log
             |                                |   
             |                                |-- sales_team_2 ---- sales.log
             |                                                   |- attendance.log
             |                                                   |- power_usage.log
             |
             |- hello_company --- teams -------- sales_team_1 ----- sales.log
                                                                 |- attendance.log
                                                                 |- power_usage.log


書式
class_names --- object_name ----- class_names --- object_name ------ field_name.log
(Class1)                          (Class2)


いろいろ書いて思った。データベースに保存すればええやか(。-`ω-)ンー というのもあったのですが、ユーザにある複合キーの1つの名前がついた大量のログファイルを FTP でアップロードしてもらうことを考えた時に、もういっぽうの主キーはディレクトリで指定してもらったら、楽なんじゃないかなと思い、こんなことを考えてました。