2

私は単純な注文 HTML フォームに取り組んでいますが、これをデータベースに保存する最善の方法がわかりません。

ユーザーに尋ねるフォームがあるとしましょう:

「どのように注文すれば配達されますか?」

  • それを私に送信
  • デジタルで送る
  • 店頭でお受け取りください

ラジオボタンを使用して、どちらかを選択できます。私の質問は、これをデータベースに保存するにはどうすればよいですか? どうあるべきvalueですか?

<input type="radio" name="delivered" id="delivered" value="">

説明テキストを使用して、sendこれdigitallypickupとして保存することも、 — 、、varcharとして保存することもできます。int123

整数を使用すると、タイプミスの可能性がなくなり、さらに高速になる可能性があります (?)。欠点は次のとおりです。それぞれの値が何を意味するのかを覚えておかなければなりません。「2 ピックアップデジタルか?」

4

3 に答える 3

1

典型的な設計は、1 = 送信、2 = デジタルなどのマッピングを含む別のテーブル (DeliveryTypes など) を持つことです。次に、Order テーブルからこのテーブルの数値列への外部キーを取得します。そのため、Order テーブルに数字だけを格納できますが、自分でマッピングを覚える必要はありません。

例えば:

CREATE TABLE DeliveryTypes (
    DeliveryTypeID int not null PRIMARY KEY,
    Description varchar(20) not null
)

INSERT INTO DeliveryTypes (DeliveryTypeID,Description) VALUES
(1,'Send'),
(2,'Digital'),
(3,'Pickup')

CREATE TABLE Orders (
    /* Various columns for Orders */
    DeliveryTypeID int not null,
    constraint FK_Orders_DeliveryTypes FOREIGN KEY (DeliveryTypeID)
        references DeliveryTypes (DeliveryTypeID)
)

このルートをたどる場合は、One True Lookup Tableを作成する衝動を避けるようにしてください。

于 2013-08-16T10:38:35.340 に答える
0

次のことが考えられます。

IDに対応するより説明的なテキストを提供するEnumを作成できます。
ID (1、2、3) とテキスト (Physical、Pickup) を使用して、データベースにルックアップ テーブルを作成することもできます。

ID に対してデータベース クエリを実行する場合は、ルックアップ テーブル オプションを使用することをお勧めします。ID だけでなく、結合を実行して意味のあるオプションを戻すことができるからです。

于 2013-08-16T10:40:05.637 に答える