はじめてのデータベース:②簡単なRDBをAccessで作ってみる。

2020/12/09

  



✅Access?Excelじゃだめ?


さまざまなデータや結果を保存するだけであればExcelでも作れんことはない。

自分は実際Excelで記載されたデータをR(R Studio)で解析して学会に発表したこともあるけど

そもそも属性だけ抽出して使うような管理がExcelは苦手。いちいち手作業でデータを切り貼りするのは非常にめんどくさい。

しかも複数シートにわたって引用や関数、マクロを組みまくっているとExcelは異様に重くなる。(自作でコンシューマー機最高レベルのマシンパワーを確保していても異様に重い)

整理してデータを扱うために、加工に優れた形で整理整頓保存するためにAccessを使用→必要分だけExcelに出力して扱うのが便利。


・備考:ファイルメーカー

似たような機能を持つファイルメーカーでやらなかったのは、2つ理由があって

1つは『ちょっと使ってみよう』で使うには月額料金が高すぎるからです。体験版もありますが45日制限ですし、仮にうまくいったところで今の自分が自己負担で採用できるレベルを超えているので先がありませんでした。
(AccessはMicrosoft365に入っているし、なんなら2013のProfessional版にもAccessが入っているので無料で始められたのが大きい。)


もう1つは実装しようとした機能がすでに

職場巡視データベース – ELECTRIC DOC.

https://electricdoc.net/junshidb

ファイルメーカーのデータベースとして配布されていたからですね。こちらは自分が受講した産業医学基本講座でも紹介されていました。

これからフリーランスでガンガンやっていくならファイルメーカーの元も取れる可能性がありますが、流石に専属である自分にはそこまでの投資ができない…

と、いうことで今回はAccessで上記職場巡視データベースのパクリDBを作ります。



✅Accessの基本


テーブル・クエリ・フォーム・レポート この4つ。

所謂オブジェクトが基本。それぞれについてざっと解説しておくと



・テーブル

枠組みや見出し、属性を記録する。いわばデータそのものが記載されるエリア。

複数テーブル毎に独立してデータを保存していくことができ、複数のテーブルを連携させることも可能。


・フォーム

テーブルで作った枠組みに合わせ、データを入力に特化したところ。

記入しやすいようにレイアウトの調整などが可能で、基本的に行と列で表記されるテーブルと異なり、別のデータを誤って編集してしまうリスクを軽減できる。


・クエリ

テーブルのデータから特定の属性を持つものをデータを抽出するための場所。

元データはいじらないで表示のみが可能。

特定のものだけを抽出してレポート機能で印刷することや、Excelファイルに出力するときなどに便利。


・レポート

ほぼ印刷するための機能。テーブル等を指定することもできるが、基本的にはクエリで必要分だけを抽出して報告書などに使う。今回は職場巡視報告書として作ってみる。



✅実際に作ってみる



・テーブル



詳細は省きますが


今回は職場巡視を念頭に作るので記載項目は

ID,巡視日時,時間,天候,巡視場所,巡視場所詳細,巡視産業医氏名,事業所側対応者,巡視保健師氏名,その他,聴取事項・巡視・健康相談記録,総合コメント,返送先,返送納期,報告者,報告者連絡先,画像添付1~4,

としました。必要に応じて有害業務のチェックボックスとか作っても良いかもしれません。


・フォーム

テーブルで作った枠組みに合わせ、データを入力に特化したところ。



ということで、先に項目として設定した
ID,巡視日時,時間,天候,巡視場所,巡視場所詳細,巡視産業医氏名,事業所側対応者,巡視保健師氏名,その他,聴取事項・巡視・健康相談記録,総合コメント,返送先,返送納期,報告者,報告者連絡先,画像添付1~4,

を記入しやすいようにレイアウト。(記入内容や人名などは全部適当です。)


・クエリ

テーブルのデータから特定の属性を持つものをデータを抽出するための場所。



今回は開く時点でIDを指定してそのデータ(巡視記録1回分)のみを抽出できるように作成しました。


・レポート

印刷。ということで今回は職場巡視報告書を作成できるようにしました。

クエリに紐づけて開く時点でIDを指定して巡視記録1回分を抽出できるように作成しました。

IDを指定するだけで



こんな感じの報告書が出てきます。


今回作ったのはこの職場巡視報告書のみで、パクリ元の職場巡視データベース

で作成できる「スライド」、「連絡書」、「ドラフト」は作成できませんが

レポートのレイアウトを新規で作ってあげるだけなので、ちょっと使える人ならいろんな書式の書類を作れるようになると思います。



✅ざっと扱ってみた範囲での問題点


・ルックアップウィザードを用いて別テーブルに関連付けたドロップダウンリストを作成した場合クエリで抽出ができない

ルックアップウィザードで別テーブルを参照させると、その表記内容そのものではクエリから抽出できない様子。


・テーブルの情報型を変更しても連携したクエリやフォームは変更されない。

そこまで親切には作られてない…

最初に数値型などで設定して、その後ルックアップの設定をした場合、フォームでドロップダウンリストを表示させるには作り直しが必要。


・全体としてのデータが2GBまで

これは結構切実ですね。画像データは圧縮が必須でしょう。

文字データで使用していても年次がかさめばこの制限に引っかかるでしょうし

これを解消するためには結局のところ勉強をしなければならないでしょうね。



✅まとめ


最終的にはデータベース部分をMySQLなりなんなりにに任せ

MySQLのデータベースをAccessにリンクさせて利用できるようになれば大規模なデータを扱えるようになるのでしょうかね?


ただし、こう自分でデータベースを作ってみた感想としては。

健康情報を扱う業務で個人情報を扱うのはかなりキツイ。ということでしょうか。

これはAccessどうこうではなく、自分の基礎的な技術力と知識不足です。

Access単体で利用してローカルに個人情報を置くのは論外。

ならデータベースそのものはサーバーなりなんなりに置かなければならない上、そのセキュリティに対する理解が必要になります。この辺しっかり勉強していない上実務経験がない自分の独力では開発不可能です。

一方でパクリ元の職場巡視のように個人情報保護の観点からはあまりセキュリティに気を使わないでいられ、かつ嘱託産業医のように多数の現場を担当する場合に一括で管理できる小システムとしての運用であれば、Accessはいまだ有用と思われます。

一定以上の規模で作る場合、圧倒的にPowerAppが良いでしょう。


結局自分の中で『今は業務で使うべきでない』と結論付けてしまったので、一旦データベースの勉強は終了です。もっと根本的に勉強しないとどうにもならないことがわかったので…

とりあえずローカルに閉じた環境で個人的に使用できるRDBを1つ作れたことそのものは進歩とすることにします。



それでは。

コメント

0 件のコメント :

コメントを投稿

当ブログの内容は端末の文鎮化を引き起こす可能性を伴う危険なものを含み、投稿主は施行の推奨を致しません。

また、このブログコメント欄、Twitter等で問い合わせ頂いても詳細な内容を記載/返答する予定はございません。
自分で調べる。自己責任。転んでも自分で起きる。ことが出来ない方はコメント前にブラウザバックを推奨いたします。