固定オプション用に個別のテーブルを作成する必要がありますか?

マットウェーバー

以下に示すように、DBデザインの複数の場所で、必要に応じて「オプション」のテーブルを作成しています。例、RFPステージ。「完全」、「入札」などを保持します。

削除された質問のある時点で私に勧められたので、これを行っています。これはこれを行うための適切な方法ですか?または、可能性が5つ程度しかない場合、これらのオプションをテキストとして保存する必要がありますか?

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

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

バジルバーク

追加フィールド

If your list of possible values such as rfp_stage involves more than just a name, then you definitely want a look-up table added to your design. For example, to track a color used for "Complete" and another color for “Bidding”, then you need a second field color along with name on the rfp_stage look-up table.

Single field

If the name of each RFP stage is the only value, no such additional items such as color discussed above, then you may want to use a string column without any lookup table.

You could enforce a list of possible values in your app(s).

As a backup to the app’s enforcement, if you are using a powerful database system such as Postgres, you can define a domain of possible values and require the field to always have a value in that domain. Trying to add or update a row with an unexpected value will fail, with an error thrown by the database engine.

Handling changes to value

Then again, if there is any possibility of the names of any stage changing, such as “Bidding” changing to “Out for bid” (same meaning, different wording), then a look-up table is useful as a single place to update the wording. No need to perform a mass update of values across many rows.

Internationalization

同様に、各RFPステージの表示をローカライズする必要がある場合、たとえば「完了」と「入札」をフランス語または日本語で表示する場合は、ルックアップテーブルを追加する必要があります。ローカリゼーション文字列を保持するためのさらに別のルックアップテーブルがある可能性がありますが、それはこの回答の範囲外です。詳細については、StackOverflowおよびおそらくDBAStackExchangeを検索してください。

列挙型

最後に、データベース内の列挙型を、可能な各値を表す代用値として使用する人もいます。たとえば、「完了」の場合は「1」、「入札」の場合は「2」などです。行からのデータの読み取りが厄介で不便になるため、私は通常、このアプローチを自分で避けています。

環境

多くの設計上の決定と同様に、明確な黄金律はありません。コンテキストが重要です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

シングルユースサイトのオプションを別のテーブルに保存する必要がありますか?--Laravel 5

分類Dev

Ubuntuのインストール中に別のEFIパーティションを作成する必要がありますか(デュアルブート)

分類Dev

同様の構造のデータ用に別のテーブルを作成する必要があります

分類Dev

ファイルを別のパーティションに保存する必要がありますか?

分類Dev

JSONから解析されるオブジェクトモデルのプロパティにオプションを使用する必要がありますか?

分類Dev

シーン/画面ごとに個別のViewController.Swiftを作成する必要がありますか?

分類Dev

IntelliJでVMのメモリを設定する方法 Tomcatのメモリオプションを個別に設定する必要がありますか?

分類Dev

選択ドロップダウン付きのポップアップ用に個別のページオブジェクトを作成する必要がありますか?

分類Dev

データベース内のテーブルごとに個別のモデルを作成する必要がありますか?

分類Dev

データベース内のテーブルごとに個別のモデルを作成する必要がありますか?

分類Dev

このために別のモデル(コレクション)を作成する必要がありますか?

分類Dev

作成するコンポーネントごとに個別のActionListenerを作成する必要がありますか?

分類Dev

オブザーバブルのサブスクリプションを常に破棄する必要がありますか?

分類Dev

Windows 8.1でのデュアルブート、HDDとSSDにどのパーティションを作成する必要がありますか?

分類Dev

デュアルブートには、どのサイズのパーティションをいくつ作成する必要がありますか?

分類Dev

MySQL:2つのテーブル、1つのプロダクションと1つのアーカイブがあります。一部のレコードは同一であるため、両方から個別のレコードを選択する必要があります

分類Dev

別のオプションの引数に渡す前に、オプションの引数を確認する必要がありますか?

分類Dev

/ varをデータベースサーバー用の別のパーティションに配置する必要がありますか?

分類Dev

物理パーティションをイメージに複製します-どのddオプションを使用する必要がありますか?

分類Dev

Redux-アクションタイプを個別に保持する必要がありますか?

分類Dev

Windows用の非常にシンプルなネイティブアプリケーションを作成する方法(.NETを必要とせず、インストールプロセスを実行する必要はありません)

分類Dev

フィールド用に別のテーブルを作成する必要があるのはいつですか?

分類Dev

Powershellコンソールのメニューオプション-改行を追加する必要がありますか?

分類Dev

Powershellコンソールのメニューオプション-改行を追加する必要がありますか?

分類Dev

PowerPointでオブジェクトをある場所から別の場所にアニメーション化する必要があります。

分類Dev

Railsアプリケーション用にuuidを生成する必要があります。私が持っているオプション(宝石)は何ですか?

分類Dev

uglifyjsでマングルオプションをどのように使用する必要がありますか?

分類Dev

jarごとに個別のOSGiバンドルを作成する必要がありますか

分類Dev

WinRTアプリケーションのサムネイルを作成する必要がありますか

Related 関連記事

  1. 1

    シングルユースサイトのオプションを別のテーブルに保存する必要がありますか?--Laravel 5

  2. 2

    Ubuntuのインストール中に別のEFIパーティションを作成する必要がありますか(デュアルブート)

  3. 3

    同様の構造のデータ用に別のテーブルを作成する必要があります

  4. 4

    ファイルを別のパーティションに保存する必要がありますか?

  5. 5

    JSONから解析されるオブジェクトモデルのプロパティにオプションを使用する必要がありますか?

  6. 6

    シーン/画面ごとに個別のViewController.Swiftを作成する必要がありますか?

  7. 7

    IntelliJでVMのメモリを設定する方法 Tomcatのメモリオプションを個別に設定する必要がありますか?

  8. 8

    選択ドロップダウン付きのポップアップ用に個別のページオブジェクトを作成する必要がありますか?

  9. 9

    データベース内のテーブルごとに個別のモデルを作成する必要がありますか?

  10. 10

    データベース内のテーブルごとに個別のモデルを作成する必要がありますか?

  11. 11

    このために別のモデル(コレクション)を作成する必要がありますか?

  12. 12

    作成するコンポーネントごとに個別のActionListenerを作成する必要がありますか?

  13. 13

    オブザーバブルのサブスクリプションを常に破棄する必要がありますか?

  14. 14

    Windows 8.1でのデュアルブート、HDDとSSDにどのパーティションを作成する必要がありますか?

  15. 15

    デュアルブートには、どのサイズのパーティションをいくつ作成する必要がありますか?

  16. 16

    MySQL:2つのテーブル、1つのプロダクションと1つのアーカイブがあります。一部のレコードは同一であるため、両方から個別のレコードを選択する必要があります

  17. 17

    別のオプションの引数に渡す前に、オプションの引数を確認する必要がありますか?

  18. 18

    / varをデータベースサーバー用の別のパーティションに配置する必要がありますか?

  19. 19

    物理パーティションをイメージに複製します-どのddオプションを使用する必要がありますか?

  20. 20

    Redux-アクションタイプを個別に保持する必要がありますか?

  21. 21

    Windows用の非常にシンプルなネイティブアプリケーションを作成する方法(.NETを必要とせず、インストールプロセスを実行する必要はありません)

  22. 22

    フィールド用に別のテーブルを作成する必要があるのはいつですか?

  23. 23

    Powershellコンソールのメニューオプション-改行を追加する必要がありますか?

  24. 24

    Powershellコンソールのメニューオプション-改行を追加する必要がありますか?

  25. 25

    PowerPointでオブジェクトをある場所から別の場所にアニメーション化する必要があります。

  26. 26

    Railsアプリケーション用にuuidを生成する必要があります。私が持っているオプション(宝石)は何ですか?

  27. 27

    uglifyjsでマングルオプションをどのように使用する必要がありますか?

  28. 28

    jarごとに個別のOSGiバンドルを作成する必要がありますか

  29. 29

    WinRTアプリケーションのサムネイルを作成する必要がありますか

ホットタグ

アーカイブ