Q&A

回答の並べ替え:
投稿新規に質問を投稿する

ご相談:要素数が変わるデータの取り扱いについて

hoge hoge

2024-09-04 09:15

こんにちは

新規に人事評価ツールを作成しておりまして、テーブル設計で悩んでおります

評価項目や評価項目数が、毎年変わる可能性があるため、
保守性や記述ロジックの簡素化を目的に、
評価項目ごとにカラムを作るのではなく、
一つのカラムに、複数の評価項目の値(評価結果)をcsv形式などで格納して、
運用したいなぁと考えております

<やりたいこと(概念)>
評価項目が3つ(評価項目A、評価項目B、評価項目C)がある場合、
[評価項目A]、[評価項目B]、[評価項目C]と3つカラムを作るのではなく、
[評価項目]という1つのカラムだけを作成して、
そのカラムに、すべての評価項目の値をcsvなどで突っ込む。
データを読み書きする際に、その値を評価してから、
シート(画面)に展開したり、テーブルに戻す

<例>
評価項目Aの値:3
評価項目Bの値:5
評価項目Cの値:2
→[評価項目]のカラム(型は文字列)に、「3,5,2」と入力する
 または「評価項目A/3,評価項目B/5,評価項目C/2」等と入力する

<悩んでいること>
このように一つのカラムに複数の値を持たせても、
CELFのアクションセットの部品を見させて頂いたところ、
 ・配列格納のようなものがない
 ・csvや特定文字区切りのデータを評価するような処理を書くことができなそう
でして、
CELFとしては、データ取得後に、データを細かく処理・評価することは難しいのではないかと悩んでおります

よろしくお願い致します

hoge hoge
質問者のhogeです

nocs様、Yexiongmao様
ご回答頂きまして、ありがとうございました。

-----
>nocs様

ありがとうございます
GUIと関数を駆使することで「可能」ということが良くわかりました

プログラマーから見ると珍しい実装っぷりではあるので、
可読性を考慮しながら、実装を検討したいと思います
(VBAでも関数は入れ込むことありますが、珍しいかと)

やるとしたら、専用のシートを作成して、
DBアクセスに対してワンクッション置くような、
若干汎用性のある仕組みにすると思います
(ストアドプロシージャやPL/SQLのような)

ありがとうございます

-----
>Yexiongmao様

ありがとうございます
仰る通り正規化の程度の問題で解決できることだと思いました

今回はDB設計というより、ノーコードやローコードの
スプレッドシートの延長で、データの持ちかたを考えていたため
「正規化」については、それほど考えていませんでした
言われてみれば仰る通りです

今、考えているのは以下のようなことですが、
これらも考慮して、楽で保守性の高いツールを作っていきたいと思います
 ・ローコードなので、第三者が見ても、できるだけシンプルにわかるような構造にしたい
  (あまりテーブル設計を複雑にしたくない、データ量が少ないので速度は気にしない)
 ・テーブルをcsvで落とすだけで何のデータかわかるようにしたい
  (管理用にデータを取得する用の機能を作る工数をなくしたい)
 ・履歴テーブルで更新履歴も管理したいため、できるだけ同じような仕組みを使いまわしたい
 ・ロールバック機構はあると思うけれど、仕様を確認する必要はある
  →追記:CELFのヘルプページに記事がありました
   https://cloud.celf.jp/celf-help/ja/texts/action_use/control/control_transaction/control_transaction.html
ありがとうございました
Yexiongmao Yexiongmao
こんにちは。

人事評価テーブルは、プライマリキーとして、「年+月+社員コード」などが考えられます。
図のようなテーブルを作成し、評価項目と値を別テーブルに切り離します。
RDBの扱い方として、正規化と呼ばれる方法でDBの冗長性を削減させます。
評価値なども項目の値から計算出来るのなら、一緒に格納しておきます。
CELFではデータはRDBに格納するのが基本です。
RDBに格納したデータは、CELFで余程の事でない限りいかようにも処理できるでしょう。
nocs nocs
こんにちは

配列格納のようなものはありませんが、
データを一度セルに出力後に、繰り返しのアクションと検索の関数を組み合わせたアクションを組めば可能かと思います。

下記Q&Aが参考になりそうですのでご確認ください。
https://developer.celf.biz/questions/13685/