いくつかの方法があります...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」列を高さテーブルに追加できます)