sql >> Database teknologi >  >> RDS >> Mysql

Sparer brugerens højde og vægt

Der er flere måder... den ene er bare at have to numeriske kolonner, en for højde, en for vægt, og derefter foretage konverteringerne (hvis nødvendigt) på visningstidspunktet. En anden er at oprette en "højde"-tabel og en "vægt"-tabel, hver med en primær nøgle, der er forbundet fra en anden tabel. Så kan du gemme både engelske og metriske værdier i disse tabeller (sammen med enhver anden metainformation, du ønsker):

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),
    ....

Du forstår...

Derefter vil din brugertabel referere til højden og vægt tabeller - og muligvis mange andre dimensionstabeller - astrologiske tegn, ægteskabelig status osv.

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

For derefter at søge efter brugere mellem 4 og 5 fod:

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

Flere fordele ved denne metode:

  • Du behøver ikke at duplikere "indsatsen" (som om det var noget rigtigt arbejde) for at udføre konverteringen på displayet - vælg blot det format, du ønsker at vise!
  • Det gør det super nemt at udfylde rullemenuer i en HTML-valg - bare SELECT english FROM height ORDER BY inches , for eksempel.
  • Det gør din logik for forskellige dimensioner - inklusive ikke-numeriske (som astrologiske tegn) åbenlyst ens - du har ikke speciel kasuskode overalt for hver datatype.
  • Den skalerer rigtig godt
  • Det gør det nemt at tilføje nye repræsentationer af dine data (for eksempel at tilføje "hænder"-kolonnen til højdetabellen)


  1. Kan ikke oprette forbindelse til localhost-databasen fra node.js-serveren

  2. Find ud af hvilket operativsystem SQL Server kører på (T-SQL eksempel)

  3. EntityFramework 6.1.3 og MySQL DbFunctions.TruncateTime eksisterer ikke?

  4. WAMP/MySQL-fejl er ikke på korrekt sprog