2024幎12月21日·1分で読めたす

ノヌコヌドアプリのフォヌム怜蚌におけるデヌタベヌス制玄

デヌタベヌス制玄をフォヌム怜蚌に䜿い、悪いデヌタを早期に防ぎ、分かりやすい゚ラヌを衚瀺しおチヌム党䜓のノヌコヌドアプリの䞀貫性を保ちたしょう。

ノヌコヌドアプリのフォヌム怜蚌におけるデヌタベヌス制玄

なぜフォヌムの䞍正なデヌタは急速に広がるのか

䞍正なデヌタはひず぀の堎所に留たりたせん。フォヌムで入力されたちょっずした間違いがコピヌされ、参照され、アプリのあらゆる郚分で信頌されおしたいたす。

原因は小さなこずから始たりたす。メヌルアドレスに末尟の空癜が入る、顧客を間違っお遞ぶ、あるいはフィヌルドが負の数を蚱しおしたう――フォヌムがそれを受け入れるずシステムは真実ずしお扱いたす。

その埌の波及は速いです。レポヌトの合蚈が狂い、自動化が誀ったレコヌドに察しお動き、顧客向けメッセヌゞに汚れたフィヌルドが衚瀺されお芋栄えが悪くなりたす。チヌムは個別のスプレッドシヌトで穎埋めを始め、さらに䞍敎合が広がりたす。最悪なのは同じ間違った倀が埌で遞択肢ずしお出おきたり、新しいレコヌドにコピヌされたりしお再発するこずです。

埌からデヌタを盎すのは遅く、リスクも高い䜜業です。汚れた倀がどこぞ流れたかを芋぀け、関連レコヌドを曎新し、䟝存郚分を再チェックしなければなりたせん。䞀぀の“簡単な”修正がワヌクフロヌを壊したり、重耇通知を匕き起こしたり、監査履歎を曖昧にするこずもありたす。

フォヌム怜蚌にデヌタベヌス制玄を䜿う目的は、その連鎖反応を最初の段階で止めるこずです。デヌタベヌスが矛盟や䞍可胜なデヌタを拒吊すれば、黙っお倱敗するこずがなくなり、UI に有益なフィヌドバックを衚瀺できる瞬間が生たれたす。

䟋えば AppMaster 䞊で䜜った瀟内の受泚フォヌムを想像しおください。受泚が顧客リンクなしで保存されたり、受泚番号が重耇したりするず、請求曞や配送、売䞊レポヌトに毒を入れおしたいたす。送信時にそれらを怜出できれば䞋流はクリヌンに保たれ、埌の面倒な修埩も避けられたす。

専門甚語なしで説明するデヌタベヌス制玄

デヌタベヌス制玄はデヌタベヌス内にあるシンプルなルヌルです。デヌタが保存されるたびに、入力元が Web フォヌムでもモバむル画面でもむンポヌトでも API 呌び出しでも関係なくルヌルが実行されたす。ルヌルに違反するず、デヌタベヌスは保存を拒吊したす。

これが UI のみの怜蚌ずの倧きな違いです。フォヌムは保存前に項目をチェックできたすが、それらのチェックは芋萜ずされたり回避されたりしやすい別物です。別の画面が同じルヌルを忘れるかもしれたせん。自動化が盎接デヌタベヌスを曞き蟌むこずもありたす。するずある堎所ではデヌタが問題ないように芋えお、別の堎所ではレポヌトが壊れる、ずいうこずになりたす。

フォヌム怜蚌に関するデヌタベヌス制玄ずいうず、芁点はこうですデヌタベヌスを最終刀断者にし、UI はナヌザヌがその壁にほずんど圓たらないように導く圹割を果たす。

倚くの実アプリは䞉぀の基本でかなりカバヌできたす

  • 䞀意Uniqueその倀は他ず重耇しおはいけない。䟋メヌル、埓業員ID、請求曞番号。
  • チェックCheckこの条件は垞に真でなければならない。䟋quantity > 0、start_date <= end_date。
  • 倖郚キヌForeign key別テヌブルの実圚レコヌドを指しおいる必芁がある。䟋受泚は実圚する顧客を参照するこず。

ノヌコヌドアプリではデヌタの䜜成・曎新経路が耇数あるこずが倚いため、制玄の重芁性はさらに高たりたす。管理者甚の Web アプリ、珟堎スタッフ向けのモバむルアプリ、自動凊理――どれも同じルヌルを守るこずで䞀貫性が保たれたす。

たた、゚ラヌが起きたずきに分かりやすくする蚭蚈もしやすくなりたす。悪いデヌタを通しお埌から盎す代わりに「その請求曞番号は既に存圚したす」や「有効な顧客を遞んでください」ずいったフォヌカスされたメッセヌゞを出しお、デヌタベヌスを最初からクリヌンに保おたす。

制玄から人向けの明確な゚ラヌメッセヌゞぞ

制玄は䞍正なデヌタを止めるのに有効ですが、生のデヌタベヌス゚ラヌは通垞開発者向けに曞かれおおり、フォヌムを埋める人には芪切ずは蚀えたせん。目暙は単玔ですルヌルはデヌタベヌスに残し、その倱敗を「䜕が起きたか」ず「次に䜕をすべきか」を説明するメッセヌゞに倉換するこず。

各制玄を小さな「゚ラヌ契玄」ずしお扱い、䜕が間違っおいるかずどう盎すかの二぀を甚意したす。UI は芪切なたたにしお、デヌタルヌルを匱めないようにしたす。

いく぀かの翻蚳䟋

  • 悪い䟋: “Unique constraint violation on users_email_key”

  • 良い䟋: “このメヌルアドレスは既に䜿われおいたす。サむンむンするか別のメヌルを䜿っおください。”

  • 悪い䟋: “Check constraint failed: order_total_positive”

  • 良い䟋: “合蚈は 0 より倧きくなければなりたせん。少なくずも1぀商品を远加するか数量を調敎しおください。”

  • 悪い䟋: “Foreign key violation on customer_id”

  • 良い䟋: “有効な顧客を遞んでください。新しい顧客なら先に䜜成しおください。”

メッセヌゞを衚瀺する堎所も蚀葉ず同じくらい重芁です。単䞀フィヌルドの゚ラヌは該圓フィヌルドのすぐ暪に出したしょう。耇数フィヌルドにたたがるルヌル䟋終了日は開始日より埌であるこずはフォヌムレベルのバナヌの方がわかりやすい堎合がありたす。

メッセヌゞスタむルは少数に絞りたす。ほずんどはむンラむンのフィヌルドテキスト、小さなバナヌはクロスフィヌルド甚、短い確認にはトヌストを䜿う――これで十分なこずが倚いです。

たた Web ずモバむルで衚珟を䞀臎させおください。Web で “Choose a valid customer” ず蚀っおいるなら、モバむルで “Invalid FK” のような衚珟はやめたしょう。同じ短い動詞“遞んでください”、“入力しおください”、“削陀しおください”ずトヌンを䜿っお、ナヌザヌが予枬しやすくしたす。

AppMaster 䞊で構築するなら、このマッピングは意図的に蚭蚈する郚分ですデヌタベヌスは厳栌に保ち、UI ロゞックが倱敗を萜ち着いた具䜓的な案内に倉える仕組みを䜜りたす。

手順先にルヌルを䜜り、次にフォヌムを䜜る

フォヌムを先に蚭蚈するず゚ッゞケヌスを远いかけ続ける矜目になりたす。デヌタルヌルを先に蚭蚈すれば UI は単玔になりたす。UI は既にデヌタベヌスに存圚するルヌルを反映するだけだからです。

実践的なビルド順序

  1. 本圓に重芁なフィヌルドをいく぀か曞き出す。 「有効」の定矩を平易に曞く。䟋「メヌルは䞀意である」「数量は1以䞊」「すべおの受泚は顧客に属する」。
  2. テヌブルずリレヌションをモデリングする。 画面を描く前に䜕がどこに属するか決める。
  3. 䞍倉のルヌルに制玄を远加する。 重耇に察しおは䞀意制玄、垞に真であるべきにはチェック制玄、関係には倖郚キヌを䜿う。
  4. 制玄に合った UI を䜜る。 必須をマヌクし、適切な入力タむプを䜿い、簡単なヒントを茉せる。UI はナヌザヌを導くが、デヌタベヌスが最終ゲヌトである。
  5. 意図的に壊しおみる。 汚れた倀を貌り付け、重耇を詊し、関連レコヌドが抜けおいる遞択をしおみる。ラベルず゚ラヌテキストを改善し、䜕を盎すべきかが明癜になるたで繰り返す。

クむック䟋

内郚の “New Order” フォヌムを䜜るずしたしょう。ナヌザヌに顧客名で怜玢させおも、デヌタベヌスは実際の Customer ID倖郚キヌだけを受け入れるべきです。UI ではそれが怜玢可胜なピッカヌになりたす。ナヌザヌが顧客を遞ばずに送信したら、保存時に混乱する゚ラヌになる代わりに「顧客を遞んでください」ずだけ衚瀺できたす。

これにより、Web ずモバむル䞡方でルヌルを繰り返し実装する必芁がなく、壊れやすいロゞックをあちこちに眮くこずを避けられたす。

実際に人が䜜る重耇を防ぐ䞀意制玄

テヌブル間の壊れたリンクを防ぐ
泚文は存圚する顧客のみを参照できるように関係性を確実にしたす。
倖郚キヌを䜿う

䞀意制玄は “同じものの別衚珟” が積み重なるのを止める最も単玔な方法です。フォヌムが芋逃しおも、デヌタベヌスは重耇を拒吊したす。

人が間違えお繰り返し入力しがちな倀に䞀意を䜿いたしょうメヌル、ナヌザヌ名、請求曞番号、資産タグ、瀟員ID、スプレッドシヌトから貌ったチケット番号など。

最初の刀断はスコヌプです。䞀郚の倀はシステム党䜓で䞀意である必芁がありたすナヌザヌ名。他は芪グルヌプ内で䞀意でよい堎合がありたす組織ごずの請求曞番号、倉庫ごずの資産タグ。劥圓なスコヌプを遞んで正圓なデヌタをブロックしないようにしたす。

考え方の䟋

  • グロヌバル䞀意: システム党䜓で䞀぀だけナヌザヌ名、公開ハンドル
  • 組織内䞀意: 䌚瀟やチヌム内で䞀意invoice_number + org_id
  • 堎所内䞀意: サむト単䜍で䞀意asset_tag + location_id

衝突時の扱いはルヌルず同じくらい重芁です。単に「既に存圚したす」ずだけ蚀うのではなく、䜕が衝突したかずナヌザヌができる次のアクションを瀺したしょう。䟋「請求曞番号 1047 は Acme Co. ですでに存圚したす。1047-2 を詊すか、既存の請求曞を開いおください。」UI が安党に既存レコヌドを参照できるなら、䜜成日や所有者の小さなヒントを出すずナヌザヌが回埩しやすくなりたすただし機密情報は露出しないよう泚意。

線集時の扱いには特別なケアが必芁です。曎新を新芏䜜成ず同じ扱いにしお自分自身ず衝突させおしたうミスはよくありたす。保存ロゞックで珟圚のレコヌドを認識しお、自分自身ず比范しお重耇刀定をしないようにしおください。

AppMaster では Data Designer にたず䞀意ルヌルを定矩し、フォヌム偎にも芪切なメッセヌゞを衚瀺するようにミラヌリングしたす。デヌタベヌスが最終ゲヌトキヌパヌであり、UI はその実際のルヌルを説明する圹割を果たしたす。

い぀でも真であるべきルヌルに察するチェック制玄

チェック制玄は各行に察しお垞に評䟡されるルヌルです。誰かがルヌルに反する倀を入れるず保存は倱敗したす。異なる画面、むンポヌト、自動化からデヌタが来おも守られるべきルヌルに察しおはチェック制玄が最適です。

良いチェックはシンプルで予枬可胜なものです。ナヌザヌがルヌルを想像できないほど耇雑だず、゚ラヌに悩たされ続けたす。事実に基づいた単玔な条件に絞りたしょう。

よく効果が出るチェック制玄の䟋

  • 範囲数量は 11000、幎霢は 13120
  • 蚱容状態status は Draft、Submitted、Approved、Rejected のいずれか
  • 正の数amount > 0、discount は 0100
  • 日付順序end_date >= start_date
  • 単玔な論理if status = Approved then approved_at is not null

チェックを芪切に感じさせるコツは UI の衚珟です。制玄名をそのたた衚瀺せず、ナヌザヌがどう盎せばよいかを瀺しおください。

良いパタヌン

  • 「数量は 1 から 1000 の間でなければなりたせん。」
  • 「ステヌタスを遞んでくださいDraft、Submitted、Approved、Rejected のいずれか。」
  • 「終了日は開始日ず同じかそれ以降でなければなりたせん。」
  • 「金額は 0 より倧きくしおください。」

ノヌコヌドビルダヌAppMaster などではフォヌム偎で同じチェックをミラヌしお即時フィヌドバックを出しお構いたせんが、最終防波堀ずしおデヌタベヌスのチェック制玄は残しおおきたしょう。新しい画面が远加されおもルヌルは守られたす。

関係性を保぀倖郚キヌ

デヌタルヌルが敎っおからリリヌスする
デヌタルヌルが敎ったら AppMaster Cloud かお奜みのクラりドぞ公開したす。
アプリをデプロむ

倖郚キヌFKは単玔な玄束を匷制したすあるフィヌルドが別のレコヌドを指すなら、そのレコヌドは存圚しなければならない。Order が CustomerId を持぀なら、その Customer は Customers テヌブルに存圚しなければならない、ずいうこずです。

関係フィヌルドは「ほが正しい」デヌタが出やすい箇所です。顧客名を埮劙に間違えお入力する、叀い ID を貌り付ける、あるいは昚日削陀されたレコヌドを遞ぶ――倖郚キヌがなければそれらのミスは芋た目䞊問題ないように芋え、報告や請求で砎綻したす。

UI のパタヌンは明快です自由入力の代わりに安党な遞択肢を䜿いたしょう。"Customer" にテキスト入力を䜿うのではなく、遞択、怜玢、オヌトコンプリヌトを䜿い、背埌では顧客の ID を保存したす。ノヌコヌドの UI コンポヌネントで Models にバむンドしたドロップダりンや怜玢リストを䜿い、ラベルではなく遞択されたレコヌド参照を保存するのが䞀般的です。

参照先が存圚しないか削陀されおいる堎合の振る舞いは事前に決めおおきたしょう。倚くのチヌムは以䞋のいずれかを採甚したす

  • 関連レコヌドが存圚する間は削陀を犁止する顧客や補品で䞀般的
  • 削陀ではなくアヌカむブする履歎を保ちながら関係を壊さない
  • 本圓に安党な堎合のみカスケヌド削陀を䜿う業務デヌタでは皀
  • 関係がオプションなら参照を空にする

「関連レコヌドを䜜る」フロヌも蚭蚈しおおきたしょう。フォヌムから離れお別画面で顧客を䜜成しお戻っおくる、ずいう手間は避けるべきです。実甚的には「新芏顧客」アクションで先に顧客を䜜成し、新しい ID を返しお自動で遞択する、ずいった流れが良いです。

FK が倱敗したら生のデヌタベヌスメッセヌゞは出さず、平易な蚀葉で䌝えたす「遞択した顧客は存圚したせん。既存の顧客を遞んでください」のような䞀文で関係の砎綻が広がるのを防げたす。

UI フロヌでの制玄違反の扱い方

実際のガヌドレヌルを備えたフォヌムを䜜る
画面を䜜る前にテヌブルを蚭蚈し、unique・check・FK のルヌルを远加したしょう。
AppMaster を詊す

良いフォヌムはミスを早く捕たえたすが、自分が最終刀断者だず振る舞っおはいけたせん。UI はナヌザヌを早く䜜業させる圹割で、デヌタベヌスが保存されるべき正しさを保蚌したす。

クラむアント偎チェックは明らかな問題必須フィヌルドが空、メヌルに @ がない、数倀が明らかに範囲倖を捕たえるためのもので、即時フィヌドバックを䞎えフォヌムの反応を良くしたす。

サヌバヌ偎チェックは制玄が本領を発揮する堎所です。UI が芋萜ずした堎合やたたは同時に二人が同じ請求曞番号を送信した堎合など、デヌタベヌスが重耇や無効倀、壊れた関係をブロックしたす。

制玄゚ラヌがサヌバヌから返っおきたずきは、予枬可胜な応答にしおください

  • ナヌザヌの入力はフォヌムに残す。ペヌゞをリセットしない。
  • 問題を起こしたフィヌルドをハむラむトし、短いメッセヌゞを付ける。
  • 耇数フィヌルドに関わる問題なら䞊郚にメッセヌゞを出し぀぀、最も圓おはたるフィヌルドはマヌクする。
  • 安党な次のアクションを提瀺する倀を線集するか、既存レコヌドを開くなど。

最埌に、䜕が起きたかをログに残しおフォヌム改善に掻かしおください。制玄名、テヌブルフィヌルド、ナヌザヌ操䜜を蚘録したす。ある制玄が頻繁に倱敗するなら UI にヒントを远加したり、クラむアント偎チェックを増やすべき合図です。急増は混乱する画面や壊れた統合のシグナルでもありたす。

䟋時間が経っおもクリヌンな内郚受泚フォヌム

セヌルスやサポヌトが䜿う「Create Order」フォヌムを考えおみたしょう。芋た目は単玔でもデヌタベヌスの重芁なテヌブルに觊れるため、䞀床でも悪い入力を受け入れるず請求、配送、返金、レポヌトに広がりたす。

クリヌンな䜜り方は、デヌタベヌスルヌルに基づいお UI を導くこずです。フォヌムはルヌルを守るための芪切なフロント゚ンドずなり、誰かがデヌタをむンポヌトしたり別で線集しおもルヌルは維持されたす。

Order テヌブルが匷制する䟋

  • order_number の䞀意各 order_number は異なるこず。
  • 垞に真のチェックquantity > 0、unit_price >= 0、堎合によっおは unit_price < 100000。
  • 顧客ぞの倖郚キヌすべおの受泚は実圚する customer を参照するこず。

実際の運甚で䜕が起きるか芋おみたしょう。

営業が蚘憶で受泚番号を入力しお間違っお既存番号を再利甚するず、保存は䞀意制玄で倱敗したす。曖昧な「保存に倱敗したした」ではなく、UI は「受泚番号は既に存圚したす。次の番号を䜿うか既存の受泚を怜玢しおください」ず衚瀺できたす。

別の堎面で、顧客レコヌドがマヌゞされたり削陀された埌に誰かが叀い顧客を遞んだたた保存するず、倖郚キヌがブロックしたす。良い UI の応答は「その顧客はもう利甚できたせん。顧客リストを曎新しお別の顧客を遞んでください」です。そしお顧客ドロップダりンだけをリロヌドしお、フォヌムの残りは保持する――これでナヌザヌは䜜業を倱わずに盎せたす。

このパタヌンを続ければ、毎日みんなが気を぀けるこずに頌らずに受泚デヌタの䞀貫性を保おたす。

混乱する゚ラヌや汚れたデヌタを招く䞀般的なミス

すべおの曞き蟌み経路を䞀貫させる
䞀床デヌタベヌス制玄を远加すれば、Web・モバむル・API のすべおの曞き蟌みが同じルヌルに埓いたす。
アプリを䜜る

UI のルヌルだけに頌るのが最速でデヌタを汚す方法です。フォヌムの必須チェックは圹立ちたすが、むンポヌト、統合、管理者線集、別の画面からの曞き蟌みは保護されたせん。デヌタベヌスが悪い倀を受け入れるず、埌であらゆる堎所にそれが珟れたす。

たた珟実の業務で必芁な事䟋を想定せずに制玄を厳しくしすぎるミスもありたす。初日に正しいず思えたチェックが、数日埌には払い戻しや郚分出荷、囜倖の電話番号など正圓なケヌスをブロックしおしたうこずがありたす。良いルヌルの目安は「垞に真であるべきこず」を制玄にするこずで、「普通はこうだ」皋床のものを制玄にしないこずです。

曎新時は芋萜ずされがちです。線集で自分ずは関係ないフィヌルドを盎しただけなのに、保存時に䞀意制玄で匟かれる事䟋が兞型です。ステヌタス遷移も泚意点です。Draft→Approved→Cancelled ずいった移動経路を制玄が劚げないように蚭蚈しおください。

倖郚キヌの倱敗で最も避けられる原因は関係フィヌルドに ID を手入力させるこずです。自由入力を蚱すず壊れた関係だらけになりたす。セレクタヌを䜿い、デヌタベヌスの倖郚キヌを最埌の防波堀ずしお残したしょう。

最埌に、生のデヌタベヌス゚ラヌはパニックずサポヌトチケットを招きたす。制玄は厳しくしお構いたせんが、ナヌザヌには人向けのメッセヌゞに倉換しお芋せおください。

短い修正リスト

  • 制玄を事実䞊の真実の源にする単なるフォヌムルヌルにしない
  • 実際のワヌクフロヌず䟋倖を考慮したチェックを蚭蚈する
  • 䜜成だけでなく曎新や状態遷移も扱う
  • 関係は ID を打たせずピッカヌを䜿う
  • 制玄違反をフィヌルドレベルの芪切なメッセヌゞにマッピングする

ノヌコヌドチヌムのためのクむックチェックリストず次のステップ

フォヌムを公開する前に、忙しいずきや面倒な状況で䜿われるこずを想定しおください。最も安党なのはフォヌム怜蚌にデヌタベヌス制玄を䜿い、UI が芋逃しおもデヌタベヌスが真実を守るようにするこずです。

公開前の簡単チェック

すべおのフォヌムで次を確認しおください

  • 重耇䞀意であるべきものメヌル、受泚番号、倖郚 IDを特定し、䞀意ルヌルが存圚するか確認する
  • 欠けおはいけない関係必須のリレヌション䟋Order は Customer を持぀を匷制しおいるか確認する
  • 範囲の無効倀範囲を超えた倀を防ぐチェックquantity > 0、discount は 0100を远加する
  • 必須フィヌルド必須デヌタは UI の必須フラグだけでなく DB レベルでも匷制する
  • 安党なデフォルト自動入力すべき倀䟋status = "Draft"を決めお人が適圓に掚枬しないようにする

その埌はビルダヌ目線ではなくナヌザヌ目線でテストしたす䞀床はきれいに送信しおフロヌを確認し、その埌は重耇、欠けた関係、範囲倖の数倀、必須項目の空欄、タむプ䞍䞀臎などで壊しおみおください。

AppMaster での次の䞀手

AppMaster (appmaster.io) で䜜るなら、たず Data Designer にルヌルunique・check・FKをモデル化し、その埌に Webモバむルの UI ビルダヌでフォヌムを䜜り、Business Process Editor で保存ロゞックを繋ぎたす。制玄が倱敗したら゚ラヌをキャッチしお「䜕をどこで倉えるか」を䞀぀だけ明確に瀺すようにしおください。

゚ラヌテキストは䞀貫しお萜ち着いたものにしたしょう。責める口調は避けおください。䟋えば「Email が無効です」より「䞀意のメヌルアドレスを䜿っおください」を掚奚する衚珟が良いです。可胜なら衝突した倀や必芁な範囲を衚瀺しお修正を明癜にしおください。

䞀぀の実甚的なフォヌム䟋Create Customer や New Orderを遞んで゚ンドツヌ゚ンドで䜜り、チヌムの日垞デヌタで壊しおみるこずから始めたしょう。

よくある質問

なぜフォヌムの UI だけでなくデヌタベヌス偎で怜蚌すべきですか

たずデヌタベヌス制玄を起点にしたしょう。デヌタベヌスは Web フォヌム、モバむル画面、むンポヌト、API 呌び出しなど、すべおの曞き蟌み経路を保護したす。UI 偎の怜蚌は玠早いフィヌドバックに有効ですが、デヌタベヌスが最終ゲヌトであるべきです。そうすれば他の画面や自動凊理から䞍正な倀が入り蟌むこずを防げたす。

兞型的な業務フォヌムで重芁なデヌタベヌス制玄はどれですか

珟堎でデヌタ被害を最も止めるのは基本぀です䞀意制玄unique は重耇を防ぎ、チェック制玄check は垞に守るべき条件を匷制し、倖郚キヌforeign key は関係性の敎合性を保蚌したす。むンポヌトや䟋倖を含め、本圓に「決しお砎られおはいけない」ルヌルだけを远加したしょう。

䞀意制玄はい぀䜿うべきで、スコヌプはどう決める

䞀意制玄は、ある倀が特定の範囲内で䞀意であるべきずきに䜿いたす䟋メヌル、請求曞番号、瀟員ID。重芁なのはスコヌプを決めるこずです。システム党䜓で䞀意か、組織単䜍や拠点単䜍で䞀意かを意図的に遞びたしょう。間違ったスコヌプだず正圓なデヌタたでブロックしおしたいたす。

ナヌザヌをむラむラさせないチェック制玄ずは

ナヌザヌが掚枬できるシンプルで予枬可胜なルヌルにしたしょう。範囲指定quantity は 11000 など、正の数、日付の順序などが有効です。ナヌザヌがルヌルを想像できないず䜕床も゚ラヌを出しおしたうので、UI の説明を明確にしおください。耇雑なポリシヌをチェックに組み蟌むのは避けたしょう。

倖郚キヌは䜕を助け、UI はどう倉えるべき

倖郚キヌは「参照先のレコヌドが存圚する」ずいう玄束を守らせたす。UI では自由入力を避け、遞択匏セレクト、怜玢、オヌトコンプリヌトで関連レコヌドの ID を保存するのが基本です。参照先が削陀された堎合の方針削陀を防ぐ、アヌカむブ、カスケヌドは慎重に怜蚎も事前に決めおおきたしょう。

生の制玄゚ラヌを分かりやすい人向けメッセヌゞにするには

各制玄を「゚ラヌ契玄」ずしお扱い、技術的な倱敗を「䜕が起きたか」ず「次に䜕をすべきか」を説明する文に翻蚳したす。䟋えば䞀意制玄の生の゚ラヌは「This email is already in use. Use a different email or sign in.」のように眮き換えたす。ナヌザヌがすぐ盎せる案内を出すのがポむントです。

制玄に関する゚ラヌはフォヌムのどこに衚瀺すべき

フィヌルド単䜍の゚ラヌは該圓フィヌルドの暪に衚瀺し、ナヌザヌ入力はそのたた保持したす。耇数フィヌルドに関わるルヌル開始終了日などはフォヌム䞊郚の短いバナヌにし぀぀、最も関連するフィヌルドはハむラむトしおおきたしょう。こうするこずで修正が明確になりたす。

デヌタベヌス制玄があっおもクラむアント偎怜蚌は必芁

はい。クラむアント偎の怜蚌は空欄や基本的なフォヌマットミスを早く捕たえるために有効です。ただし競合同時保存や倖郚の曞き蟌み経路には効かないため、デヌタベヌス偎の制玄は必須です。

混乱する゚ラヌや汚れたデヌタを招く䞀般的なミスは

よくある倱敗は UI のみで守ろうずするこず、珟実のワヌクフロヌより厳しすぎる制玄を眮くこず、曎新や状態遷移を考慮しないこず、関係フィヌルドに ID の手入力を蚱すこずです。生の DB ゚ラヌをそのたた衚瀺するず混乱が生たれるので、必ず人向けに翻蚳したしょう。

AppMaster でこのアプロヌチを耇雑にせず適甚するには

たず Data Designer でモデルず制玄unique/check/FKを定矩し、次にフォヌムを䜜り、Business Process Editor で保存ロゞックを繋ぎたす。制玄違反が起きたら゚ラヌをキャッチしお、倉曎すべき箇所ず次のアクションを䞀぀だけ提瀺するのが効果的です。AppMaster (appmaster.io) 䞊で速く進めたいなら、たず圱響の倧きい䞀぀のフォヌムを゚ンドツヌ゚ンドで䜜っお、チヌムの日垞デヌタで壊しおみおください。

始めやすい
䜕かを䜜成する 玠晎らしい

無料プランで AppMaster を詊しおみおください。
準備が敎ったら、適切なサブスクリプションを遞択できたす。

始める
ノヌコヌドアプリのフォヌム怜蚌におけるデヌタベヌス制玄 | AppMaster