Mysql
 sql >> Base de données >  >> RDS >> Mysql

Enregistrement de la taille et du poids de l'utilisateur

Il y a plusieurs façons... l'une consiste à n'avoir que deux colonnes numériques, une pour la taille, une pour le poids, puis de faire les conversions (si nécessaire) au moment de l'affichage. Une autre consiste à créer une table "hauteur" et une table "poids", chacune avec une clé primaire liée à une autre table. Ensuite, vous pouvez stocker à la fois les valeurs anglaises et métriques dans ces tableaux (ainsi que toute autre méta-information souhaitée) :

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

Vous voyez l'idée...

Ensuite, votre table d'utilisateurs référencera la hauteur et poids tableaux - et peut-être de nombreux autres tableaux de dimensions - signe astrologique, état civil, etc.

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

Ensuite pour faire une recherche d'utilisateurs entre 4 et 5 pieds :

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

Plusieurs avantages à cette méthode :

  • Vous n'avez pas à dupliquer "l'effort" (comme s'il s'agissait d'un véritable travail) pour effectuer la conversion à l'écran :sélectionnez simplement le format que vous souhaitez afficher !
  • Cela facilite grandement le remplissage des listes déroulantes dans une sélection HTML :il suffit de SELECT english FROM height ORDER BY inches , par exemple.
  • Cela rend votre logique pour différentes dimensions, y compris celles qui ne sont pas numériques (comme les signes astrologiques) évidemment similaires, vous n'avez pas de code de casse spécial partout pour chaque type de données.
  • Il évolue très bien
  • Cela facilite l'ajout de nouvelles représentations de vos données (par exemple, pour ajouter la colonne "mains" au tableau des hauteurs)