本文へ移動
Wagby11
マニュアルのグループを選ぶ

WAGBY11 MANUAL / 02

主キーを設定する

一件のデータを識別する主キーと、業務で使うコードを分ける考え方を説明します。

最終更新日:

モデルの小目次へ

1. このページで伝える機能

主キーは、一件のデータを他のデータと区別するための項目です。商品名が変わっても同じ商品を更新できるよう、この例では変更しない内部IDを主キーにします。

業務で入力する商品コードは別項目にし、一意制約で重複を防ぎます。主キーと商品コードの役割を分けることで、コードを変更しても同じデータとして扱えます。

2. Wagby11で実現できること

2.1 商品IDで同じ商品を識別する

登録直後の商品には、商品ID「1」と商品コード「P001」が表示されています。

商品ID1、商品コードP001の商品詳細画面
商品IDが主キーです。商品コードは業務で使う別の項目です。

この商品の商品コードを「P001-R」、単価を1500に変更して保存しました。商品IDは「1」のままで、データは新規追加されず、同じ商品の情報が更新されます。

商品コードP001-Rに変更しても商品ID1のままの商品詳細画面
コードを変更しても主キーは保持されます。単価変更と監査日時の更新も確認できます。

2.2 用途に合わせて主キーを選ぶ

構成使い方
自動採番IDを主キーにする本例。変更する可能性のある業務コードを主キーと分ける
業務コードを主キーにする手入力のコードで識別する。登録時に主キー値の入力が必要
複数項目を主キーにする親と明細などを複合主キーで識別する。詳しくは親子関係へ

このページの画面と設定例は、自動採番IDを主キーにする構成です。運用中の主キー構造を変える場合は、既存データと参照元の移行も必要になるため、新しい設定だけを上書きして変更しないようにします。

3. AIへの指示例

最小限の指示例

商品の主キーを商品IDにして、商品コードとは分けて管理してください。

AIはIDの型や採番方法、商品コードの制約を、既存の定義や利用目的から類推して補います。主キーを変更する必要があるか、既存データへの影響はどうかも確認して進めます。

より詳細な指示例

商品を識別する主キーと、業務で使う商品コードを分けてください。
商品IDは自動採番する変更不可の主キーとし、商品コードは最大30文字の必須項目で、他の商品との重複を禁止してください。
商品コードを変更しても、商品IDが変わらず同じ商品の情報を更新できるようにしてください。
すでに主キーや参照元、登録データがある場合は、現在の構成と移行の要否を確認してください。
既存の主キーを安易に置き換えず、変更方針と確認結果を説明してください。

4. 編集されるAppSchemaの例

商品IDにpk: trueを指定し、商品コードには指定しません。商品コードの重複はuniqueで別に防ぎます。以下はentity.attributesの抜粋です。

- name: 商品ID
  name_en: productId
  type: autoid
  pk: true
- name: 商品コード
  name_en: productCode
  type: string
  length: 30
  not_null: true
  unique: uq_product_code
  validation:
    presence: { create: error, update: error }

標準画面の更新・詳細・削除は、対象の主キーでデータを識別します。利用者が更新フォームで主キーを入力し直す必要はありません。自動採番の動作はIDを自動採番するで説明します。

5. 参考資料

guide:モデルを作成する(主キー)
designer/docs/appschema/html/guide/03-model/01-create-model.html
reference:entity(主キー・登録時の主キー入力)
designer/docs/appschema/html/reference/06-entity.html
guide:エンティティ間の関係
designer/docs/appschema/html/guide/03-model/03-relations.html