Er zijn verschillende manieren... de ene is om gewoon twee numerieke kolommen te hebben, één voor lengte, één voor gewicht, en dan de conversies (indien nodig) op de weergavetijd uit te voeren. Een andere is om een "hoogte"-tabel en een "gewicht"-tabel te maken, elk met een primaire sleutel die is gekoppeld aan een andere tabel. Vervolgens kunt u in deze tabellen zowel Engelse als metrische waarden opslaan (samen met alle andere meta-info die u maar wilt):
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),
....
Je snapt het idee...
Dan zal uw gebruikerstabel verwijzen naar de hoogte en gewicht tabellen - en mogelijk vele andere dimensietabellen - astrologisch teken, burgerlijke staat, enz.
CREATE TABLE users (
uid SERIAL PRIMARY KEY,
height INT REFERENCES height(id),
weight INT references weight(id),
sign INT references sign(id),
...
);
Om vervolgens te zoeken naar gebruikers tussen 4 en 5 voet:
SELECT *
FROM users
JOIN height ON users.height = height.id
WHERE height.inches >= 48 AND height.inches <= 60;
Verschillende voordelen van deze methode:
- U hoeft de "inspanning" niet te dupliceren (alsof het echt werk is) om de conversie op het scherm uit te voeren - selecteer gewoon het formaat dat u wilt weergeven!
- Het maakt het vullen van vervolgkeuzelijsten in een HTML-selectie supergemakkelijk -- gewoon
SELECT english FROM height ORDER BY inches
, bijvoorbeeld. - Het maakt je logica voor verschillende dimensies - inclusief niet-numerieke dimensies (zoals astrologische tekens) duidelijk vergelijkbaar - je hebt niet overal speciale hoofdlettercodes voor elk gegevenstype.
- Het schaalt heel goed
- Het maakt het gemakkelijk om nieuwe representaties van uw gegevens toe te voegen (bijvoorbeeld om de kolom 'handen' toe te voegen aan de hoogtetabel)