Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapisywanie wzrostu i wagi użytkownika

Jest kilka sposobów… jeden to po prostu dwie kolumny liczbowe, jedna dla wzrostu, jedna dla wagi, a następnie wykonanie konwersji (jeśli to konieczne) w czasie wyświetlania. Innym jest utworzenie tabeli „wzrost” i „waga”, każda z kluczem podstawowym, który jest powiązany z inną tabelą. Następnie możesz przechowywać w tych tabelach zarówno angielskie, jak i metryczne wartości (wraz z dowolnymi innymi metainformacjami, które chcesz):

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

Masz pomysł...

Wtedy tabela użytkowników będzie odnosić się do wysokości i waga tabele — i prawdopodobnie wiele innych tabel wymiarów — znak zodiaku, stan cywilny itp.

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

Następnie, aby wyszukać użytkowników o długości od 4 do 5 stóp:

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

Kilka zalet tej metody:

  • Nie musisz duplikować „wysiłku” (jakby to była prawdziwa praca), aby wykonać konwersję na wyświetlaczu — po prostu wybierz format, który chcesz wyświetlić!
  • Dzięki temu wypełnianie pól rozwijanych w kodzie HTML jest bardzo łatwe — wystarczy SELECT english FROM height ORDER BY inches na przykład.
  • To sprawia, że ​​logika dla różnych wymiarów — w tym nienumerycznych (takich jak znaki astrologiczne) — jest oczywiście podobna — nie masz w każdym miejscu specjalnego kodu dla każdego typu danych.
  • Skaluje się naprawdę dobrze
  • Ułatwia dodawanie nowych reprezentacji danych (na przykład dodanie kolumny „ręce” do tabeli wzrostu)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest trwałość referencji i złączeń w MySQL?

  2. MySQL DATEDIFF() vs TIMEDIFF():Jaka jest różnica?

  3. Zaloguj się do pliku przez PHP lub zaloguj się do bazy danych MySQL - co jest szybsze?

  4. mysqli_connect():(HY000/2002):Przekroczono limit czasu połączenia na hostingu

  5. Sortuj według Soundex (lub podobnego) `Bliskość`