非ITのバックオフィスが頑張るシリーズです。
今回は組織図のお話です。
組織構造のDB設計について
組織図の標準フォーマット?
組織図を表現するフォーマットって標準化されたもの、あるんでしょうか?
Excel、PowerPoint、Visio、Wordあたりでゴリゴリ書くのが一般的なんですかねえ。
複数のSaaS製品を使用していると、組織図(組織情報)の設定が必要で、それぞれフォーマットも違います。
組織構造がDBにあって、それをベースに組織図が自動で作成されたり、各種SaaSのインポート用フォーマットを出力できたり、API連携できたらいいですよね。
MarkdownのMermaid記法とかだとデータベースと相性が良さそうな気もします。
As Is
当社の場合はPowerPointで作成した組織図を元に、各種データを手作業で作成しています。
- PowerPointで作成した組織図
- PowerPoint組織図を見ながらカオナビ用の所属情報csvに手作業で変換
- カオナビ用csvからfreee人事労務の部門一括インポート用csvに変換(わりと手作業)
- PowerPoint組織図を見ながらKickflowの組織図csvに手作業で変換
To Be
- DBに組織情報、人事情報が格納されている
- DBから組織図(PowerPoint他複数フォーマット)を出力できる
- 各種SaaSインポート用の組織情報CSVファイルが出力できる
- 各種SaaSと組織情報をAPI連携できる
組織図をDBで表現する
当社には社内用のRDBがありません。100人程度の会社ですし、RDBを持つのは管理コストのほうが大きい気もしますので、いったんGoogleスプレッドシートをDBとして作成していきたいと思います。
とはいえ、将来的にRDBに移行できるように、ある程度将来を見据えた設計にしていこうかと考えています。
シートをテーブルとし、スプレッドシート全体でひとつのDBとなるようなイメージです。
ではどのようにテーブル設計をしたらよいでしょうか。
テーブル設計
ちょうど良い記事を見つけましたので、参考にさせていただきました。
組織図をデータベースで表現する(ネスケラボ)
なるほど、「組織図など木構造のデータをDBに登録する際は、階層問い合わせを使用する構造にしよう」ということなんですねー。履歴系のカラムはもう少し検討する必要がありそうですが、いったんこの形のテーブルにしてみましょう。
ID | GroupName | ParentID | LeaderId | HistoryId |
---|---|---|---|---|
組織ID | 組織名 | 親組織ID | リーダーID | 履歴ID |
まずはこの情報だけあれば、組織の木構造が登録でき、各種SaaS用のCSVは作れてしまいそうです。
当社の場合はKickflowのCSVがこの形式に近いので、逆にここからインポートしてDBを作成してみます。