Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Größe und Gewicht des Benutzers speichern

Es gibt mehrere Möglichkeiten ... eine besteht darin, nur zwei numerische Spalten zu haben, eine für die Größe, eine für das Gewicht, und dann die Konvertierungen (falls erforderlich) zur Anzeigezeit durchzuführen. Eine andere besteht darin, eine "Größen"-Tabelle und eine "Gewichts"-Tabelle zu erstellen, jede mit einem Primärschlüssel, der mit einer anderen Tabelle verknüpft ist. Dann können Sie sowohl englische als auch metrische Werte in diesen Tabellen speichern (zusammen mit allen anderen gewünschten Metainformationen):

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 verstehst schon...

Dann wird Ihre Benutzertabelle auf die Höhe verweisen und Gewicht Tabellen – und möglicherweise viele andere Dimensionstabellen – Sternzeichen, Familienstand usw.

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

Suchen Sie dann nach Benutzern zwischen 1,20 und 1,50 m:

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

Mehrere Vorteile dieser Methode:

  • Sie müssen sich nicht die "Mühe" (als ob es eine echte Arbeit wäre) verdoppeln, um die Konvertierung auf dem Display durchzuführen - wählen Sie einfach das Format aus, das Sie anzeigen möchten!
  • Es macht das Ausfüllen von Dropdown-Feldern in einer HTML-Auswahl superleicht – einfach SELECT english FROM height ORDER BY inches , zum Beispiel.
  • Es macht Ihre Logik für verschiedene Dimensionen – einschließlich nicht-numerischer Dimensionen (wie Sternzeichen) – offensichtlich ähnlich – Sie haben nicht überall Sonderfallcodes für jeden Datentyp.
  • Skaliert wirklich gut
  • Es macht es einfach, neue Darstellungen Ihrer Daten hinzuzufügen (z. B. um die Spalte „Hände“ zur Größentabelle hinzuzufügen)