初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-01-23 12:54:15

カルヴァドス
Guest

テーブル構成(正規化)について

お世話になっております。
win7 FMp12adv 使用中です。

基本的なDBの構成方法について皆様のご意見を伺いたく、質問させて下さい。

現在私の職場で、日々の業務日報を記入、印刷して提出・保管をしております。業務日報はFMで作成したものです。

しかしながら現状では若干使い勝手が悪いため、業務日報の構成を考え直し、作り直すことにしました。

現在の構成ですが、大雑把に
1.メインとなる印刷用の業務日報テーブル
  ※ただし、只の印刷用レイアウトというわけではなく、このテーブルに直接記入する項目もある。
2.個別業務の日報テーブル(業務の大分類)①~⑤
となっております。

業務にはおおまかな大分類が①~⑤とあり、それぞれに
①の業務A、B
②の業務C,D,E
③の業務F,G
④の業務H,I,J
⑤の業務K,L
などと分類ごとの業務があります。拠ってこれらの大分類ごとにテーブルを作成し、個別業務の日報テーブル①~⑤として使用しているわけです。
ただし、ここで若干面倒なことに、ある特定の業務、例えば仮に業務Gだとすると、基本的には分類③なのですが、ごくたまに②に分類されることもあるのです。
現状では、上述したように完全に①~⑤と大分類でテーブルを分け、②で行った業務Gであっても、③に入力してもらっています。

現状での問題点は大きく二つです。

・分類が曖昧な業務を行った時に、人によってはどこに入力したらよいのかわからない事があるといったUIについての不備。
・メインとなる印刷用テーブルに各個別業務①~⑤をポータルで表示しているが、印刷用に一枚で納めなくてはならないため、予めそれぞれの業務を表示できる範囲を設定しなくてはならない。

前者は、分かる人は分かっているのですが、みんなが使いやすいように、という意味ではこのままのUIではよくないことは明白です。また、記入漏れも生じやすくなってしまいます。
後者は、例えば分類①の業務はポータル2行分、②は5行分など表示する行数を決めてある、と言った意味です。当然ですが、この場合規定行数を超えた分の各個別業務はメインテーブル側には表示されません。入力さえしっかり行ってもらえればデータ自体は各テーブル①~⑤内に残りますが、印刷上は全ての業務を表示出来ていないことになります。

そのため、いっそこのような業務分類を無くした方がいいのか悩んでいます。理想的には、ある一種類のポータルで、上から業務を並べて表示させることです。この方が無駄がなく、すっきりすると思います。表示順は任意の順番でソートすればよいかと思っております。

ではそのためにどうするか、ですが、

1.各分類①~⑤のテーブルを破棄し、すべて同一のテーブル内で入力させる。
2.分類①~⑤は残し、これらのテーブルから直接メイン業務日報テーブルにポータル表示するのではなく、例えば緩衝テーブル的に業務まとめテーブルなどを作成して、一旦そこに各個別業務のデータのうち必要なものだけをインポートして、このまとめテーブルからメインテーブルにポータル表示させる。

等の方法が考えられると思われます。他にもあるかもしれませんが、もしいい案がありましたら是非ご指導ください。
とりあえず現状私が思いつく限りではこのくらいです。

1.はシンプルですが、
・各個別分類の業務集計等を行う場合に手間がかかることが予想されること
・分類ごとに氏名や年齢、行った業務を入力するのは共通だが、分類によっては使った器材の種類を入力したりなど、それぞれ独特の入力項目が存在するため、こういったフィールドの扱いを考えなければならないこと
・氏名、年齢などのフィールドは共通で、各分類ごとの独特項目はそれぞれレイアウトを分けて使うようにすれば良いとは思うが、単一テーブルのため各分類の区分けが大変になりそうであること
などがネックになるかと思われます。
2.は個別テーブルでデータを保存できるので上記のネックはありませんが、
・上手な構成やスクリプトを考えないとデータをうまくインポートさせる事が出来ない(但しスクリプトさえうまく組めば実行自体は可能)
・UIを練らないと結局かえって入力方法等が分かりづらくなり、メインテーブルへの表示漏れなどが生じる可能性がある
など、システム上の不具合が発生しやすいと思われます。また、もともとの問題であった分類しづらい業務をどこに入力するか、が解決されません。
もっとも、これに関してはいっそのこと、分類しづらい業務をあえて分類⑥として強制的に分けるという方法もなくはありません。


さて、皆様はこのような時どのような手段が最も望ましいとお考えでしょうか。
DB作成以前の正規化の段階ではありますが、方向性を決定する重要な事ですので皆様のご意見を伺いたく存じます。

長文になってしまったことをお詫びするとともに、皆様のご意見をお待ちしております。よろしくお願いいたします。

#2 2014-01-23 13:05:15

Shin
Member

Re: テーブル構成(正規化)について

1日報1レコードとするテーブルを作り、日付、人などの共通項目を入力させます。(管理番号を作っておきます)
そのテーブルから、業務毎のテーブルへ管理番号でリレーションを張ります。
別に、業務分類のフィールドを作ります。
業務毎のレイアウトを作り、その中に、業務テーブルのフィールドを配置しておきます。タブコントロールで行なってもいいと思います。

印刷するときに、業務Gが②に分類された時の印刷方法などの例外処理のみを考えればいいでしょうね。

Last edited by Shin (2014-01-23 13:05:53)

Offline

#3 2014-01-24 11:12:07

カルヴァドス
Guest

Re: テーブル構成(正規化)について

Shin様、返信有り難うございます。
何点かご質問させてください。

Shin wrote:

1日報1レコードとするテーブルを作り、日付、人などの共通項目を入力させます。(管理番号を作っておきます)

これは、例えば今メインとして使用している印刷用のメイン業務日報テーブルに、日付・氏名等の共通項目フィールドを作成する、ということでしょうか。
それとも新たに入力専用のテーブルを用意する方がよいのでしょうか。

Shin wrote:

そのテーブルから、業務毎のテーブルへ管理番号でリレーションを張ります。

日付・氏名等共通項目を入力させるテーブルから業務ごとのテーブル(①~⑤?)へリレーションということですよね。すると、以下の

Shin wrote:

別に、業務分類のフィールドを作ります。
業務毎のレイアウトを作り、その中に、業務テーブルのフィールドを配置しておきます。タブコントロールで行なってもいいと思います。

この部分は最初に作った氏名等の共通項目を入力するテーブルに業務分類フィールドあるいは業務分類ごとのタブコントロールを配置する、ということでしょうか。この場合、各業務ごとのテーブルの役割はどうなるのでしょう…。

質問ばかりで大変申し訳ありません。どうにも手前の理解が追いつかないようです…。恐縮ではございますが、ご回答いただけましたら幸いです。

#4 2014-01-24 15:02:00

Shin
Member

Re: テーブル構成(正規化)について

全体の運用がわからないのと、現状の全体構成がわからないので、何とも言えませんが。

現在、メインで動いているテーブルがあれば、それを流用できるか、と思います。
その中に、業務区分のフィールドを作ります。これは、業務内容と完全な1:1の関係に無いので、分岐用のフィールド、という意味合いのみです。
現在の業務1~5のテーブルは、入力内容を保存しておくだけの役割です。全てのフィールドをメインに持ってきてもいいのでしょうが、無駄が出ますので別テーブルで管理します。細分して、業務A~Lのテーブルとしてもいいかもしれません。

Offline

#5 2014-01-24 15:45:20

カルヴァドス
Guest

Re: テーブル構成(正規化)について

Shin様 度々有り難うございます。

Shin wrote:

全体の運用がわからないのと、現状の全体構成がわからないので、何とも言えませんが。

現在、メインで動いているテーブルがあれば、それを流用できるか、と思います。
その中に、業務区分のフィールドを作ります。これは、業務内容と完全な1:1の関係に無いので、分岐用のフィールド、という意味合いのみです。
現在の業務1~5のテーブルは、入力内容を保存しておくだけの役割です。全てのフィールドをメインに持ってきてもいいのでしょうが、無駄が出ますので別テーブルで管理します。細分して、業務A~Lのテーブルとしてもいいかもしれません。

言葉が足らず、また説明下手で大変申し訳ありません。お手数をおかけしております。
補足で説明させていただきます。

まず、各業務ごとのテーブル①~⑤にそれぞれ氏名 年齢 業務内容 開始時間 終了時間 など、必要な各フィールドを用意しております。
現状ではメインのテーブルには各業務ごとのテーブルで入力したもののうち、氏名 年齢 業務内容 開始時間 終了時間 等のフィールドをポータルで表示させております。すなわち、各フィールドの入力内容は完全にテーブルごとに独立して管理している状況です。
リレーションはまだ初期のFMに不慣れだったころの名残で、恥ずかしながら日付で行っている状態です。この点はご指摘の通り管理番号等キーフィールドでのリレーションに変更しようと思います。

Shin様のお考えは、
・氏名など各業務に共通していて、なおかつメインテーブルに表示させるようなフィールドはメインテーブル側で用意する。
・メインテーブルで用意した共通項目フィールドを各業務①~⑤のテーブルに配置する
・メインテーブルに各業務別のレイアウトを用意する
・業務テーブル①~⑤で独自に必要なフィールド(これは①~⑤のテーブルでそれぞれ用意する)があるならそれを各レイアウトに配置する。
・業務分類の分岐は分類フィールドなどでレイアウト変更するなり、タブコントロールにするなりやりやすい様にすればよい
…とおっしゃられていると解釈してよろしいでしょうか。

以上、お手数ではございますが、解釈が間違っているようでしたらご指摘願います。

#6 2014-01-24 16:16:39

Shin
Member

Re: テーブル構成(正規化)について

新たな疑問が。
日報は、個人単位のものですか、部課などの単位のものですか。
業務A~Lを入力する際に、入力内容は、業務内容 開始時間 終了時間 などの共通な内容のみで、業務独自のものはないのですか。

Offline

#7 2014-01-24 16:40:16

カルヴァドス
Guest

Re: テーブル構成(正規化)について

Shin様 お手数おかけしております。

Shin wrote:

新たな疑問が。
日報は、個人単位のものですか、部課などの単位のものですか。
業務A~Lを入力する際に、入力内容は、業務内容 開始時間 終了時間 などの共通な内容のみで、業務独自のものはないのですか。

各業務毎の①~⑤のテーブルについては、1レコード1人の個人データです。
メインテーブルに関しては日付単位のレコードとなっております。
業務独自の内容ももちろんあります。例えばある業務Lには使った器材の種類やメーカー名などを入力する、といったものになります。

他にご説明しておいた方がよろしい項目等ございましたらご指摘ください。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.019 seconds, 7 queries executed - Memory usage: 548.87 KiB (Peak: 569.41 KiB) ]