2

ロマンス、フィクション、またはミステリーの本を持っているとしましょう。このデータを保存するには、2 つの現実的なオプションがあります。1 つは、「ロマンス」、「フィクション」、または「ミステリー」の値を持つ文字列である、私の本テーブルに型列を設定することです。もう 1 つは book_types テーブルを作成し、そこにタイプを格納することです。次に、私の本には book_types テーブルを参照する type_id 外部キーがあります。

私の質問は、どれが最適かをどのように選択するかです。ユーザーの状態に関する情報を含むRestful認証Railsプラグインで使用される文字列メソッドを見てきました-「非アクティブ」、「アクティブ」、「保留中」...

この情報を常にクエリすることを考えると、ルックアップ テーブル メソッドを使用するとパフォーマンスに影響はありますか?

ありがとう!

4

4 に答える 4

3

外部キー アプローチのパフォーマンスが向上します。文字列比較は処理を遅くします。数値を比較する方がはるかに高速です。

クエリをさらに高速化したい場合は、外部キーの参照に使用している列にインデックスを追加します。主キーとは異なり、外部キーのインデックスは自動的に作成されません。

于 2009-06-17T06:31:05.213 に答える
1

何かに対して保存する情報がこれ以上ない場合、文字列は通常問題ありません (ただし、これは非一時的な値であるため、正規形ではありません)。

ただし、これはテーブルの良い候補のように思われるので、カテゴリをさらに使用して参照テーブルにする必要があるかもしれません.imo.

于 2009-06-17T06:21:03.903 に答える
0

fkを使用します。重複する情報が少ない。

編集:より良い解決策:MySqlコード:

CREATE TABLE books
(
    id int AUTO_INCREMENT          not null,
    book_type enum('romance', 'fiction', 'mystery')     not null,
    ....
);
于 2009-06-17T06:22:30.220 に答える