0

状況: HTMLフォーム送信用のSQLデータストレージ。

シナリオ1: 各フォームフィールドをテーブルフィールド(フォーム)として持つ1つのテーブル。

ここに画像の説明を入力してください

シナリオ2: 2つのテーブル-IDとタイムスタンプ(form_submission)を持つ最初のテーブル。id、fkからform_submission、field_title、field_value(form_field)の2番目のテーブル。HTMLフィールドに値がある場合にのみデータを挿入します。

ここに画像の説明を入力してください

より多くのメモリが必要なのはどれですか?

シナリオ1では...送信ごとに1つのレコードのみですが、各レコードには複数のnull値があります。

シナリオ2では...form_fieldテーブルからの5つ以上のレコードと、form_submissionテーブルから送信された時刻。

補足:年間1万件のフォーム送信しかありません。

4

1 に答える 1

1

大多数のユーザーが大多数のフィールドに入力すると仮定すると、そうです、より正規化されたフォームはより多くのスペース/メモリを必要とします(特にタイムスタンプのため-私が本当に望んでいるのはDATETIME/DATETIME2であり、それはひどい名前です)関係なく)。

個人的には、HTML 送信フォーム (「子」データを持たないフォーム) の場合、おそらくフォーム用に 1 つのテーブルを作成します。EAV テーブルは、クエリがはるかに難しい場合があります。必須でない列は、単純にデフォルトで null にすることができます。ただし、より複雑なシステム (顧客管理など) を構築している場合は、別の方法で分割する必要があります。

于 2012-11-30T21:12:27.507 に答える