そのため、vb.net で Web アプリを作成していますが、特定のデータベースの問題で概念的に少し困惑していることに気付きました。
基本的に、フォームには 2 つの異なる「テンプレート」があります。1 つは、ユーザーが多数のテキスト フィールドに入力して送信すると、すべてがデータベースに送信されます。2 番目のテンプレートは同じですが、いくつかの追加情報を追跡するため、データベースにさらに送信します。多数の重複する列を含むテーブルのペアや、多数の null を含む単一のテーブルを作成するのではなく、両方のテンプレートで共有されるすべての情報を追跡する 1 つのテーブルと、2 番目のテンプレートのすべての「余分なもの」を格納する別のテーブルを作成しました。もっている。
これにより発生した問題は、フォームを検索してデータベースから情報を引き出すために、2 つのデータをペアにする方法が必要なことです。集合フォームは、「共有」テーブルの主キーである代理自動インクリメント キーによって識別されます。「extra stuff」テーブルとの外部キー関係を設定しようとしましたが、そうするとアプリケーション側で問題が発生し、insert ステートメントで自動インクリメントを参照する外部キーを処理する方法がわかりません。
コード例を示すには:
Dim sInsertInto As String
sInsertInto = "INSERT INTO 5why (date, op_id, serial, why1, why2, why3, why4, why5, root_cause, other_notes, lessons, define, template) VALUES (" + _
"'" + f_date + "', " + _
" '" + f_usr + "', " + _
" '" + f_partnum + "', " + _
" '" + f_first + "', " + _
" '" + f_second + "', " + _
" '" + f_third + "', " + _
" '" + f_fourth + "', " + _
" '" + f_fifth + "', " + _
" '" + f_root + "', " + _
" '" + f_notes + "', " + _
" '" + f_lessons + "', " + _
" '" + f_define + "', " + _
" '" + f_temp + "'" + _
")"
Dim sInsertInto2 As String
sInsertInto2 = "INSERT INTO 5why_mbusi (countermeasure, containment, check_it, standardize_counter, point_cause, method_procedure, group_leader, engineer, shop_am, shop_manager) VALUES (" + _
"'" + f_counter + "', " + _
" '" + f_containment + "', " + _
" '" + f_check + "', " + _
" '" + f_standardCounter + "', " + _
" '" + f_pointOfCause + "', " + _
" '" + f_methodAndProc + "', " + _
" '" + f_groupLeader + "', " + _
" '" + f_engineer + "', " + _
" '" + f_shop_A_M + "', " + _
" '" + f_shopManager + ", '" + _
")"
最初の挿入ステートメントでは、すべての共有情報を「共有」テーブルに挿入しています。ここでは自動インクリメントについて心配する必要はありません。これはすべてデータベースによって処理されるためです。2 番目の挿入ステートメントは、すべての余分なものを「余分なもの」テーブルに送りますが、関係を確立する目的で null にすることはできないため、外部キーに入れるものを考え出さずにこれらすべてのものを挿入することはできません。 2 つのデータセットの間。外部キーを AI に設定するだけでも「1」からやり直すだけで、「共有」テーブルによって生成される AI と一致しないという印象を受けています。
それを処理する方法についてのアイデアはありますか?これは言葉にするのが少し難しいので、何か説明が必要な場合はお知らせください。解決できるよう最善を尽くします。