第 2 章:データモデリング — 2 つのテーブルでチケットシステムを完成

前の章で NocoBase をインストールし、インターフェースを理解しました。ここからは、チケットシステムの骨格を組み立てます——データモデルの定義です。

この章では、チケットと分類の 2 つのデータテーブルを作成し、フィールドタイプ(単行テキスト、ドロップダウン選択、多対一リレーションなど)を設定して、テーブル間のリレーションを構築します。データモデルはシステムの基盤です。どのデータを保存するか、データ同士がどう関係しているかを先に整理しておけば、後のインターフェース構築や権限設定がスムーズに進みます。

2.1 データテーブルとフィールドとは

Excel を使ったことがあれば、データテーブルの理解は簡単です。

Excel の概念NocoBase の概念説明
ワークシートデータテーブル(Collection)ある種類のデータを格納するコンテナ
列見出しフィールド(Field)データの属性を記述する
各行レコード(Record)1 件の具体的なデータ

02-data-modeling-2026-03-11-08-32-41

たとえば、これから作る「チケットテーブル」は Excel の表のようなものです。各列がフィールド(タイトル、ステータス、優先度……)、各行が 1 件のチケットレコードになります。

ただし、NocoBase は Excel よりもはるかに強力です。複数のデータテーブルタイプをサポートしており、タイプごとに異なる機能が備わっています。

テーブルタイプ適した場面
通常テーブルほとんどの業務データチケット、注文、顧客
ツリーテーブル階層関係のあるデータカテゴリ分類、部門組織図
カレンダーテーブル日付イベント会議、シフト
ファイルテーブル添付ファイル管理ドキュメント、画像

今回は通常テーブルツリーテーブルを使います。他のタイプは必要になったときに学びましょう。

データソース管理に入る:左下の 「データソース管理」 アイコン(歯車の隣のデータベースアイコン)をクリックすると、「メインデータソース」が表示されます。すべてのテーブルはここに作成します。

02-data-modeling-2026-03-11-08-35-08

2.2 コアテーブルの作成:チケット

本題に入りましょう。まずシステムのコアとなるチケットテーブルを作成します。

テーブルの作成

  1. データソース管理ページで メインデータソース をクリックして開きます

02-data-modeling-2026-03-11-08-36-06

  1. 「データテーブルを作成」 をクリックし、「通常テーブル」 を選択します

02-data-modeling-2026-03-11-08-38-52

  1. データテーブル名:tickets、データテーブルタイトル:チケット

02-data-modeling-2026-03-11-08-40-34

テーブル作成時、システムはデフォルトでシステムフィールドのセットにチェックを入れます。各レコードのメタ情報が自動的に記録されます。

フィールド説明
ID主キー、分散一意識別子
作成日時レコードの作成時間
作成者誰がこのレコードを作成したか
最終更新日時最後に更新された時間
最終更新者最後に更新したユーザー

これらのシステムフィールドはデフォルトのままで構いません。手動で管理する必要はありません。特定の場面で不要な場合は、チェックを外すこともできます。

基本フィールドの追加

テーブルが作成できたら、次はフィールドを追加します。チケットテーブルの 「フィールドを設定(Configure fields)」 をクリックすると、先ほどデフォルトのシステムフィールドがリストに表示されています。

02-data-modeling-2026-03-11-08-58-48

02-data-modeling-2026-03-11-08-59-47

右上の 「フィールドを追加(Add field)」 ボタンをクリックすると、フィールドタイプのドロップダウンリストが展開されます。追加したいフィールドタイプを選択してください。

02-data-modeling-2026-03-11-09-00-22

まずチケット自体のフィールドを追加し、リレーションフィールドは後で追加します。

1. タイトル(単行テキスト)

各チケットには、問題を簡潔にまとめるタイトルが必要です。「フィールドを追加」「単行テキスト」 を選択します。

02-data-modeling-2026-03-11-09-01-00

  • フィールド名:title、フィールドタイトル:タイトル
  • 「バリデーションルールを設定」 をクリックし、「必須」 ルールを追加します

02-data-modeling-2026-03-11-09-02-40

2. 説明(Markdown(Vditor))

問題を詳細に説明するためのフィールドで、書式設定に対応し、画像やコードの貼り付けが簡単にできます。「フィールドを追加」→「Media」カテゴリには 3 つの選択肢があります。

フィールドタイプ特徴
Markdown基本的な Markdown、シンプルなスタイル
Rich Textリッチテキスト、シンプルなスタイル + 添付ファイルアップロード
Markdown(Vditor)最も機能豊富。WYSIWYG、インスタントレンダリング、ソースコード編集の 3 つのモードに対応

ここでは Markdown(Vditor) を選びます。

02-data-modeling-2026-03-11-09-09-58

  • フィールド名:description、フィールドタイトル:説明

02-data-modeling-2026-03-11-09-10-50

3. ステータス(ドロップダウン - 単一選択)

02-data-modeling-2026-03-11-09-12-00 チケットの提出から完了まで、進捗を追跡するためのステータスが必要です。

  • フィールド名:status、フィールドタイトル:ステータス
  • 選択肢を追加(各選択肢には「オプション値」と「オプションラベル」を入力し、色は任意):
オプション値オプションラベル
pending未対応Orange(日暮)
in_progress対応中Blue(拂晓蓝)
completed完了Green(極光緑)

02-data-modeling-2026-03-11-09-17-44

まず選択肢を入力して保存します。その後、再度フィールドの 「編集(Edit)」 をクリックすると、「デフォルト値」で 「未対応」 を選択できるようになります。

02-data-modeling-2026-03-11-09-20-28

02-data-modeling-2026-03-11-09-22-34

初回作成時にはまだ選択肢データが存在しないため、デフォルト値を選べません。保存してから再度設定してください。

なぜドロップダウン単一選択を使うのか?ステータスは固定の選択肢であり、ドロップダウンを使うことでユーザーが自由入力するのを防ぎ、データの一貫性を保つことができます。

4. 優先度(ドロップダウン - 単一選択)

チケットの緊急度を区別し、担当者が優先度順に対応できるようにします。

  • フィールド名:priority、フィールドタイトル:優先度
  • 選択肢を追加:
オプション値オプションラベル
low
medium
highOrange(日暮)
urgent緊急Red(薄暮)

ここまでで、チケットテーブルには 4 つの基本フィールドが追加されました。しかし、チケットには「分類」が必要ですよね?たとえば「ネットワーク問題」「ソフトウェア障害」など。

分類をドロップダウンで作ることもできますが、すぐに問題が見つかるでしょう。分類にはサブ分類がある可能性があります(「ハードウェア問題」の下に「ディスプレイ」「キーボード」「プリンター」など)。ドロップダウンでは対応しきれません。

分類を専門に管理するもう 1 つのテーブルが必要です。しかも、NocoBase のツリーテーブルで作るのが最適です。

2.3 分類ツリーテーブルの作成:分類に階層を持たせる

ツリーテーブルとは

ツリーテーブルは特殊なデータテーブルで、親子関係を組み込みでサポートします。各レコードは「親ノード」を持つことができます。階層構造を持つデータには最適です。

ハードウェア問題      ← 第 1 階層
├── ディスプレイ      ← 第 2 階層
├── キーボード・マウス
└── プリンター
ソフトウェア障害
├── オフィスソフト
└── システム問題
ネットワーク問題
アカウント権限

通常テーブルの場合、「親分類」フィールドを手動で作成してこの関係を実現する必要があります。一方、ツリーテーブルは自動的にこれを処理してくれ、ツリー表示や子レコードの追加などの操作もサポートするため、手間が大幅に省けます。

テーブルの作成

  1. データソース管理に戻り、「データテーブルを作成」 をクリックします

  2. 今度は 「ツリーテーブル」(通常テーブルではありません!)を選択します 02-data-modeling-2026-03-11-09-26-07

  3. データテーブル名:categories、データテーブルタイトル:チケット分類

02-data-modeling-2026-03-11-09-26-55

作成後、テーブルにはシステムフィールドに加えて 「Parent」「Children」 の 2 つのリレーションフィールドが自動的に表示されます。これがツリーテーブルの特別な機能です。Parent で親ノードに、Children ですべての子ノードにアクセスでき、手動で追加する必要はありません。

02-data-modeling-2026-03-11-09-27-40

フィールドの追加

「フィールドを設定」 をクリックしてフィールドリストに入ると、システムフィールドと自動生成された Parent、Children フィールドが確認できます。 右上の 「フィールドを追加」 をクリックします。

フィールド 1:分類名

  1. 「単行テキスト」 を選択
  2. フィールド名:name、フィールドタイトル:分類名
  3. 「バリデーションルールを設定」 をクリックし、「必須」 ルールを追加

フィールド 2:色

  1. 「色」 を選択
  2. フィールド名:color、フィールドタイトル:

02-data-modeling-2026-03-11-09-28-59

色フィールドにより、各分類に識別色を付けることができ、インターフェースに表示する際により直感的になります。

02-data-modeling-2026-03-11-09-29-23

ここまでで、2 つのデータテーブルの基本フィールドの設定が完了しました。次はテーブル同士をリレーションで結びましょう。

2.4 チケットテーブルに戻る:リレーションフィールドの追加

リレーションフィールドは初めてだと少し抽象的かもしれません。 もし理解しにくいと感じたら、先に第 3 章:ページを構築するに進み、実際のページ操作でデータがどのように表示されるかを体験してから、ここに戻ってリレーションフィールドを追加しても問題ありません。

チケットは分類、提出者、担当者とリレーションを持つ必要があります。こうしたフィールドはリレーションフィールドと呼ばれ、「タイトル」のように直接テキストを保存するのではなく、別テーブルのレコードの ID を保存し、その ID を通じて対応するレコードを見つけます。

具体的なチケットを例に見てみましょう。左側がチケットの各属性で、「分類」と「提出者」にはテキストではなく ID が格納されています。システムはこの ID を使って、右側のテーブルから対応するレコードを正確に見つけます。

02-data-modeling-2026-03-12-00-50-10

インターフェースに表示されるのは名前(「ネットワーク問題」「田中さん」)ですが、裏では ID によるリレーションで紐づいています。複数のチケットが同じ分類や同じユーザーを指すことができます——このリレーションを多対一と呼びます。

リレーションフィールドの追加

チケットテーブルの「フィールドを設定」→「フィールドを追加」に戻り、「多対一」 を選択します。 02-data-modeling-2026-03-12-00-52-39

作成時には以下の設定項目が表示されます。

設定項目説明入力方法
ソースデータテーブル現在のテーブル(自動入力済み)変更不要
ターゲットデータテーブルどのテーブルにリレーションするか対応するテーブルを選択
外部キー現在のテーブルに保存されるリレーション列名わかりやすい名前を入力
ターゲットデータテーブル識別フィールドデフォルト idデフォルトのままで OK
ON DELETEターゲットレコード削除時の処理方式デフォルトのままで OK

02-data-modeling-2026-03-12-00-58-38

外部キーはデフォルトでランダムな名前(例:f_xxxxx)が自動生成されますが、わかりやすい名前に変更することをお勧めします。後のメンテナンスが楽になります。命名は小文字のアルファベットとアンダースコア(例:category_id)を使い、キャメルケースは避けてください。

この方法で 3 つのフィールドを順番に追加します。

5. 分類 → チケット分類テーブル

  • フィールドタイトル:分類
  • ターゲットデータテーブル:「チケット分類」 を選択(リストにない場合はテーブル名を入力すると自動作成されます)
  • 外部キー:category_id

6. 提出者 → ユーザーテーブル

このチケットを誰が提出したかを記録します。NocoBase にはユーザーテーブルが組み込まれているので、直接リレーションするだけです。

  • フィールドタイトル:提出者
  • ターゲットデータテーブル:「ユーザー」 を選択
  • 外部キー:submitter_id 02-data-modeling-2026-03-12-01-00-09

7. 担当者 → ユーザーテーブル

このチケットを誰が対応しているかを記録します。

  • フィールドタイトル:担当者
  • ターゲットデータテーブル:「ユーザー」 を選択
  • 外部キー:assignee_id

02-data-modeling-2026-03-12-01-00-22

2.5 データモデルの全体像

ここまでで構築したデータモデルの全体を振り返りましょう。

02-data-modeling-2026-03-16-00-30-35

}o--|| は多対一リレーションを表します。左側が「多」、右側が「一」です。

まとめ

この章ではデータモデリング、つまりチケットシステム全体の骨格を完成させました。

  1. チケットテーブル(tickets):4 つの基本フィールド + 3 つのリレーションフィールド、通常テーブルで作成
  2. チケット分類テーブル(categories):2 つのカスタムフィールド + 自動の Parent/Children フィールド、ツリーテーブルで作成し、階層分類をネイティブにサポート

いくつかの重要な概念を学びました。

  • データテーブル(Collection) = ある種類のデータを格納するコンテナ
  • データテーブルタイプ = 場面に応じて異なるタイプを選択(通常テーブル、ツリーテーブル……)
  • フィールド(Field) = データの属性。「フィールドを設定」→「フィールドを追加」で作成
  • システムフィールド = ID、作成日時、作成者など。テーブル作成時に自動でチェック
  • リレーションフィールド(多対一) = 別テーブルのレコードを指し示し、テーブル間のリレーションを構築

以降のスクリーンショットにはすでにデータが入っていますが、これはデモ用に事前に入力したテストデータです。焦らないでください。NocoBase では、データの追加・削除・更新・参照はすべてフロントエンドのページで行います。第 3 章ではデータを表示するテーブルを構築し、第 4 章ではデータを入力するフォームを作成していきます。

次の章のプレビュー

骨格ができましたが、まだ空のテーブルだけです。次の章では、ページを構築してデータを実際に表示できるようにします。

次の章でお会いしましょう!

関連リソース