コンテンツにスキップ

データビルダー

Archie Coreデータビルダーは、データベースのテーブル、フィールドタイプ、およびテーブル間の関係を定義するためのデータモデリングインターフェースです。

データビルダーを開くには、サイドバーのData Model(データモデル)をクリックし、作業したいテーブルを選択して、Schema(スキーマ)タブをクリックします。

alt text

定義された各テーブルに対して、Archie CoreのGraphQLエンジンは、GraphQLスキーマオブジェクトタイプと、リゾルバーを備えた対応するクエリ、ミューテーション、サブスクリプションフィールドを自動的に作成します。

これは、すべての作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)のアクション(CRUD)、およびリアルタイム接続(Websocket)が、ワークスペース固有のAPIエンドポイントを介してすぐに使用できることを意味します。

バックグラウンドでは、Archie Coreはワークスペース専用のPostgreSQLデータベースインスタンスをプロビジョニングします。PostgreSQLは、その信頼性とデータの整合性で知られる高度なオープンソースのリレーショナルデータベースです。複雑なクエリを効率的に処理し、ACID(原子性、一貫性、分離性、耐久性)への準拠を完全にサポートします。

+ Add Table(+ テーブルを追加)ボタンをクリックして、新しいテーブルを作成します。新しいテーブルのデフォルト名は「untitled_table」です。すべてのテーブルには一意の名前が必要です(attributeworkspaceという名前とその複数形は予約されており、大文字小文字を問わず使用できません)。

テーブルが作成されるとすぐに、対応するGraphQLスキーマタイプと、クエリ、ミューテーション、サブスクリプションのリゾルバーが自動的に生成されます。

alt text

テーブルが作成された後、フィールドとリレーションを定義できます。テーブルへのすべての更新はリアルタイムで公開され、データモデルの定義と高可用性の維持の間でシームレスな体験を提供します。

テーブルが更新されるとすぐに、対応するGraphQLスキーマタイプと、クエリ、ミューテーション、サブスクリプションのリゾルバーが自動的に更新されます。

テーブル関連のエラーや間違いを最小限に抑えるために、Archie Coreは多くの有害なアクションから保護します。これには以下が含まれます:

  • 必須ではないフィールドを必須に変更する場合、Default Value(デフォルト値)を求めるプロンプトが表示されます。
  • 既存のフィールドタイプが更新されると、日付、数値、テキストフィールドの値は自動的に変換されます。
  • 一意でないフィールドを一意に変更する場合、現在のレコードが一意の値を持っているか検証されます。

テーブルを削除するには:

  1. テーブル名に移動し、...をクリックします。
  2. Delete this Table(このテーブルを削除)をクリックします。
  3. 確認ダイアログが開きます。テーブル名を入力し、Delete(削除)をクリックします。

危険: 削除されたテーブルは復元できず、既存のテーブルレコードは失われます。さらに、削除されるテーブルに関連するテーブル(belongs toおよびhas many、必須かどうかに関わらず)がある場合、それらの関係は切断されます。

alt text

Archie Coreは、リレーショナルデータベースに期待されるものと一致する3種類のテーブル関係の定義をサポートしています:

タイプAからBBからA
1対1テーブルAのレコードは、テーブルBのレコードをhave_one(1つ持つ)またはbelong_to(属する)可能性があります。テーブルBのレコードは、テーブルAのレコードをhave_one(1つ持つ)またはbelong_to(属する)可能性があります。
1対他テーブルAのレコードは、テーブルBのレコードをhave_many(多数持つ)可能性があります。テーブルBのレコードは、テーブルAのレコードをhave_one(1つ持つ)またはbelong_to(属する)可能性があります。

alt text

2つのテーブル間の関係の定義は、あるテーブルを別のテーブルにドラッグアンドドロップするか、新しいテーブルフィールドを作成するときにデータタイプとしてTable(テーブル)を選択することで実行できます。

テーブル間のhas manyhas onebelongs toの関係を指定するため。

構成

  • Name(名前): 関連付けるテーブルを選択するため。
  • Related Table(関連テーブル): 対応するテーブルに表示されるリレーションの名前。
  • Type(タイプ): 関係がhas onehas manyか。
  • Description(説明): フィールドに関する情報を記述できるオプションのテキストボックス。
  • Mandatory(必須): フィールドの関係が必須かどうか。

3つのテーブルタイプがあります:カスタム、ビュー、データタイプです。

カスタムテーブルは、管理者が任意のワークスペースで作成したテーブルです。これらは完全にカスタマイズ可能です。

ビューテーブルは、複数のテーブルのフィールドを単一のビューに集約する仮想テーブルです。内部的には、SQLステートメントの結果セットに基づいています。ワークスペースでは、APIエクスプローラーでviewCreate GraphQLミューテーションを使用して作成できます。

タイプを使用すると、相互に排他的な値の静的で順序付けられたセットを定義できます。標準のテキストフィールドとは異なり、Enum(列挙型)はデータ入力を事前定義された定数の特定のリストに制限します。

一般的な例には、ステータスインジケーター(例:DRAFTPUBLISHEDARCHIVED)、ユーザーロール、カテゴリラベルなどがあります。

データベーススキーマでEnumを使用すると、いくつかの主要な利点があります:

  • データの整合性: Enumはデータベースレベルで厳密なデータ検証を施行します。フィールドは定義されたリストからの値のみを受け入れるため、タイプミスや一貫性のない命名規則によるエラーを排除します(例:優先度フィールドでの「High」、「high」、「Hi」の混在を防ぐ)。
  • コードの一貫性: 許容される値の信頼できる唯一の情報源(SSOT)を提供し、アプリケーションロジックをより予測可能で保守しやすくします。
  • 可読性: Enumはデータを自己記述的にします。PAYMENT_FAILEDのような値は、error_code: 3のような任意の数値コードよりも、開発者やアナリストにとって意味があります。
  • パフォーマンス: PostgreSQLでは、Enumは内部的に効率的に保存されますが、読み取り可能な文字列として提示され、パフォーマンスと人間による可読性のバランスが取れています。