Libre Office Baseで考える〜リレーションの恩恵を受けられるケースは?〜

2022年9月19日

Libre Office Baseの研究を日々していますが、Accessとは随分違うようで(Accessいじってたのが遠い昔なんで記憶は曖昧😅)そのうちの一つにリレーションがあります。

そもそもリレーションとは?結構長い間、そのメリットが分からずに過ごしてきました。ずっと思っていた。

「誰かわかりやすく説明してくれよ」

と・・・・

それくらいにメリットとデメリット分からず・・・。

ということで今日はリレーションを分かりやすく、「別にリレーションなくてもいけるんじゃないの?」と思う例も含めて説明したいと思います。

リレーションとは・・・関連づけること!

一見は百文にしかず。これは今作っている帳簿で、リレーションを組んだ場合。

一番大きなテーブル”総合T"はお金の出入りを全部記録するテーブルです。現金でも預金でもクレジットカードでも全部ここに入れます。そして小さなテーブルたちは”総合T”に含まれる項目(○○IDと名がついてる)の中身を現したテーブルでそれを関連づけるためにリレーションを組んだわけです。

ここで思いませんか?

『別にわざわざIDにしなくても直接書き込めばいいじゃないの』

そうなんです。それは正解だし、不正解です。Base全体の構成の複雑さによると思います。構成が単純ならリレーションはわざわざ組まなくてもいい場合もあります。※ちなみに文字列ではリレーションは組めません。

こちらのブログ(外部リンク)では初心者はリレーションに手を出すと底無し沼にハマるとおっしゃっています。笑。残念ながらその通りな面もあるとは思います。一つ言えるのは何かを作ろうと思う第一号はリレーションなしでシンプルなものを作成すると良いと思います。

ここから先は、もう一歩進んでリレーションを理解したい方にむけて。

1対1、1対多という概念

リレーションを調べてみると必ず出会す言葉。これに関しては圧倒的に分かりやすいHPがあるので見て欲しいです。

https://fmhelp.filemaker.com/help/18/fmp/ja/index.html#page/FMP_Help%2Fplanning-databases.html%23ww1160750

Base ではなくFileMakerという名ソフトに関連する話ですが、共通するリレーションの基本的なことが書いてあります。

先ほどの私の帳簿デザインで見てみましょう。

”総合T"の”科目ID”と”相手科目T"の科目IDがリレーションされていて、”相手科目T"の方に「1」と書いています。”総合T”の方には謎のマークがついていますが、つまり

1対多 =”相手科目T”の”科目ID” 対”総合T"の”科目ID"ということです。

これを言葉にすると、

”総合T"には異なる科目が何回も出てくるが、”相手科目T"の個々の科目には1つずつの項目だけが相応する

ということになります。これがこの話の概念の全てです。

設計図は必須

そして、先ほどの外部リンクを見ていただけたように、リレーションを組みたいなら設計図(ER図)は必須です。結果として組まないにしても、それが必要が判断するためにも書いた方がいいです。その時に最終的にどんな書類が必要なのかを具体的にイメージした方がよいです。

ちなみに今回私もこんな設計をしました。

例えば”総合T”の中にあ”科目ID”は”相手科目T”の”科目ID”にリレーションされていますが、そこでさらに思いました。

「経費帳作るなら経費を抽出するためにどの科目が経費にあたるのかを識別するためのテーブルが欲しいなあ」

ということで”カテゴリーID”を”相手科T"に作って”カテゴリーT"を作成しました。科目って経費だけじゃないものも含まれていますから。

という感じで具体的に何がしたいのかを考えながら設計していくと、後々抽出したい時に楽になります。

リレーションを組まなくても結構色々できる

とは言え、ものによってはリレーションなしでも普通に良いものができます。

ここで私が配布している、帳簿は我ながら結構良いものですが、リレーションは一切組んでいません。実はBase初回と言うこともあり、あまりよくわかっていなかったので、設計もちゃんとしていませんでしたが、Accessは少し馴染みがあったのでその分イメージはしやすかったかも知れません。

ではどんなものならリレーションは不要なのでしょうか・・・・

リレーションなしでもいいんじゃない!?作成したい書類があまり多くない

複式帳簿でいうと必要な書類は

・仕訳帳、元帳

が必須。

あわよくば、

・出納帳(現金、預金)

・電子保存書類の管理表

逆に不要なもの

・売掛帳、買掛帳

・経費帳

・減価償却帳

多くても5つ?ならもう、別にリレーションなくてもいいやって感じ。

リレーションなしでもいいんじゃない!?抽出したい項目が同じような感じ

出納帳にしても、仕訳帳にしても、元帳にしても抽出したい項目ってほぼ一緒ですよね。

日付、摘要、科目、入金・出金(借方・貸方)、残高

ほぼこれだけで色々できてしまう。条件を抽出するのは慣れれば難しくないけど、残高とかの方がよっぽど大変。

後は借方と貸方の記載において元帳で注意しなければならないってこと。ってことはリレーションしたとしても解決しないんです。SQLですよね。

そんな場合はリレーションしなくても大丈夫です。

リレーションをあえて組まなくてもできるボックス選択入力

リレーションといえば思いつくはこれ。じゃないですか?私はこれ。

データ入力の際の選択ボックス。楽だし、間違って入力しなくてすみますし、後で項目も追加できます。ここでは詳しくは書きませんが、リレーションしなくてもできます。って言うかむしろリレーションしない方がややこしくないかも知れない(笑)テーブルさえ作って、フォームでの操作でこれはできます。

フォーム作成の際にはリレーションない方が楽

またまたリレーション否定みたいな話になりますが、入力するためにフォームを作りますけど、その際にもリレーションはない方が楽です。とはいえテーブルの作り方にも関連するので一概にはいえませんが、IDでリレーションすると確かにめんどくさいです。

リレーションの良いところ〜ひとつのテーブル項目を減らせて抽出は楽〜

じゃあ良いところ、と言うか・・・使った方が良い場合とは・・・

まず、こういうのが好きな人は一定数いると思いますので笑

好きな人は是非チャレンジしてみてください。

それ以外の最大のメリット、何回も出てくる先ほどの例をもう一回。

相手科目を挟んで”カテゴリーT"がありますが、もしなければ全部”総合T"に書くはめになります。ここがリレーションの一番のメリットではないかと思います。

例えば経費帳(消耗品費の)を作りたくて、クエリーで関連する3つのテーブルを表示させ、”カテゴリーT"の”経費”、さらに”相手科目T"の”消耗品費”を抽出した場合、ちゃんと”総合T”の日付、適用、金額も表示してくれます。それはひとえにリレーションしているからできること。

これを全部”総合T"に入力すると科目名に加えて、これは経費ですよ、というカテゴリーの入力もしなければなりません。リレーションしていることによって、それを入力しなくても、消耗品費と入力するだけでそれが経費であることを認識しれくれます。

なので、こういった関係性(その項目を説明するものが書類作成に必要かどうか)が多ければ多いほどリレーションのメリットを受けることができます。

どの道を選んでも何かが楽で何かが大変

結局これなんですよね。読む余力のある方のみで結構でので読んでみてください。

例えば同じようなテーブルを3つ作ります。

帳簿でいうと

・現金入出金テーブル

・預金入出金テーブル

・クレジットカード入出金テーブル

とした場合、3つの異なる手段の入出金入力フォームを作るのは楽です。その代わり仕訳帳を作成の際には3つのテーブルを合体させるUNION ALLなどのQOLを使わなければならず、その分手間です。

では、3つの異なる入出金手段をひとまとめに同じテーブルにした場合。仕訳帳を作るのは一気に楽になりますが、手段ごとのフォームを作ろうと思うと大変です。さらに先ほどのようにリレーションを設定した場合にはフォームを作成するのがもっと大変になります。

なので最も楽な方法はあってないようなもの。何を捨てて何を得るか。

将来の可能性・・・という広いビジョンで作成するならリレーションはマスターした方が良いでしょうね・・・。

まとめ

いかがでしたか?結局どっちがいいの?と言う答えはあるようでない、と言うのがリレーションです。

全ては何を作りたいかの複雑度合いによります。

・リレーションは必ずしも必要なわけでもない

・シンプルな構成ならリレーションなしでもいいものは作れる

・項目をさらに説明する変数があり、それが作成したい書類に必要であれば有効

・一番楽な方法は合ってないようなものだが、やはり初心者はリレーションなしでやってみよう

・長いビジョンで見るならリレーションは理解しよう

・慣れれば、どっちも似たり寄ったり

最後の慣れれば・・・は結構挫折するかしないかの分かれ目だと思いますが!

ちなみに私は好きなので多用の予定です(笑)