私はコーディングのバックグラウンドがなく、正直なところ、最初にデータベースの作り方を勉強したときは苦労しました - もっと正直に言うと、今でも苦労しています。だからといって、これを読んで自信を持てるでしょうか?そうではないかもしれません。しかし、私はリレーショナル・データベースについてあまりに新鮮なので、あなたが何を経験しているのか分かりますし、あなたを助けるためにここにいるのです。では、さっそく読んでみましょう。 

まず、データベースとは何でしょうか? 

データベースとは、コンピュータに格納されたデータの構造化された集合のことである。もう少し詳しく知りたかったのですが、平たく言えば、データベースとは、情報を詰め込んだスプレッドシートのことです。 

コーディングと聞いてすぐに思い浮かぶのは、テレビ番組に出てくるようなたくさんの0と1の羅列と、一般的な数字でしょう。コードを書くという偏った認識を持っていた私は、データベースが何であるかについても異なる認識を持っていました。データベースとは、Excelのスプレッドシート、あるいはGoogleのシートのようなものです。それだけです。数字、単語、文章、日付、時間、URL、あらゆる種類の情報が入っています。 

データベースは、情報を関連付けるための行と列で構成されています。行をまたぐと、ある事柄を説明するさまざまなデータポイントが見つかるかもしれません。列の下には、その行のデータポイントに関連する複数の答えが見つかる可能性があります。 

学校に通う子どもたちに関するデータベースの例を見てみましょう。

生徒のコレクションと各生徒の関連情報

上記では、データベースは3人の生徒のレコードと、それぞれの生徒の学年、年齢、GPA、欠席、遅刻の同じプロパティを含んでいます。これは、地元の高校で見られるような、ごく一般的なデータベースの例です (もちろん、そこにはもっとたくさんの生徒のレコードがあるでしょう)。

このように分解してみると、データベースはもう少し理解しやすくなります。上記の情報では、GPAでソートしたり、成績でフィルタリングしたりすることができましたが、これらはデータベースに組み込まれている機能です。 

データベースとは何かという基本的な理解で、なぜデータベースをアプリにするのでしょうか。簡単に言うと、すべてのスプレッドシートをアプリにする必要はないのに、アプリにすると時間がかかるからです。長い答えは、スプレッドシートで実現できることはたくさんありますが、視覚的にデータが魅力的でない場合があり、データコレクション間の関係を追加し始めると、スプレッドシートの活用は情報を伝達する理想的な方法ではなくなるからです。 

データベースをリレーショナルにする理由

リレーショナルデータベースは、互いに関連するデータポイントを保存し、アクセスできるようにするデータベースの一種です。表計算ソフトの行と列が関連しているように、リレーショナルデータベースは、キーと呼ばれる1つのプロパティを通じて関連する情報を結びつけています。 

上記の生徒の例について補足しておきましょう。学校を例にとると、学区内に複数の高校があることが理解できるかもしれません。そこで、高校用のデータベースを作ってみましょう。

学校・関連情報集


このデータベースは全く問題なく成り立っていますが、実際には、学校は生徒と関係を持っています。 

この例では、studentからの1対多のリレーションシップです。 

一人の生徒が一つの学校に所属している。

1つの学校に多くの生徒がいる。 

これらのデータベース・コレクションを接続すると、次のようになる。 

対応する学校情報を持つ生徒の収集
学校詳細の収集

黄色でハイライトされた部分がその関係を示している。School Collectionでは、Studentsプロパティは複数の学生を持つことができますが、Student Collectionでは、School Nameプロパティは1つの学校名しか持つことができません。 

この2つのコレクションは互いに関連しており、ソートやフィルタリングを行う際に、どちらのコレクションからもプロパティを使用して情報を分割することができます。このように情報を2つの異なるコレクションに分けることのメリットの1つは、アプリが迅速に動作し、情報をよりよく表示するために整理できることです。

4つのタイプの人間関係

リレーショナルデータベースでは、4種類のリレーションシップが定義されています。データに対して適切なリレーションシップを選択することは、アプリのセットアップ時に適切なデータが表示されるようにするために重要です。

その関係性の種類を整理してみましょう。

マンツーマン

一対一の関係では、あるテーブルのある行は、別のテーブルのある行に属し、その行は1つだけである。 

学校と生徒の例で言うと、科学試験の成績表を作成した場合、生徒は1つの成績しか持つことができず、その成績は1人の生徒にしか関連付けることができません。

生徒の収集
生徒の科学実験の成績

この例では、学生がキーであり、2つのデータベースコレクションに情報が存在しても、科学試験の成績と学生を関連付けます。 

一対多

1対多の関係では、1つの情報行が別のコレクションの多くのレコード(行)に関連付けることができます。 

上記の学校と生徒の例を続けると、学校には多くの科学の教師がいますが、生徒の数はもっと多くなります。教師 (およびその関連情報) のコレクションがあれば、生徒に対して一対多のリレーションを作成することができます。 

1対多の関係では

一人の理科の先生がたくさんの生徒を持つことができます。

しかし、生徒には一人の理科の先生がいる。

理科教師コレクション
理科の先生にまつわる生徒のコレクション

多対一

多対一の関係では、一対多の関係と同じ定義が適用されますが、逆方向の関係になります。

シナリオを続けると、1つのランチピリオドには多くの生徒が所属できますが、1つのランチピリオドには1人の生徒しか所属できません。

生徒と昼食時間
対応する昼休み時間帯の詳細

一対多と多対一では、どのコレクションからリレーションシップが始まるかによって、そのプロパティを設定する際にどのタイプのリレーションシップが正しいかを定義することができます。 

多対多

多対多の関係では、あるコレクション内の1つの行が2番目のコレクションの多くの行に関係することができ、2番目のコレクション内の1つの行が最初のコレクション内の多くの行に関係することができます。 

その好例が、授業のスケジューリングと教師です。 

1人の教師が複数の授業時間を持つことができます。 

1クラスは複数の先生に関わることができます。 

多くの学校では、一度に多くの授業が行われ、各授業は少なくとも一人の教師によって教えられなければならないからです。では、この2つのコレクションがどのようなものかを見てみましょう。

授業時間数 授業時間数 授業時間数
クラス期間詳細


上の2つのコレクションを見ればわかるように、各教師は複数の授業時間を担当し、各授業時間は複数の教師に属しています。 

リレーションシップを設定するには、そのプロパティがAdaloの既存のコレクションによって定義されることを示すために、選択する特定のデータ型があります。テキスト、数値、日付と時間、画像などのデータ型を選択する従来のプロパティではありません。リレーションシップを正しく設定することで、アプリにとって意味のある方法で、データを正しく表示、ソート、フィルタリングできるかどうかが決まります。 

リレーショナルデータベースはなぜ重要なのか?

この時点で、なぜリレーショナルデータベースを使う必要があるのかと疑問に思うかもしれません。このような情報をすべて含む巨大なスプレッドシートを作る方が簡単ではないでしょうか? 

私も同感です。リレーショナル・データベースは、最初は理解するのが難しいかもしれませんし、自分が求めている結果を得るために、リレーションシップをどのように設定するのか、処理しなければならないことがないとは言い切れません。しかし、リレーショナル・データベースを使いこなすことで、アプリ開発において多くのメリットを得ることができます。 

データの正確性

リレーショナルデータベースはキーを使って設定されるため、データの重複が起こりにくい。同じ情報が複数記録されている場合、どの情報源が正しいのか信用することが難しくなります。リレーショナル・データベースでは、重複を排除することで、最も正確なデータを得ることができます。 

データへのアクセス

情報の階層構造や情報へのアクセス経路に依存する他のタイプのデータベースでは、データの検索、フィルタリング、並べ替えを思い通りに行うことが困難です。その点、リレーショナル・データベースでは、必要な情報を的確に引き出すことができるため、非常にシンプルです。 

柔軟性

リレーショナルデータベースを作成することで、将来的にデータを追加する際に制約を受けることはありません。データベースは、保存される情報のニーズに合わせて、常に成長し、変化し続ける可能性を持っているのです。 

リレーショナル・データベースについて学ぶことは、特に非開発者がノーコード領域に参入する場合、非常に困難な作業になることがあります。データベースの設計やセットアップ方法について調べるべき資料はたくさんありますが、私ができる最善のアドバイスは、Adaloや Airtableのような、データベースに変更を加えてリアルタイムに結果を表示できるツールで遊んでみることです。

もう一つの良い方法は、よく使われているソフトウェアやアプリを見て、それらがどのようにデータベースをセットアップしているかを想像し、将来自分のデータベースをどのようにセットアップするかをより良く理解することです。リレーショナル・データベースで少し遊んでみたいという方は、上記の学校の例のように、自分がよく知っていて、複数の異なるタイプのリレーションシップを考えられるような例を使用してみてください。 

The more familiar you become with this integral part to developing apps, even no-code ones, the more intricate & powerful your apps can become. With no-code freelancing on the rise, creating high-quality software has never been more accessible or affordable. This paradigm shift has leveled the playing field and enabled more people and agencies to meet the growing demand for software applications. Ready to join the revolution? Head to Adalo App Academy to learn how to build apps without coding and get ahead of the curve. And if you're already experienced with no-code tools, why not monetize your skills and become an Adalo Expert? Don't miss out on the chance to shape the future of software development!

Feeling Inspired?

Get started with our template.

LEARN MORE

Create Your App Today

Start building in a matter of minutes

はじめに