# データベース

*スキルレベル: 初心者*

## **始める前に**

* 無料の Adalo アカウントを作成し、サインインしていることを確認してください
* [スプレッドシート](https://ja.wikipedia.org/wiki/%E8%A1%A8%E8%A8%88%E7%AE%97%E3%82%BD%E3%83%95%E3%83%88)（Excel または Google Sheets）の概念に精通していること
* この機能を使用するには有料の Adalo プランは必要ありません

## データベースの概要

{% embed url="<https://youtu.be/lLeeiCgDKuQ>" %}

## チュートリアル

{% tabs %}
{% tab title="簡単ガイド" %}
異なるプロパティ、関係、レコード、およびコレクションを持つトリップアプリのためのシンプルなデータベースを設定する方法について説明します。これらの用語についての詳細情報については、このチュートリアルの **詳細** タブをクリックしてください。

**1.)** まずは、Adalo ビルダーの左側メニューで **データベース** タブ <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-e6de1893f7860f23a7f264a6b6a3b29b653bfa60%2FScreen%20Shot%202021-08-18%20at%2011.17.46%20AM.png?alt=media" alt="" data-size="line"> をクリックして開始します

**2.)** デフォルトでユーザーのコレクションが提供されていることに気づくでしょう - このコレクションは削除できませんが、変更はできます。 <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-8f35096e68dec1de42fff3b7189974c6351d6e6c%2FScreen%20Shot%202021-08-18%20at%2011.26.58%20AM.png?alt=media" alt="" data-size="line"> をクリックして、**Trips** という別のコレクションを追加しましょう

**3.)** 新しいコレクションに **"Trips"** という名前を付け、**追加** をクリックします

**4.)** コレクションには常に少なくとも1つのプロパティが必要なので、**Name** という初期プロパティが提供されていますが、このプロパティのタイプ、タイトル、および順序を変更できます。このプロパティを **"Title"** に変更するには、それをクリックしてから入力フィールドに入力します。

**5.)** 次に、トリップが開始する日付を保持する **Date** プロパティを追加しましょう。Trips コレクションで <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-a38531b5868e6305557dd501f388ff1b8268bdb2%2FScreen%20Shot%202021-08-18%20at%2012.02.16%20PM.png?alt=media" alt="" data-size="line"> ボタンをクリックして **Date** を選択します

**6.)** 新しい日付プロパティを **"Trip Start Date"** などの名前に変更し、**保存** をクリックします

**7.)** すべての旅行には旅行リーダーが必要ですが、既にユーザーのコレクションにその情報があるため、旅行リーダーに関するプロパティを追加する必要はありません。代わりに、Trips コレクションに関係プロパティを追加しましょう。Trips コレクションで <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-a38531b5868e6305557dd501f388ff1b8268bdb2%2FScreen%20Shot%202021-08-18%20at%2012.02.16%20PM.png?alt=media" alt="" data-size="line"> をクリックし、今度は **Relationship** を選択して **Users** を選択します。これにより、Trips コレクションとUsers コレクションの間にリンクが作成され、結果として2つのプロパティが実際に作成されます - 1つはTrips コレクションに、もう1つはUsers コレクションに。

**8.)** これで、Adalo はこの関係の種類を尋ねてきます。この場合、1人のユーザーが複数の旅行のリーダーである可能性がありますが、各旅行には1人のリーダーしかいないため、ここではオプション1を選択し、**完了** をクリックします。 ユーザーのコレクションからも同じ関係を作成することが可能ですが、この場合は逆のコレクションからロジックを見ているため、オプション2を選択します。どちらの方法も正しいです。これは、2つの異なる端からパイプを見ているようなものであり、両端から見えるものは同じであり、ただ反転していると考えることができます。

![](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-ef76f580583e645a6c13cd59b5e6754bd4e67b21%2FScreen%20Shot%202021-08-18%20at%2012.14.28%20PM.png?alt=media)

**9.)** 関係プロパティが設定されたので、ユーザーのコレクションとTripsコレクションの両方でこれらのプロパティの名前を変更するのを忘れないでください。ユーザーのコレクションの名前を\*\*"Trips Led"**、Tripsコレクションの名前を**"Leader"\*\*に変更しましょう。コレクションをクリックして、次に関係プロパティをクリックして、フィールドに入力して名前を変更できます。

**10.)** タイトル、開始日、およびリーダーを持つTripsの基本的なデータベースができましたが、実際にはまだデータベースにTrips（レコード）がありません。ユーザーが自分自身のTripsを作成して追加できるようにフォームを作成するか、データベースに手動でレコードを追加することもできます。手動で追加するには、**Trips**コレクションをクリックして、**Records** <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-85ba2d4e9c31c3c5dadbb64eac5689b4aef46e3a%2FScreen%20Shot%202021-08-18%20at%2012.33.43%20PM.png?alt=media" alt="" data-size="line"> ボタンをクリックします。

**11.)** データベースポップアップの右上にある\*\*+ Add Trip\*\*ボタンをクリックします。タイトルや旅行開始日など、追加したプロパティのための入力が表示されます。お好みで入力して、**Save**をクリックしてください。**Leader**のドロップダウンにはオプションが含まれていないことに気づくでしょう。これは、まだユーザーがいないためです！いくつかのユーザーを手動で追加し、それらをいくつかの旅行にリンクしてみてください。

{% hint style="info" %}
[CSVファイルをインポートする](https://help.adalo.com/ja/database/importing-records-from-a-csv-file)ことで、データベースにレコードをアップロードすることもできます。
{% endhint %}

**12.)** データベースが設定され、いくつかのレコードが内部にあるので、このデータをアプリのリストで使用できます。また、ユーザーがデータベース内で自分自身のTripsを作成および更新するためのフォームを作成することもできます！
{% endtab %}

{% tab title="詳細" %}
データベースの構築を開始する前に、データベースが実際に何であるかを見てみましょう。**データベースは単に電子的にアクセスされる情報の整理されたコレクションです。** データベースは、コンピュータ上に保存されている情報を作成、読み取り、更新、削除することをユーザーに可能にします。これらの機能を**CRUD**と短く呼びます。

データベースを説明するために最も一般的に使用されるアナロジーは、「それはスプレッドシートのようなもの」というものです。スプレッドシートがデータベースとして機能することは事実ですが、両者は完全に同じではありません。いくつかの違いを見るために図を見てみましょう。

![](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-008c4ec09b95931cdc3df4bd13dbbdaf0726b2af%2FDB%20vs%20SS%20Venn%20Diagram.png?alt=media)

### **Adaloデータベースの基礎**

Adaloでは、データベースに関連するすべてのものは、アイコンの大きなプラス記号で見ることができるように、魔法の赤色でマークされています。Adaloビルダー内の赤いデータベースボタンをクリックして、Adaloデータベースにアクセスできます。

![](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-d7701a626167cedc65ce9db5e7edb6daf09da0c8%2FScreen%20Shot%202021-08-18%20at%209.33.45%20AM.png?alt=media)

アプリのデータベースを開くと、Adaloデータベースの最初で最も重要なコンポーネントである「コレクション」が表示されます。

#### **1.) コレクション**

コレクションは、異なる種類のデータに対応するテーブルにデータベースを分割します。これらは、アプリ内の「名詞」と考えることができます。例えば、Restaurants、Trips、Users、Orders、Menus、Activitiesなどです。ユーザーテーブルやイベントテーブルがあるように、UsersコレクションやEventsコレクションがあります。デフォルトでは、すべてのアプリにはUsersコレクションが含まれており、残りのコレクションを追加できます！

{% hint style="info" %}
独自のコレクションを作成すべきかどうかを判断するのは難しいことがよくあります。コレクションを決定するのを容易にするために、ユーザーがリストアップ、表示、または作成できるものについて考えることができます。例えば、ユーザーと投稿があるソーシャルメディアアプリでは、ユーザーが投稿を「いいね」できます。Likesコレクションを作成するのも魅力的かもしれませんが、Likesをリストアップすると、特定の投稿を「いいね」しているユーザーがリストされていることになります。
{% endhint %}

![いくつかのサンプルコレクション](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-afc95e8340071fb1d2ebb7135bfcc0caf1077c3d%2FScreen%20Shot%202021-08-18%20at%209.42.19%20AM.png?alt=media)

コレクションをクリックすると、プロパティと呼ばれる追加や変更のためのオプションのリストが表示されます。

#### **2.) プロパティ**

これらのプロパティは、コレクションに含まれるアイテムの特性を定義します。ユーザーコレクションの例では、ユーザーには名前、メールアドレス、誕生日、プロフィール写真、さらには目の色などがあるかもしれません。これらすべてがそのユーザーのプロパティと見なされます。

![Usersというコレクション内のプロパティ](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-e77894361a93095d5afbd1189150f582fdbfa2f8%2FScreen%20Shot%202021-08-18%20at%209.46.26%20AM.png?alt=media)

追加できるさまざまな種類のプロパティがあり、それは追加するデータの種類を定義します。コレクションにプロパティを追加するには、 <img src="https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-a38531b5868e6305557dd501f388ff1b8268bdb2%2FScreen%20Shot%202021-08-18%20at%2012.02.16%20PM.png?alt=media" alt="" data-size="line"> をクリックします。

* **Text** - 「文字列」として一般的に知られており、テキスト、数字、または記号で構成されることができます
* **Number** - 「整数」として一般的に知られており、整数または小数のみです。負の数や最大15桁までサポートされています。[カスタム式](https://help.adalo.com/ja/videos/math-and-custom-formulas)で使用できます
* **True/False** - 「ブール値」として一般的に知られており、true/falseはチェックボックスとして視覚化されます
* **Date/Time** - 日付と時刻のプロパティをデータベースに保存できます。データベースではUNIXタイムスタンプとして保存されますが、さまざまな形式で親しみやすい日付として表示されます。カスタム式で使用できます
* **日付** - このプロパティは日付のみを保存し、時間情報は保存しません。UNIXタイムスタンプとして保存され、わかりやすい形式で表示されます。カスタム式でも使用できます。
* **画像** - このプロパティは画像をデータベースに保存します。保存された画像のパブリックURLリンクにアクセスすることもできます。ファイルサイズ制限は50MBです。
* **ファイル** - このプロパティはデータベースに任意のファイルタイプを保持できます。PDFやJPGからPowerpointや.MP4ファイルまで対応しています。ファイルサイズ制限は50MBです。
* **関係** - このプロパティを使用すると、2つのコレクションをリンクできます。このプロパティタイプについての詳細は後述します。

![コレクションに追加できる異なるプロパティタイプ](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-b934b5af364857025565f4431381d91ab4eb42ee%2FScreen%20Shot%202021-08-18%20at%209.47.26%20AM.png?alt=media)

プロパティは、クリックして入力フィールドを変更するだけで簡単に名前を変更できます。1つ以上のプロパティがある場合は、プロパティのスタック内でクリックしてドラッグすることで再配置することもできます。

{% hint style="info" %}
コレクションには常に少なくとも1つのプロパティが必要です。ユーザーコレクションには、削除できない4つのプロパティがあります。これらは名前のみ変更できます: メールアドレス、パスワード、ユーザー名、フルネーム。
{% endhint %}

#### **3.) 関係**

時には、1つのレコードに何百ものプロパティを保存する代わりに、コレクション間のクラッターを減らすために、関係（またはリンク）と呼ばれる特別なタイプのプロパティを作成します。ユーザーとイベントの例では、イベントにはイベントホストがいるかもしれません。しかし、イベントコレクションにホストの名前、メールアドレス、写真を保持するプロパティを作成する代わりに、ユーザーとイベントコレクション間に関係を作成できます。これにより、イベントのホストに関する情報をユーザーコレクションから参照でき、イベントコレクションに余分なプロパティを作成する必要がありません。関係はコレクション間を双方向に移動することもでき、それは「相互的」と呼ばれます。ユーザーがホストしているイベントがあるように、イベントにもホストがいます。Adaloには、コレクション間でリンクされているレコードの数を参照する2つの主要な関係タイプがあります:

* **1対多:** これは1つのレコードが異なるコレクション内の複数の他のレコードと関係を持つことを意味します。この論理は、表示しているコレクションからのものと、リンクしているコレクションからのものの2つの方法で表れます。たとえば、1人のユーザーが複数のイベントをホストすることができるか、複数のイベントが1人のホストを持つことができるか、どちらも真の1対多の関係の説明です。
* **多対多:** これは、両方のコレクションからのレコードが別のコレクションからの複数のレコードにリンクできることを意味します。たとえば、イベントには複数のホストがいる可能性があり、ホストには複数のイベントがある可能性があります。 Adaloでは、コレクション間の関係を設定するたびに、コレクションが共有する関係のタイプを定義するように求められます。これらは実際には2つのタイプ（One-to-ManyとMany-to-Many）しかないのですが、使用方法に応じて3つのオプションが表示されます。

![](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-4b19f34b20a73073da1d8a0b5bb84a371ecb5db5%2FScreen%20Shot%202021-08-17%20at%205.08.26%20PM.png?alt=media)

{% hint style="info" %}
関係を作成する際には、各コレクションが関係の中でどのような役割を果たすかを考えると便利です。上記の例では、イベントが1つのホストのみを持つことを定義する関係を作成したいかもしれません。したがって、オプションを「ユーザー」という用語ではなく、「ホスト」という単語に置き換えて、どのオプションを選択すべきかをよりよく把握できます。この場合、オプション1になります。"参加者"とイベントの間で関係を作成する場合、どちらを選択しますか？自分で試してみてください！
{% endhint %}

プロパティ（関係を含む）は、Adaloのデータベース内の列としても視覚化できます。これは、コレクションのレコードをクリックすることで行われ、そのコレクション内のレコードも表示されます。

#### **4.) レコード**

レコードは、コレクション内の情報を保持（または記録）するために使用され、スプレッドシート内の行に似ていますが、行内のすべてのセルが互いにバインドされている点が異なります。ユーザーの例では、1人のユーザーはコレクション内の1つのレコードと見なされます。

![](https://797861279-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4EFNSNZLMs5AZ70x2P33%2Fuploads%2Fgit-blob-56a164a016dba0d9e6e604d4d939744a2c3fa876%2FScreen%20Shot%202021-08-18%20at%2010.39.41%20AM.png?alt=media)

理想的には、アプリには[フォーム](https://help.adalo.com/ja/component-basics/how-to-create-and-edit-forms-and-fields)や他の方法が含まれており、ユーザーがデータベースからレコードを作成、更新、削除できるようにすることができますが、レコードビューの右上にある\*\*+追加\*\*をクリックして手動でレコードを追加することもできます。また、データベースを検索したり、[.CSVファイル（スプレッドシート）をアップロードまたはダウンロード](https://help.adalo.com/ja/database/importing-records-from-a-csv-file)してAdaloコレクションに追加することもできます。
{% endtab %}

{% tab title="ビデオ" %}
{% embed url="<https://youtu.be/yuuFOTbng8c>" %}
{% endtab %}
{% endtabs %}

## 例

データベースの構築の基本を押さえたので、この解説で使用されたアプリのクローン可能バージョンを[こちらをクリックして](https://previewer.adalo.com/88121462-f981-4dbd-9b20-4d6048cafab4)チェックしてください。

## もっと詳しく知る

* プロパティは完全に空白のままにしておくことも、使用しないこともできます。
* Adaloには1対1の関係は存在しませんが、時々この目的のために1対多の関係タイプを適応する必要があることがあります。これらのケースは稀ですが、時折発生します。例えば、イベントホストが1度に1つのイベントのみを割り当てることができ、イベントも1つのホストのみを持つことができる場合です。このような場合、関係の「多」側は無視されることがあります。
* コレクション内の最初のプロパティは、Adaloによってレコードのラベルとして使用されます。通常、ここには一意の値が最適であり、最初のプロパティを空白のままにしない方が良いです。
* CSVをアップロードする際、関連付けは、関連するコレクションのラベルと一致する値の場合にのみインポートできます。通常、数字やIDが最適です。
* プロパティを作成する際は、後で混乱しないように適切に名前を付けるようにしてください。これは特に関連付けにとって重要です。関連するコレクションの両方にプロパティが作成されるためです。他のコレクションでも関係プロパティの名前を付け忘れないでください！
* 関係を扱う際は、関連するコレクションの最初のプロパティが関係に表示されるプロパティであることに注意してください。関連するコレクションから別のプロパティを取得したい場合は、このプロパティをコレクション内の最初にする必要があります。

## 関連記事

{% content-ref url="database/collection-permissions" %}
[collection-permissions](https://help.adalo.com/ja/database/collection-permissions)
{% endcontent-ref %}

{% content-ref url="database/importing-records-from-a-csv-file" %}
[importing-records-from-a-csv-file](https://help.adalo.com/ja/database/importing-records-from-a-csv-file)
{% endcontent-ref %}

{% content-ref url="database/location" %}
[location](https://help.adalo.com/ja/database/location)
{% endcontent-ref %}

## ヘルプ

関係を扱う方法をさらに理解したい場合は、[Adalo App Academy](https://appacademy.adalo.com/homepage)の[Create a Robust, Flexible Shopping Cart Systemコース](https://appacademy.adalo.com/course/shopping-cart)を受講してみてください。

この記事に関する追加のヘルプが必要な場合は、いつでも[コミュニティフォーラム](https://forum.adalo.com/)で質問してください！投稿時にこの記事へのリンクも貼り付けることを忘れないでください！

チュートリアルやヘルプドキュメントのリクエストがある場合は、[お知らせください！](https://ideas.adalo.com/tutorial-requests)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.adalo.com/ja/database.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
