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

Salvataggio dell'altezza e del peso dell'utente

Ci sono diversi modi... uno è avere solo due colonne numeriche, una per l'altezza, una per il peso, quindi eseguire le conversioni (se necessario) al momento della visualizzazione. Un altro è creare una tabella "altezza" e una tabella "peso", ciascuna con una chiave primaria collegata da un'altra tabella. Quindi puoi memorizzare sia i valori inglesi che quelli metrici in queste tabelle (insieme a qualsiasi altra meta informazione che desideri):

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

Ti sei fatto un'idea...

Quindi la tabella degli utenti farà riferimento all'altezza e peso tabelle - e forse molte altre tabelle dimensionali - segno zodiacale, stato civile, ecc.

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

Quindi per fare una ricerca di utenti tra 4 e 5 piedi:

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

Diversi vantaggi di questo metodo:

  • Non è necessario duplicare lo "sforzo" (come se fosse un lavoro reale) per eseguire la conversione sul display:basta selezionare il formato che si desidera visualizzare!
  • Semplifica il riempimento delle caselle a discesa in una selezione HTML:basta SELECT english FROM height ORDER BY inches , per esempio.
  • Rende la tua logica per varie dimensioni, comprese quelle non numeriche (come i segni astrologici) ovviamente simili, non hai codici di casi speciali dappertutto per ogni tipo di dati.
  • Si adatta molto bene
  • Semplifica l'aggiunta di nuove rappresentazioni dei tuoi dati (ad esempio, per aggiungere la colonna "mani" alla tabella delle altezze)