sql >> データベース >  >> RDS >> Mysql

ユーザーの身長と体重を節約する

    いくつかの方法があります...1つは、身長用と体重用の2つの数値列を用意し、表示時に(必要に応じて)変換を実行する方法です。もう1つは、「身長」テーブルと「体重」テーブルを作成することです。それぞれに、別のテーブルからリンクされている主キーがあります。次に、英語とメトリックの両方の値をこれらのテーブルに(必要な他のメタ情報とともに)保存できます:

    CREATE TABLE height (
        id          SERIAL PRIMARY KEY,
        english     VARCHAR,
        inches      INT,
        cm          INT,
        hands       INT  // As in, the height of a horse
    );
    
    INSERT INTO height VALUES
        (1,'4 feet',           48, 122, 12),
        (2,'4 feet, 1 inch',   49, 124, 12),
        (3,'4 feet, 2 inches', 50, 127, 12),
        (3,'4 feet, 3 inches', 51, 130, 12),
        ....
    

    アイデアが浮かびます...

    次に、ユーザーテーブルは高さを参照します および重量 テーブル-そしておそらく他の多くのディメンションテーブル-星座、結婚歴など。

    CREATE TABLE users (
        uid         SERIAL PRIMARY KEY,
        height      INT REFERENCES height(id),
        weight      INT references weight(id),
        sign        INT references sign(id),
        ...
    );
    

    次に、4〜5フィートのユーザーを検索します。

    SELECT *
    FROM users
    JOIN height ON users.height = height.id
    WHERE height.inches >= 48 AND height.inches <= 60;
    

    この方法のいくつかの利点:

    • 表示される変換を行うために、「努力」を複製する必要はありません(実際の作業であるかのように)。表示する形式を選択するだけです!
    • HTML選択でドロップダウンボックスにデータを入力するのが非常に簡単になります。SELECT english FROM height ORDER BY inches 、たとえば。
    • これにより、さまざまな次元のロジックが作成されます。これには、数字以外の次元(星座など)も明らかに類似しています。各データ型のあちこちに特別なケースコードはありません。
    • 拡張性に優れています
    • データの新しい表現を簡単に追加できます(たとえば、「hands」列を高さテーブルに追加できます)


    1. RMANはRMAN-06900で失敗しますRMAN-06901ORA-04031

    2. アップロードしたデータの名前が変更され、対応するデータが別の行に追加されるのはなぜですか?

    3. 日付範囲の比較

    4. すべてのテーブルから選択