コンテンツにスキップ

テーブルとフィールド

basedbの各テーブルはPostgreSQLのテーブルであり、各フィールドは型付きの列です。入力したラベル(「Échéance」)は、安定したスラッグ化によって読みやすい物理名(echeance)になります。アクセント記号を除き、小文字にし、予約語を避けます。

型PostgreSQLの列備考
短文テキストtext1行
長文テキストtextMarkdown:グリッドには抜粋、ホバーでレンダリング表示、専用エディター。列を引用できます
リッチテキストtext + CHECK書き込み時にサニタイズされるHTML。ビジュアルエディターで編集します(後述)
数値numeric浮動小数点は使いません。金額に誤差が生じません
通貨、パーセント、期間、評価numeric数値とその表示形式:12,50 €、15 %、1:30、★★★★☆
チェックボックスboolean
日付date
日時timestamptz絶対的な時点。閲覧者のタイムゾーンで表示されます
単一選択text + CHECK選択肢ごとに色、アイコン、画像を設定できます
複数選択text[] + CHECK配列演算子でフィルターできます
メールtext + CHECKデータベースが検証するアドレス。クリックで開けます
電話番号、バーコード、住所text短文テキストとその形式:発信リンク、等幅フォント、地図へのリンク
URLtext + CHECK入力時に補完されます(exemple.fr → https://exemple.fr)
メンバーuuidワークスペースのメンバー。指定するとその人に通知されます
自動採番bigint IDENTITY列既存の行にも番号を振ります。誰も入力しません
リレーションuuid + FOREIGN KEY対象テーブルへの本物の外部キー
複数リレーションuuid[]複数のリンク先の行。整合性はトリガーで保たれます
数式生成列STOREDPostgreSQLが計算します(または読み取り時に計算。数式を参照)
ルックアップ、ロールアップ、カウントなし読み取り時に、リレーションをたどって計算されます
ボタンなしアドレスを開くか、オートメーションを実行します
ファイル、画像jsonb(メタデータ)バイト列はファイルストレージに保存されます

各テーブルにはシステム列もあります:_id(UUID v7)、_created_at、_updated_at、_created_by、_updated_by。トリガーで管理され、APIから書き込むことはできません。グリッドでは、列メニューのシステム情報にまとめられています。すべてのテーブルにありますが、役立つ場面は多くありません。

計算された期間、ルックアップ、カウントを含むテーブルのグリッド

インターフェースが約束することを、PostgreSQLが保証します。単一選択はCHECK制約、リレーションはFOREIGN KEY、URLやメールアドレスは正規表現です。これらに違反する直接SQLでの書き込みは、インターフェースと同じように拒否されます:

Check constraints:
"ck_opportunites__statut__enum" CHECK (statut = ANY (ARRAY['nouveau', 'qualifie', …]))
Foreign-key constraints:
"fk_opportunites__clients_id" FOREIGN KEY (clients_id) REFERENCES b_t4z56fq_ventes.clients(_id)

通貨、パーセント、期間、評価、電話番号、バーコード、住所は型と同じように選べますが、実際には形式です。列は数値またはテキストのままで、表示だけが変わります。

形式対象表示と入力
通貨数値12 500,00 € — ユーロ、ドル、ポンド、スイスフラン、カナダドル、円
パーセント数値15 %
期間秒数1:30。1h30、90 minとも入力できます
評価数値1〜10個の星。クリックで設定します
電話番号短文テキスト発信リンク
バーコード短文テキスト等幅フォント
住所短文テキスト地図へのリンク。行の詳細では、住所を検索が該当する住所を全文表示で提案します。地図ビューがその位置を示します

形式はあとから(フィールドの編集画面の表示で)変更でき、保存済みの値には影響しません。形式は値を制限しません。5段階の評価に7を入れても、7のままです。

フィールドの編集画面で、既定値は、指定なしで作成された行が受け取る値を決めます:

選択対象作成された行が受け取るもの
固定値ほとんどの型選んだ値——ステータス「Nouveau」、優先度3など
今日の日付日付作成日、本人のタイムゾーンで
作成時日付と時刻正確な時刻
行を作成する人人物作成した人——「担当者:自分」

新規の行の詳細やフォームは、あらかじめ入力された状態で開きます。フィールドを空にすれば空のままです。既定値は、あらゆる作成——インターフェース、API、MCP、インポート、共有フォーム、オートメーション——に適用され、その人が変更できないフィールドにも適用されます:これはテーブルの規則だからです。既存の行は変わらず、直接SQLでの挿入には既定値は適用されません:basedbが適用するのであり、列自体が適用するわけではありません。

数式は英語で書きます(フランス語の関数名も使えます)。フィールドは角かっこで囲み、引数は,で区切ります:

ROUND([Montant HT] * (1 + [Taux de TVA]), 2)
IF([Payée], FALSE, DAYS(TODAY(), [Échéance]) > 0)
DAYS([Fin], [Début])

エディターには、挿入できるフィールドと関数のパネルが表示されます。エラーが起きると、原因となったフィールドや文字が示されます。

分類関数
論理IF、IFBLANK、ISBLANK、AND、OR、NOT、TRUE、FALSE
数値ROUND、ABS、CEILING、FLOOR、MIN、MAX
テキストUPPER、LOWER、TRIM、LEFT、RIGHT、LEN、TEXT、VALUE
日付YEAR、MONTH、DAY、WEEKDAY、DAYS、ADD_DAYS、DATE、TODAY、NOW
演算子+ - * /、テキストの連結には&、= <> < <= > >=

数式はPostgreSQLの生成列になります。psqlや各種ツールからも、ほかの列と同じように読めます。日付に依存する数式(TODAY()、NOW())や、ルックアップ・ロールアップを参照する数式は読み取り時に計算されます。basedb内ではフィルターや並べ替えに使えますが、直接SQLからは存在しません。

数式から別の数式やリレーションを直接参照することはできません。それにはルックアップを使います。テキストの一部の抽出や置換には、今後対応する予定です。

ルックアップ、ロールアップ、カウント

Section titled “ルックアップ、ロールアップ、カウント”

次の3つのフィールドは、リレーションをたどって、どちらの方向にも値を読み取ります。「プロジェクトの顧客」だけでなく、「『Projet』でリンクされたタスク」も対象です:

  • ルックアップは、リンク先の行の値、またはその値の一覧を取得します。例:プロジェクトの顧客の都市。
  • ロールアップは、リンク先の行について計算します:値の数、合計、平均、最小、最大。例:顧客の売上高、その顧客のレビューの平均評価。
  • カウントは、リンク先の行を数えます。例:プロジェクトのタスク数。

これらは読み取りのたびに、読む人の権限で計算されます。リンク先のテーブルにアクセスできなければ、このフィールドも見えません。フィルターや並べ替えに使えます。たどれるリレーションは1つだけで、書き込みはできず、列を持たないため直接SQLには存在しません。また、インポート、フォーム、履歴にも含まれません。

リレーションは、ある行を同じデータベース内の別のテーブルの行に結びつけます。グリッドには対象の行の表示値、つまりそのテーブルの表示フィールドとして指定した列の値が表示されます。フィルターはリレーションをたどれます(clients_id.ville eq "Lyon")。ある行を参照している行は、その行の詳細に表示されます。

複数の行をリンクにチェックを入れると、リレーションは複数リレーションになります。1つのタスクが複数のタスクに依存したり、1つの記事が複数のカテゴリーに属したりできます。リンクされた行はバッジで表示され、検索して選び、行の詳細からクリックで開けます。対象の行を削除すると、それを参照していた一覧から外されます。設定によっては、削除自体を拒否することもできます。has_any、has_all、is_nullフィルターが使え、これらもリレーションをたどれます(taches_ids.titre contains "logo")。複数リレーションは、並べ替え、グループ化、インポートにはまだ対応していません。

ボタンフィールドには値がなく、アクションを実行します。アドレスを開く(https://またはmailto:。行の値を引用できます:mailto:{{E-mail}})か、同じテーブルでボタンをトリガーとするオートメーションを実行します。セル、カード、行の詳細に表示されます。

データベース、テーブル、フィールドには説明を付けられ、マイグレーションなしで変更できます。説明は、psqlが読むCOMMENT ON、生成されるドキュメント、そしてエージェントがdescribe_tableで読む内容にコピーされます。

リッチテキストは長文テキストのHTML版で、フィールドの作成時に選びます(「リッチテキスト (HTML)」)。見出し、太字、斜体、下線、取り消し線、リスト、引用、コード、リンク、区切り線を、ビジュアルエディターで扱えます。HTMLは、インターフェース、API、MCPサーバー、インポートのいずれから来たものでも書き込み時にサニタイズされます。さらにCHECK制約が、SQLで直接書き込まれた危険な形式(<script>、on…属性、javascript:)も拒否します。画像、表、色は使えません。データベースが保持しないものは、最初から提供しません。

長文テキスト(通常でもリッチでも)は、同じ行の列を引用できます。エディターの列メニューで、カーソル位置に引用を挿入します。リッチテキストではバッジとして、Markdownでは{{Ville}}として挿入されます。

配送予定日は{{Livraison}}、配送先は{{Ville}}です。

  • 列には、書かれたとおりの引用が物理名で保存されます({{ville}})。これがpsqlで読める内容です。
  • それ以外のすべての場所(グリッド、行の詳細、API、MCPサーバー、共有ビュー、オートメーション)では、テキストはその行の値に置き換えて読まれます:「配送予定日は02/10/2026、配送先はLyonです。」都市を変えれば、テキストも変わります。
  • 単一選択はラベルで、メンバーは名前で、日付は各自の形式で表示されます。リッチテキストに挿入された値が、マークアップとして解釈されることはありません。
  • 読む人が閲覧できない列からは何も表示されません。値も名前も出ません。

リッチテキストをAIで埋めることはできません。モデルが書くのはテキストであり、サニタイズされたHTMLではないからです。

データベースのスキーマ画面(サイドバーの ⋯ メニュー内)には、テーブルとそのフィールドが一覧表示されます。追加、名前の変更、必須化、並べ替え、説明の記入、表示フィールドの指定ができます。

データベースのスキーマ画面

構造の変更には管理レベルが必要です。このレベルがない場合、画面は閲覧専用になり、ボタンも鉛筆アイコンもハンドルも表示されません。必須設定と表示フィールドは表示されますが、変更はできません。いずれにしてもサーバーはすべての変更を拒否しますが、画面が受け付けるふりをすることもありません。

フィールドの追加、名前の変更、型の変更はマイグレーションエンジンを通ります。段階的な計画、短時間のロック、そしてデータを変換できない場合には理由を明示した拒否が行われます。

名前の変更は、データベース、テーブル、フィールドのいずれも1つのダイアログで行います。ラベルは常にマイグレーションなしで変わります。管理者には、その下に「データベース上の名前も変更:clients → comptes」が表示されます。チェックを入れると物理名も変わり、影響分析が表示されます。古い名前を参照しているクエリ、SQLビュー、オートメーションの一覧です。古い名前は、クエリを更新するまでの間、互換エイリアス(ビュー)によって引き続き利用できます。

削除しても、すぐには何も消えません。テーブルやデータベースは退避され(zz_supprime_…)、SQLでは引き続き読めます。削除したデータベースは復元できます。テーブル単体をインターフェースから復元する機能は今後対応予定です。完全なパージはシステム管理者だけが実行でき、30日後に、検証済みのCSVエクスポートから始まります。

basedbは、AIネイティブなソフトウェアスタジオEodiaが開発するフリーソフトウェアです。